福哥答案2020-10-04:#福大大架構師每日一題#
簡單回答:
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 實現中的「臨時性」物件,跨代參照的物件(在使用分代模型回收只回收部分代的物件,這個後續會細講,先大致瞭解概念)。(非重點)