首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JVM 方法區與永久代:HotSpot 實現細節

     編輯:Java 綜合教學

方法區規範 vs 實現

  • 規範:存儲類結構(字段、方法、註解)、運行時常量池、靜態變數、即時編譯代碼緩存。
  • HotSpot 實現:永久代 實現方法區(JDK 7 及之前)。

關鍵差異

JDK 8+ 變更

  • 永久代移除,改用 元空間 實現方法區。
  • 元空間使用本地內存,默認無上限(受物理內存限制),可用 -XX:MaxMetaspaceSize 限制。
  • 字符串常量池、類靜態變數已在 JDK 7 移至堆,JDK 8 延續。

常見問題

  • java.lang.OutOfMemoryError: PermGen space:JDK 7 永久代滿(類加載過多、字符串常量過多)。
  • java.lang.OutOfMemoryError: Metaspace:JDK 8+ 元空間耗盡(動態生成類、類加載器洩漏)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
特性方法區(規範)永久代
字符串常量池包含不包含(JDK 7 移至堆)
類元數據包含包含
GC 行為規範不強制Full GC 時回收,易 OOM
大小限制規範可不固定-XX:MaxPermSize 固定上限