福哥答案2020-10-04:#福大大架構師每日一題#java
簡單回答:
1.局部變量。
2.靜態引用的對象。
3.常量引用的對象。
4.JNI引用的對象。
緩存
中級回答:
1.虛擬機棧(棧幀中的本地變量表)中引用的對象;各個線程調用方法堆棧中使用到的參數、局部變量、臨時變量等。
2.方法區中類靜態屬性引用的對象;java 類的引用類型靜態變量。
3.方法區中常量引用的對象;好比:字符串常量池裏的引用。
4.本地方法棧中 JNI(即通常說的 Native 方法)引用的對象。
5.JVM 的內部引用(class 對象、異常對象 NullPointException、OutofMemoryError,系統類加載器)。(非重點)
6.全部被同步鎖(synchronized 關鍵)持有的對象。(非重點)
7.JVM 內部的 JMXBean、JVMTI 中註冊的回調、本地代碼緩存等。(非重點)
8.JVM 實現中的「臨時性」對象,跨代引用的對象(在使用分代模型回收只回收部分代的對象,這個後續會細講,先大體瞭解概念)。(非重點)
架構
評論線程