在很长的一段时间里,我一直在思考一个问题,元空间到底在哪里?
现在的互联网,关于JVM,关于内存布局,关于优化JVM等知识,多如牛毛.
然而,元空间到底在哪里?堆外内存到底在哪里?...虽然有相关的文章谈及它们,但并不是我想要的答案,为了把它们掰扯清楚,让自己有一个较清晰的认知,不人云亦云, 自己对它们做了一点分析和研究,分享给大家,与大家一起交流....综上分析, 堆内存, 元空间, 直接内存 , 分别'分布在'Java进程的不同区域. 虽然元空间和直接内存都属于本地内存, 但它们都归属于Java进程里的空间....读者要对进程虚拟地址空间有一定的了解
以上测试实验是在阿里云ECS上进行的, 由于某些原因, 无法继续实验, 接下来, 我在虚拟机VirtualBox上继续接下来的实验....继续实验
再次重新运行程序,得到如下内容
根据之前的分析, 将上图中打印的地址归属到不同的区域上,可以得出如下概图
由于普通对象的对象头中包含指向元数据的指针, 因此可以看到图中, 有一个普通对象指向元数据的箭头