GC根搜索算法

       JVM會採用一種算法來進行GC回收,即根搜索算法。它的處理方式就是,設立若干種根對象,當任何一個根對象到某一個對象均不可達時,則認爲這個對象是可以被回收的。

         就拿上圖來說,ObjectD和ObjectE是互相關聯的,但是由於GC roots到這兩個對象不可達,所以最終D和E還是會被當做GC的對象,上圖若是採用引用計數法,則A-E五個對象都不會被回收。

         說到GC roots(GC根),在JAVA語言中,可以當做GC roots的對象有以下幾種:

         1、虛擬機棧中的引用的對象。

         2、方法區中的類靜態屬性引用的對象。

         3、方法區中的常量引用的對象。

         4、本地方法棧中JNI的引用的對象。

         第一和第四種都是指的方法的本地變量表,第二種表達的意思比較清晰,第三種主要指的是聲明爲final的常量值。

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