Java工程师进阶之路之JVM系列(六) —— 对象内存布局
孙玉超
2020-08-10 18:42:03
0 评论
1429 浏览
0 收藏
0 赞
以前一直弄不清楚对象内部到底有什么,只知道有成员变量,模糊不清、似懂非懂。现在深度剖析一下对象内部内存布局,GO,GO,GO!
想来想去不知道该从何说起,那么就直接演示 demo 吧,以下面代码为例
public class Test { private int number = 1000; private User user = new User(); public static void main(String[] args) { Test test = new Test(); } } class User{ private int id; private String username; }
这段代码很短很简单,运行时 JVM 内存分布如下图(这张图画的差点手抽筋……)
其中虚线箭头表示内部存储的数据,实线箭头表示指针。上图完整的说明了这段代码执行时,JVM 内部内存布局图。值得注意的是对象中的静态变量存储在堆中该类所属的唯一 Class 实例中,并不在方法区。
待完善