1. 程式人生 > >JVM之垃圾回收

JVM之垃圾回收

效率 循環引用 空間 活著 解決 使用 老年代 垃圾回收 相互

1.哪些內存需要回收?判斷對象已死的方法

  1.引用計數算法:難以解決對象之間相互循環引用的問題,不使用。

  2.可達性分析算法:通過一系列“GC Root”對象作為起始點向下搜索,所走過的路徑稱為引用鏈。如果一個對象到GC root沒有任何引用鏈連接,則會被判定為可回收的,

           但此時對象還有一次自救的機會,即調用finalize()方法(沒啥卵用,可以不學)。如果沒有自救則被回收

2.垃圾回收算法

  1.標記清除算法:效率不高;空間碎片太多浪費內存。

  2.復制算法:當一塊內存用完時,將活著的對象復制到另一塊內存上,將第一塊內容清楚。缺點:對象存活率較高時,進行較多復制操作,效率會變低,且需要浪費50%的空間。

  3.標記整理算法:將存活的對象向一端移動,直接清除邊界以外的對象。

  4.分代收集算法:新生代中對象存活率較低,采用復制算法,老年代中對象存活率高,采用標記整理算法 

  

JVM之垃圾回收