11

JVM内存结构的历史 (从Jdk1.6、1.7、8)

 2 years ago
source link: https://wangxin.io/2019/10/31/jvm/jvm_memory_change_history/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
JVM内存结构的历史 (从Jdk1.6、1.7、8)

JVM内存结构的历史 (从Jdk1.6、1.7、8)

  • 2019-10-31

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

Mechanism

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

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

随着JDK8的到来:

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

Mechanism

一、java7到java8的第一部分变化:元空间

下面来一张图看一下java7到8的内存模型吧(这个是在网上找的图,如有侵权问题请联系我删除。)

img

二、java7到java8的第二部分变化:运行时常量池

运行时常量池(Runtime Constant Pool)的所处区域一直在不断的变化,在java6时它是方法区的一部分;1.7又把他放到了堆内存中;1.8之后出现了元空间,它又回到了方法区。

Metaspace 结构是怎么样的?

Mechanism

参考:https://blog.csdn.net/weixin_42711325/article/details/86533192

Gitalking ...


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK