JVM
2021-03-26 19:20:37 0 举报
JVM
作者其他创作
大纲/内容
老年代满了 开启一个线程full gc 如果full gc无法清理会导致OOM
method()栈帧
栈
gc的时候会STW(stop the world),如果没有STW那么用户线程继续执行,线程中的栈的变量会被释放(某个指向堆的指针没了),gc线程扫描GC root的链就会被断掉。导致垃圾清除不完全。
静态对象
开启一个线程minor gc
运行时数据区(内存模型)
程序计数器
javac Math.java
方法区
字节码执行引擎
Eden(8/10)
native修饰的方法会分配这部分空间
垃圾回收算法:1.标记清除算法,把可以回收的对象进行标记。(内存空间不连续,产生内存碎片)2.复制算法,在标记的前提下整理空间,使空闲的空间连续。(内存利用率低)3.标记整理算法
javac Math.class
B
引用对象
方法区(元空间)
指针
修改
堆
动态链接
类装载子系统
操作数栈
老年代
常量、静态变量、类信息
每个线程都有一个独享的程序计数器
用(可达性分析算法)GC Root可以解决循环依赖的问题,而引用计数法不可以
s1(1/10)
s0(1/10)
main线程
线程共享
局部变量表
线程私有
本地方法栈(native)
C
D
指针指向
基本类型
F
常量池
方法出口
每一个方法进来就会创建一个栈帧
E
A
栈、方法区内没有引用到堆中的E,所以此时E这条链的对象都是垃圾,只有GC root引用链上的对象才不是垃圾
D的引用
A的引用
执行
类信息Math.class
0 条评论
下一页