文章目录
静态变量、实例变量、局部变量在JVM中存放的位置
总结一下这三种变量在JVM中存放的位置,首先看一段代码:
public class StaticObjTest {
static class Test{
static ObjectHolder staticObj = new ObjectHolder();
ObjectHolder instanceObj = new ObjectHolder();
void foo(){
ObjectHolder localObj = new ObjectHolder();
System.out.println("done");
}
}
private static class ObjectHolder{
}
}
在这段代码中,很明显创建了三种变量:staticObj、instanceObj、localObj
其中instanceObj变量是一个实例变量,他是随着Test的对象实例存放在Java堆内存中
localObj是在方法区内创建的局部变量,所以他应该存放在foo()方法中的栈帧中的局部变量表中
staticObj是一个static静态变量,他应该随着Test中的类型信息存放在方法区内
本文详细阐述了静态变量、实例变量及局部变量在Java虚拟机(JVM)中的存储位置。通过具体代码示例,解释了这些变量如何分别存储于方法区、堆内存和栈帧中的局部变量表。
1万+

被折叠的 条评论
为什么被折叠?



