文章目录
静态变量、实例变量、局部变量在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中的类型信息存放在方法区内