JAVA虚拟机系列: (一) . JDK1.6/ 1.7/ 1.8运行时内存分配简要图解

 

注意:

    1. 本文讨论均为JDK官方版本, 默认采用的HotSpot虚拟机;

    2. 图片为本人绘制, 转载请标明出处;

    3.本博均为个人理解, 如有分歧, 欢迎指正和讨论

 

从JDK1.6到1.8, 运行时内存分配简图分别如下:

 

 

在JDK1.7中的HotSpot中,已经把原本放在方法区的字符串常量池移出。

  从JDK7开始永久代的移除工作,贮存在永久代的一部分数据已经转移到了Java Heap或者是Native Heap。但永久代仍然存在于JDK7,并没有完全的移除:符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;类的静态变量(class statics)转移到了java heap。

随着JDK8的到来:

JVM不再有PermGen。但类的元数据信息(metadata)还在,只不过不再是存储在连续的堆空间上,而是移动到叫做“Metaspace”的本地内存(Native memory)中。 

 

 

参考:

1. <深入理解JAVA虚拟机-周志明-第二版>

2. https://www.cnblogs.com/dennyzhangdd/p/6770188.html#_label3

3. https://blog.csdn.net/tophawk/article/details/78704074#commentsedit
 

————————————————

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

原文链接:https://blog.csdn.net/weixin_42711325/article/details/86533192

posted @ 2024-02-29 10:16  不会游泳的鱼~~  阅读(29)  评论(0编辑  收藏  举报