JVM内存模型
2021-11-19 14:53:41 0 举报
JVM内存模型的简单描述
作者其他创作
大纲/内容
年轻代(Young Generation)
java虚拟机栈 -Xss=1M VM Stack
Eden-Xmn
Old
》线程独享
To
-XX:MetaspaceSize
方法元信息
2/3
Hotspot JDK1.8之前内存模型
类元信息
方法区(永久代)Method Area(prem)
Heap
Survivor Space
1
附加信息
运行时数据区(Runtime Data Area)
栈帧Stack Frame
‐Xms ‐Xml
方法返回地址
程序计数器Program Counter Register
永久代(perm)
在Java 6中,方法区中包含的数据,除了JIT编译生成的代码存放在native memory的CodeCache区域,其他都存放在永久代;在Java 7中,Symbol的存储从PermGen移动到了native memory,并且把静态变量从instanceKlass末尾(位于PermGen内)移动到了java.lang.Class对象的末尾(位于普通Java heap内);在Java 8中,永久代被彻底移除,取而代之的是另一块与堆不相连的本地内存——元空间.可参考:Chapter 2. The Structure of the Java Virtual MachineJEP 122: Remove the Permanent Generation
方法区(method area)只是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译后的代码等数据,具体放在哪里,不同的实现可以放在不同的地方。而永久代是Hotspot虚拟机特有的概念,是方法区的一种实现。在Hotspot中,方法区只是在逻辑上独立,物理上还是包含在堆区中.
-XX:MaxMetaspaceSize
本地方法栈 Native Method Stack
运行时常量池
方法区(元空间) Method Area(MetaSpace)
Meta Data
老年代(Old Generation)
Method Area
1/3
8/10
From
以下文字引自(侵删):作者:毛海山链接:https://www.zhihu.com/question/49044988/answer/113961406
1/10
3
常量池
局部变量表
堆空间Heap
Perm
操作数栈
8
Hotspot JDK1.8及之后内存模型
java虚拟机栈-Xss=1M VM Stack
》共享数据
当前线程
‑XX:MaxPermSize=256M
指向运行时常量池引用(动态链接)
0 条评论
下一页