Java 中靜態成員儲存在記憶體中的什麼位置?
靜態方法和變量,例如提供的 Java 程式碼片段中演示的那些,儲存在 Oracle 的 Hotspot JVM 和其他基於它的堆內存的 PermGen 部分中。 PermGen 保存元數據,包括類別相關數據。
儲存機制:
-
靜態變數:僅其技術值(原語或引用)儲存在 PermGen 中。如果靜態變數引用一個對象,則該物件本身駐留在標準堆區域中,而不是 PermGen。
-
靜態方法: 所有方法(包括靜態方法)都會作為反射的一部分佔用 PermGen 中的空間資料。
重要注意:
- PermGen 僅用於元資料;靜態欄位儲存在常規堆中。
- Eclipse OpenJ9 和其他 JVM 可能沒有 PermGen 或 Metaspace。
- 依賴 Finalize() 進行垃圾回收是不可靠的。由 JVM 來決定垃圾回收時間和合格的物件。
- 單獨將靜態變數設為 null 可能無法保證從堆中刪除物件。
- 程式碼和資料的儲存方式可能會有所不同取決於 JVM 實作和版本。
以上是Java 靜態成員儲存在記憶體中的什麼位置?的詳細內容。更多資訊請關注PHP中文網其他相關文章!