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

JVM 運行時常量池深度解析:從 Class 文件到方法區的演變

     編輯:Java 綜合教學

核心定位

  • 屬於方法區一部分,類加載完成後創建
  • Class 文件 constant_pool 表的運行時表現形式
  • 存儲編譯期常量(字面量)與運行期符號引用(類/接口/字段/方法全限定名、描述符)

與 Class 文件結構的關係

Class 文件常量池表(constant_pool)包含:

  • 字面量:文本字符串、final 常量、基本類型值
  • 符號引用:類/接口全限定名、字段名與描述符、方法名與描述符

類加載時,符號引用進入運行時常量池,後續連接階段可能解析為直接引用。

關鍵特性

  1. 動態性:運行期可通過 String.intern() 等方式添加新常量
  2. 內存區域:JDK 7 起字符串常量池移至堆,JDK 8 移除永久代改用元空間
  3. 溢出風險:大量 intern() 或動態生成類可能導致 OutOfMemoryError

版本演進

版本字符串常量池位置方法區實現
JDK 6永久代永久代
JDK 7堆永久代
JDK 8+堆元空間

參考:Class 文件結構

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved