永久代和元空间

对HotsPot虚拟机而言

方法区和永久代:方法区是jvm内存模型的逻辑概念,永久代是方法区的物理实现。

永久代:永久代是方法区的实现,1.8前永久代存放在堆空间中,

元空间:1.8之后永久代移除,元空间的功能和永久代类似,但是元空间使用的是本地内存,直接受到本机的物理内存限制。

(静态变量、字符串常量逻辑上属于方法区,但在物理实现上,在1.6及前两者是存放在永久代中,1.7以后就存放在堆空间中,即便1.8后元空间完全替代了永久代,两者仍然存放在堆空间中,但是逻辑上静态变量、字符串常量两者仍然属于方法区。)

jdk版本两者存放物理位置两者的逻辑位置
1.6及以前永久代方法区
1.7堆空间方法区
1.8堆空间方法区

移除永久代原因:表面上看是为了避免OOM异常,更深层的原因还是要合并HotSpot和JRockit的代码,


版权声明:本文为weixin_44794112原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。