在很长的一段时间里,我一直在思考一个问题,元空间到底在哪里?
现在的互联网,关于JVM,关于内存布局,关于优化JVM等知识,多如牛毛.
然而,元空间到底在哪里?堆外内存到底在哪里?...继续分析
在之前的打印中,打印出了对象头信息, 对象头中包含一个指针,这个指针指向元空间中的对象元信息....综上分析, 堆内存, 元空间, 直接内存 , 分别'分布在'Java进程的不同区域. 虽然元空间和直接内存都属于本地内存, 但它们都归属于Java进程里的空间....继续实验
再次重新运行程序,得到如下内容
根据之前的分析, 将上图中打印的地址归属到不同的区域上,可以得出如下概图
由于普通对象的对象头中包含指向元数据的指针, 因此可以看到图中, 有一个普通对象指向元数据的箭头...我们读取了元数据的信息, 信息中有个指针指向了Class对象.
关于如何读取一个对象的内存信息, 后期讲解.
在Klass源码中定义了一个指向Class对象的属性.