JVM
2021-06-29 16:23:45 2 举报
JVM结构示意图
作者其他创作
大纲/内容
年轻代区(1/3)
Suvivor区
元空间分区-类结构
class文件
. . .
数据指向
类变量
栈帧-方法2
JVM虚拟机
执行指向
变量名1= 数值
操作数栈
线程栈
类方法
分区
结构示意
程序计数器
Eden区(8/10)
栈帧-方法1
类装载子系统
方法区(元空间内存)
程序计数器分区
局部变量表
本地方法栈
字节码执行引擎
S1区(1/10)
java文件
本地方法栈分区
线程栈分区
【变量生成】变量从Eden区生成,根据使用不同的垃圾处理器,按特定条件触发minor GCminor GC操作分三种情况:①进行垃圾回收,再将Eden区和S1区存活变量转移进S0区②进行垃圾回收,再将Eden区和S0区存活变量转移进S1区③进行垃圾回收,如果转移的存活变量总大小大于Suvivor区的50%容量,则直接转移进老年代区非③情况时,①②模式交替执行,每次转移存活变量年龄加1,当年龄大于15,则转移进老年代区如果转移的变量大小大于老年代区剩余大小,则触发一次full GC进行老年代区的垃圾回收再转移如果老年代区溢出则报错内存溢出
【变量回收-可达性分析算法】以每一个线程栈的本地变量、静态变量、本地方法栈的变量作为一个GC root其它的类型变量都是对不同的GC root产生的引用任意变量的引用根节点不是GC root,则被回收任意GC root销毁时(所在线程结束),则被回收【STW机制(Stop-The-World)】在执行垃圾收集线程时,Java应用程序的其他所有线程(用户线程)都被挂起
老年代区(2/3)
S0区(1/10)
javac命令
动态链接
垃圾收集线程新生代: minor GC线程老年代: full GC线程
方法出口
堆内存
执行说明
对象名=对象堆内存地址
箭 头 说 明
0 条评论
下一页