首页 > 代码库 > 深入理解 Java 垃圾回收机制

深入理解 Java 垃圾回收机制

垃圾回收机制中的算法:

1.引用计数法:无法检测出循环引用。如父对象有一个对子对象的引用,子对象反过来引用父对象。这样,他们的引用计数永远不可能为0.

 2 标记-清除算法:采用从根集合进行扫描,对存活的对象对象标记,标记完毕后,再扫描整个空间中未被标记的对象,进行回收,会造成内存碎片

3 标记-整理算法:采用标记-清除算法一样的方式进行对象的标记,但在清除时不同,在回收不存活的对象占用的空间后,会将所有的存活对象往左端空闲空间移动,并更新对应的指针,进行了对象的移动,因此成本更高

4 copying算法 :克服句柄的开销和解决堆碎片的垃圾回收,它将堆分成对象面和空闲区域面,在对象面与空闲区域面的切换过程中,程序暂停执行

5 generation(分代)算法:不同生命周期的对象可以采取不同的回收算法,以便提高回收效率

   a:年轻代 : 年轻代的目标就是尽可能快速的收集掉那些生命周期短的对象 :采用 复制

   b :年老代:在年轻代中经历了N次垃圾回收后仍然存活的对象,就会被放到年老代中 :年老代适合使用标记-清除算法(或者标记-清除-整理)

深入理解 Java 垃圾回收机制