1. 程式人生 > >深入理解 Java 垃圾回收機制

深入理解 Java 垃圾回收機制

nbsp 循環引用 方式 不同的 整理 一個 復制 垃圾回收機制 提高

垃圾回收機制中的算法:

1.引用計數法:無法檢測出循環引用。如父對象有一個對子對象的引用,子對象反過來引用父對象。這樣,他們的引用計數永遠不可能為0.

2 標記-清除算法:采用從根集合進行掃描,對存活的對象對象標記,標記完畢後,再掃描整個空間中未被標記的對象,進行回收,會造成內存碎片

3 標記-整理算法:采用標記-清除算法一樣的方式進行對象的標記,但在清除時不同,在回收不存活的對象占用的空間後,會將所有的存活對象往左端空閑空間移動,並更新對應的指針,進行了對象的移動,因此成本更高

4 copying算法 :克服句柄的開銷和解決堆碎片的垃圾回收,它將堆分成對象面和空閑區域面,在對象面與空閑區域面的切換過程中,程序暫停執行

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

a:年輕代 : 年輕代的目標就是盡可能快速的收集掉那些生命周期短的對象 :采用 復制

b :年老代:在年輕代中經歷了N次垃圾回收後仍然存活的對象,就會被放到年老代中 :年老代適合使用標記-清除算法(或者標記-清除-整理)

深入理解 Java 垃圾回收機制