jdk1.8 常量池分析

java中的常量池分3种

1.class文件常量池(静态常量池)

2运行时常量池

3.字符串常量池

class文件常量池:存储区域是在堆中,编译时产生对应的class文件,主要包含字面量和符号引用

运行时常量池:存在与本地内存的元空间中,JVM运行时,在类加载完成后,将每个class常量池中的符号引用转换为直接引用,与全量池中保持一致

字符串常量池:类在加载完成,经过验证,准备之后在堆中生成字符串对象实例,然后将该字符串对象实例的引用只存储到sting pool中,string pool是一个StringTable类,是哈希表结果,里面存储的是字符串引用,具体的实例对象存储在堆中,这个stringtable表在每个hotspot中的实例只有一份,被所有类共享。

猜你喜欢

转载自www.cnblogs.com/yangyanping-blog/p/12427065.html