JVM梳理
2023-03-14 14:24:34 1 举报
JVM梳理
作者其他创作
大纲/内容
栈帧2
S0
解析
numberic constants
栈是运行时的单位,而堆是存储的单位。栈解决程序的运行问题,即程序如何执行,或如何处理数据。堆解决的是数据存储的问题,即数据怎么放,放哪里
本地方法接口Native Interface
操作数栈
PC Register for Thread 2
Young
name and type
堆heap
Java栈
类装载子系统Class loader
验证
PC Register for Thread n
Java栈java stack
Class Files
局部变量表
堆(Heap)
...
准备
程序计数器Program Counter Register
运行时数据区 (Running Data Area)
动态链接
加载阶段Loading
是内存最小的一个区域,也是运行速度最快的存储区域无OOM 无GC
类的加载过程
1.TLAB2.逃逸分析3.Minor GC,MajorGC、Full GC4.堆空间分代思想
-Xms 用于表示堆区的起始内存,等价于-XX:InitialHeapSize-Xmx 则用于表示堆区的最大内存,等价于-XX:MaxHeapSize通常会将-Xms和-Xmx两个参数配置相同的值,其目的是为了能够在java垃圾回收机制清理完堆区后不需要重新分隔计算堆区的大小,从而提高性能。
执行引擎Execution Engine
卸载
小结
栈帧4
PC寄存器用来存储指向下一条指令的地址,即将要执行的指令代码。由执行引擎读取下一条指令。
S1
线程共有
Stack
初始化阶段Initialization
Eden(8/10)
方法信息
方法返回地址
栈帧1
老年代(2/3)堆空间
类型信息
filed references
PC计数器
链接阶段 Linking
方法区Method Area
使用
method references
堆,栈,方法区的关系
一些附加信息
域信息
string constants
invoke dynamic
线程私有
1.双亲委派机制 2.如何打破双亲委派机制
方法区
栈帧3
运行时常量池
(1/10)
PC Register for Thread 1
Java虚拟机栈,早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用,是线程私有的。
HotSpot JVM Architecture
Thread
堆 (jdk8)
Old
class references
本地方法栈Native Method stack
MetaSpace 元空间
新生代(1/3)堆空间
0 条评论
下一页