導航:首頁 > 源碼編譯 > 可達性演算法根

可達性演算法根

發布時間:2025-05-12 01:53:15

⑴ 可達性分析演算法(根搜索演算法GCRoots)

根搜索演算法的基本思路就是通過一系列名為」GC Roots」的對象作為起始點,從這些節點開始向下搜索,搜索所走過的路徑稱為引用鏈(Reference Chain),當一個對象到GC Roots沒有任何引用鏈相連時,則證明此對象是不可用的。

這個演算法的基本思想是通過一系列稱為「GC Roots」的對象作為起始點,從這些節點向下搜索,搜索所走過的路徑稱為引用鏈,當一個對象到GC Roots沒有任何引用鏈(即GC Roots到對象不可達)時,則證明此對象是不可用的。

那麼問題又來了,如何選取GCRoots對象呢?在Java語言中,可以作為GCRoots的對象包括下面幾種:

(1). 虛擬機棧(棧幀中的局部變數區,也叫做局部變數表)中引用的對象。

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

(3). 方法區中常量引用的對象。

(4). 本地方法棧中JNI(Native方法)引用的對象。

下面給出一個GCRoots的例子,如下圖,為GCRoots的引用鏈。

根搜索演算法的基本思路就是通過一系列名為」GC Roots」的對象作為起始點,從這些節點開始向下搜索,搜索所走過的路徑稱為引用鏈(Reference Chain),當一個對象到GC Roots沒有任何引用鏈相連時,則證明此對象是不可用的。

從上圖,reference1、reference2、reference3都是GC Roots,可以看出: reference1-> 對象實例1; reference2-> 對象實例2; reference3-> 對象實例4; reference3-> 對象實例4 -> 對象實例6; 可以得出對象實例1、2、4、6都具有GC Roots可達性,也就是存活對象,不能被GC回收的對象。 而對於對象實例3、5直接雖然連通,但並沒有任何一個GC Roots與之相連,這便是GC Roots不可達的對象,這就是GC需要回收的垃圾對象。

閱讀全文

與可達性演算法根相關的資料

熱點內容
區塊鏈編譯eth 瀏覽:781
安卓手機軟體如何給照片加發光點 瀏覽:977
結構性存款在app哪裡 瀏覽:968
iphone如何快速打開app 瀏覽:797
好玩的程序員笑話 瀏覽:82
linux下如何搭建web伺服器 瀏覽:222
狼群之飢和命令之眼 瀏覽:369
xp使用telnet命令 瀏覽:158
安卓如何有蘋果塗鴉筆 瀏覽:598
圖好快壓縮 瀏覽:295
華為思科命令手冊 瀏覽:155
七公主中文版在哪個app看 瀏覽:646
周立功單片機實驗與實踐 瀏覽:259
新建文件夾命名怎麼老是顯示重試 瀏覽:797
雲伺服器如何建立社區 瀏覽:230
把pdf轉成word文檔的軟體 瀏覽:248
雲伺服器的操作系統選什麼好 瀏覽:974
python沒用 瀏覽:833
丁曉鍾外刊pdf 瀏覽:246
安卓怎麼給應用改圖標 瀏覽:791