标签:解决 情况 垃圾 内存 方法 收集 分代 队列 queue
1.垃圾收集(针对Java堆和方法区)
(1)判定对象存亡有2种算法,一是引用计数算法,二是可达性分析算法
(2)引用分类:强引用、软引用、弱引用、虚引用
(3)对象被回收过程:经历2次标记,第一次是可达性分析后没有与GC Roots相连,第2次判断对象是否有必要执行finalize()方法,如果对象没有覆盖finalize()方法,或finalize()方法已经被虚拟机调用过,那么虚拟机将这2种情况都视为没有必要执行。如果对象有必要执行finalize()方法,就会被加入F-Queue队列中,垃圾收集线程会扫描这个队列,并执行每一个对象的finalzie()方法,最后对队列中的对象进行第二次标记,如果对象在finalzie()方法中没有拯救自己,那么对象就会被垃圾收集器回收。
2.垃圾收集算法(所有算法都属于追踪式垃圾收集的范畴)
(1)分代收集理论:基于该理论将Java堆划分为不同的区域(新生代、老年代)。
(2)垃圾回收类型:根据垃圾收集器对不通区域的回收,回收类型分为Minor GC(新生代收集)、Major GC(老年代收集)、Full GC(堆和方法区收集)。
(3)根据不通区域的特点,有相应的算法:标记-清除算法、标记-复制算法、标记-整理算法。
(4)跨代引用解决:记忆集与卡表
标签:解决 情况 垃圾 内存 方法 收集 分代 队列 queue
原文地址:https://www.cnblogs.com/lilinjian/p/13684292.html