[英]What are GC roots for classes?
在 Java 中,有稱為垃圾回收根(GC 根)的特殊對象。 它們充當垃圾收集標記機制的根對象(見圖)。
本文介紹了四種類型的 GC 根:
還提到:
類本身可以被垃圾收集。
不會收集 GC 根,因此類本身不是 GC 根。
那么類的 GC 根是什么?
那么類的 GC 根是什么?
類加載器,有效 - 通過其他 GC 根。
如果沒有任何東西可以到達類加載器——這意味着沒有東西可以到達由該類加載器創建的任何類或這些類的任何實例——那么類加載器和它創建的類都有資格進行垃圾收集。 在此之前讓它們保持活動狀態是必要的,以便 Class::forName 和 ClassLoader::findClass 可以是冪等的,即使類的靜態初始值設定項不是。
隱藏類(請參閱https://openjdk.java.net/jeps/371 )是此規則的例外。 作為 OpenJDK 的一個實現細節,使用 java.lang.reflect.Proxy 的靜態方法創建的方法引用、lambda 和代理的類也是如此。 類加載器沒有對這些類的強引用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.