JVM的常量池
常量池
指的是在編譯期被確定
并被保存在已編譯的class文件中的一些數據。
存放內容
基本類型
對象型
符號引用
除了包含代碼中所定義的各種基本類型
比如,int、long等,和對象型,比如,String及數組,的常量值,比如final修飾外
還包含一些以文本形式出現的符號引用,
1、類和接口的全限定名
2、字段的名稱和描述符
3、方法的名稱和描述符
虛擬機必須為每個被裝載的類型維護一個常量池
常量池就是該類型所用到常量的一個有序集合
包括直接常量比如,string,integer等,和其他類型,字段和方法的符號引用
對于String常量,它的值是在常量池中的。
而JVM中的常量池在內存當中,是以表的形式存在的
對于String類型,有一張固定長度的CONSTANT_String_info表
用來存儲文字字符串值
注意
該表只存儲文字字符串值,不存儲符號引用。
在程序執行的時候,常量池會儲存在MethodArea,而不是堆中
總結