常量池的表述有些模糊,在此细化一下,注意我们指的是 Java 7 版本之后。

    JVM 中有多个常量池:

    • 字符串常量池,存放在堆上,也就是执行 intern 方法后存的地方,class 文件的静态常量池,如果是字符串,则也会被装到字符串常量池中。
    • 运行时常量池,存放在方法区,属于元空间,是类加载后的一些存储区域,大多数是类中 constant_pool 的内容。
    • 类文件常量池,也就是 constant_pool,这个是概念性的,并没有什么实际存储区域。

    在平常的交流过程中,聊的最多的是字符串常量池,。