JVM图解
2018-05-08 10:28:04 11 举报
JVM图解
作者其他创作
大纲/内容
虚拟机栈
栈帧
CMS
栈帧3
虚拟机栈(线程1)
栈帧1
常量
虚拟机栈(线程2)
操作数栈
方法出口
Method Area
永生代
线程A
Heap
线程私有Native方法执行数据存储的地方本地方法栈包括局部变量表操作数栈动态链接(其他方法的引用链接)
本地方法栈
程序计数器
线程私有在虚拟机中执行的java方法使用的区域本地方法栈包括局部变量表(局部变量表存的对账的引用地址)操作数栈动态链接(其他方法的引用链接)给个方法都是创建一个栈帧,栈帧中存储上面各种数据
Eden(8)
动态链接
静态变量
类信息
线程B
老年代
复制回收算法
入栈方式
Java虚拟机栈
S2(1)
局变量表
MateSpace
JVM运行时数据区
S1(1)
GC堆
多线程执行图
CG
1.8之前
线程私有直接占用系统内存只要记录线程的执行指令顺序,执行地址等Native方法的执行指令不会记录,因为Native方法是C、C++编写对线程的情况下可以让执行完的线程回到正确的执行位置
栈帧2
方法区
线程共享主要存放的对象的实例是垃圾回收的主要区域垃圾回收的细节等会说明Java Hep是可伸缩的通过-Xmx -Xms来设置最大和最小值
变更部分
1.8之后
新生代
编译后的代码
线程共享
对线程执行的时候会创建的栈帧向虚拟机栈中压入,因为虚拟机中是栈的形式,先进后出 ,创建的栈帧会一直向栈中压入,当push的栈帧深度达到设置的最大深度的时候就会排除StackOverflowError的错误,但是注意次数不是达到虚拟机栈的最大内存,当push的栈帧没有达到最大深度但是达到了最大内存(每个栈帧占用的内存比较大),则会抛出OutOfMemoryError错误
Java Heap
0 条评论
下一页