Java虚拟机 堆栈
时间: 2024-01-07 09:20:51 浏览: 42
Java虚拟机中的堆和栈是两个重要的概念,它们分别用于存储不同类型的数据。
堆是用于存储对象的一块内存区域,所有的对象实例都在堆中分配。堆内存的大小可以通过JVM启动参数来设置,如果堆内存不足,就会抛出OutOfMemoryError异常。堆内存的垃圾回收是自动进行的,当对象不再被引用时,垃圾回收器会自动回收该对象所占用的内存空间。
栈是用于存储方法调用和局部变量的一块内存区域,每个线程都有自己的栈。当一个方法被调用时,就会在栈中创建一个栈帧,用于存储该方法的参数、局部变量和返回值等信息。当方法执行完毕后,该栈帧就会被弹出栈。栈的大小可以通过JVM启动参数来设置,如果栈空间不足,就会抛出StackOverflowError异常。
下面是一个简单的Java程序,演示了堆和栈的使用:
```java
public class HeapStackDemo {
public static void main(String[] args) {
// 在堆中分配一个字符串对象
String str = new String("Hello World");
// 在栈中分配一个整型变量
int num = 100;
// 调用一个方法,传递堆中的字符串和栈中的整型变量
print(str, num);
}
public static void print(String str, int num) {
// 在栈中分配一个布尔型变量
boolean flag = true;
System.out.println(str + ", " + num + ", " + flag);
}
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)