栈指向堆
如果在栈帧中有一个变量,类型为引用类型,比如:
这时候就是典型的栈中元素obj指向堆中的Object对象,result的指向和obj的指向为同一个对象。
使用命令
javac -g:vars JvmCodeDemo.java
进行编译,然后再使用
javap -v JvmCodeDemo.class >log.txt
然后打开log.txt文件
如果还有疑惑,可以再结合上面的字节码图和关系图来看,这样理解就更轻松些。
方法区指向堆
方法区中会存放静态变量,常量等数据。
如果是下面这种情况,就是典型的方法区中元素指向堆中的对象。
堆指向方法区
方法区中会包含类的信息,对象保存在堆中,创建一个对象的前提是有对应的类信息,这个类信息就在方法区中。
Java对象内存布局
一个Java对象在内存中包括3个部分:对象头、实例数据和对齐填充