JVM可達性分析算法


一、可達性分析算法

  “GC Roots”根對象集作為起始點集合,從這些節點開始,根據引用關系向下搜索,搜索過程路徑稱為“引用鏈”。如果,某對象到GC Root沒有引用鏈相關聯,那么,就是GC Root到對象不可達,則證明這個對象不可能再被使用。

 

   上圖所示,Object 1與GC Root可達,而Object 5與GC Root不可達。

二、GC Roots有哪些

  在Java技術體系里面,固定作為GC Root的對象:

    • 虛擬機棧中引用的對象,如:線程中被調用的方法堆棧中使用的參數、局部變量、臨時變量。
    • 方法區中類靜態屬性引用的對象。
    • 方法區中常量引用的對象,比如:字符串常量池里的引用。
    • 本地方法棧中JNI引用的對象。
    • Java虛擬機內部的引用,比如:基本數據類型對應的Class對象、常駐異常對象、系統類加載器,如:String、NullPointExcepition等。
    • 所有被同步鎖持有的對象(synchronized關鍵字)。
    • 反映Java虛擬機內部情況的JMXBean、JVMTI中注冊的回調、本地代碼緩存等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM