Java GC
2019-01-18 20:48:09 0 举报
AI智能生成
Java GC
作者其他创作
大纲/内容
对象死亡分析
引用计数算法
无法解决循环引用的问题,不被java采纳
可达性分析算法(Reachability Analysis)
GC Roots
虚拟机栈(栈帧中的本地变量表)中引用的对象。
方法区中的静态成员。
方法区中的常量引用的对象(全局变量)。
本地方法栈中JNI(一般说的Native方法)引用的对象。
引用
强引用
软引用(SoftReference)
弱引用(WeakReference)
虚引用(PhantomReference)
finalize在GC中起的作用和坑
文一
文二
回收方法区
无用的类
该类所有的实例都已经被回收,也就是Java堆中不存在该类的任何实例。
加载该类的ClassLoader已经被回收。
该类对应的java.lang.Class 对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
垃圾收集算法
标记-清楚算法(Mark-Sweep)
内存碎片问题
复制算法(Copying)
新生代适用
标记-整理算法(Mark-Compact)
分代收集算法(Generational Collection)
HotSpot的算法实现
枚举根节点
安全点
安全区域
Collector
Serial Collector
是JVM在client模式下的默认GC方式,通过JVM参数 -XX:UseSerialGC 来指定。
Parallel Collector
新生代: ParNewGC
新生代: Parallel Scavenge
吞吐量优先
与ParNewGC的区别
ParallelGC
ParallelOldGC
吞吐量优先的垃圾回收
CMS Collector
Concurrent-Mark-Sweep
相应时间优先
最大的问题和缺陷
周期性Old GC(被动)和主动Old GC
触发条件
晋升担保
文一
G1 Collector
Garbage First Collector
文一
文二
Zing C4
Epsilon
ZGC
分代垃圾回收
年轻代
Eden
2个Survivor
分配对象的过程
指针碰撞
老年代
分配对象的过程
空闲列表
标记清除
标记整理
文一
永久代与元空间
文一
文二
文一
其他
GC日志
GC参数总结
内存分配策略
0 条评论
下一页