JVM虛擬機器的學習筆記六(可達性分析)

2022-09-13 08:15:11 字數 688 閱讀 3021

這個演算法的基本思路就是通過一系列稱為「gc roots」的根物件作為起始節點集,從這些節點開始,根據引用關係向下搜尋,搜尋過程所走過的路徑稱為「引用鏈」(reference chain),如果某個物件到gc roots間沒有任何引用鏈相連,或者用圖論的話來說就是從gc roots到這個物件不可達時,則證明此物件是不可能再被使用的。

在j**a技術體系裡面,固定可作為gc roots的物件包括以下幾種:

·在虛擬機器棧(棧幀中的本地變數表)中引用的物件,譬如各個執行緒被呼叫的方法堆疊中使用到的引數、區域性變數、臨時變數等。

·在方法區中類靜態屬性引用的物件,譬如j**a類的引用型別靜態變數。

·在方法區中常量引用的物件,譬如字串常量池(string table)裡的引用。·在本地方法棧中jni(即通常所說的native方法)引用的物件。

·j**a虛擬機器內部的引用,如基本資料型別對應的class物件,一些常駐的異常物件(比如nullpointexcepiton、outofmemoryerror)等,還有系統類載入器。

·所有被同步鎖(synchronized關鍵字)持有的物件。

·反映j**a虛擬機器內部情況的jmxbean、jvmti中註冊的**、本地**快取等。

除了這些固定的gc roots集合以外,根據使用者所選用的垃圾收集器以及當前**的記憶體區域不同,還可以有其他物件「臨時性」地加入,共同構成完整gc roots集合。

虛擬機器學習筆記!

安裝虛擬機器前些日子就有些接觸。裝過兩次。可是對於本質和原理還是不清楚,今天又安裝了一次。哎。就和愛因斯坦做的小椅子一樣。雖然還是不懂,可是比上一次強了一些。對於裡面的硬碟分割槽,bios設定,授權模式,網路連線等一些細節問題還是只知其一,不知其二的。安裝好的虛擬機器能否再進行設定,如果硬碟不夠用了...

JVM虛擬機器的學習筆記一(體系結構概覽)

1.jvm體系結構概覽 j a虛擬機器所管理的記憶體包含以下幾個執行時資料區域 1.程式計數器 是當前執行緒所執行的位元組碼的行號指示器。就是通過改變這個行號指示器的值來選取下乙個需要執行的位元組碼指令,從而可以實現迴圈 跳轉 分支 異常處理等基礎功能。j a虛擬機器的多執行緒是通過執行緒間的輪流切...

JVM虛擬機器查詢類檔案的順序

jvm查詢類檔案的順序 在doc下使用set classpath 如果沒有配置classpath環境變數,jvm只在當前目錄下查詢要執行的類檔案。如果配置了classpath環境,jvm會先在classpath環境變數值的目錄中查詢要執行的類檔案。值的結尾處如果加上分號,那麼jvm在classpat...