《深入理解Java虛擬機》第二版 第三章筆記

三.垃圾收集器與內存分配策略

1.1 概述

拋出問題

  • 哪些內存需要回收
  • 什麼時候回收
  • 如何回收

1.2 對象已死嗎?

如何判斷對象已經死亡:

1.2.1 引用計數法(RC  Reference Counting)

原理:每個對象都有一個引用計數器,每當其他地方引用它時,計數器加一。引用失效時,計數器減一。

           當計數器減到0,表示對象不再被引用。

缺點:當兩個對象互相引用時,那麼他們永遠不會被GC回收。

優點:實現簡單,判定效率高,但是主流的JVM中沒有選用RC的算法

1.2.2 可達性分析算法

原理:一系列被稱爲GC Roots的對象作爲起始點,當一個對象沒有任何引用鏈連接GC Roots時,證明此對象不可用。

可以當做GC Roots對象的有:

  • 虛擬機棧(棧幀的本地變量表)中引用的對象
  • 方法區中類靜態屬性引用的對象
  • 方法區中常量引用的對象
  • 本地方法棧中JNI(一般指Native方法)引用的對象。

1.2.3 引用

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章