Java 常量池的目的是什么?
我目前正在尝试更深入地研究Java虚拟机的规范。我一直在在线阅读Inside the JVM书籍,有一个令人困惑的抽象,我似乎无法理解:Constant Pool。以下是本书的摘录:
对于它加载的每种类型,Java 虚拟机必须存储一个常量池。常量池是类型使用的一组有序常量,包括文本(字符串、整数和浮点常量)以及对类型、字段和方法的符号引用。常量池中的条目由索引引用,就像数组的元素一样。由于常量池包含对类型使用的所有类型、字段和方法的符号引用,因此常量池在 Java 程序的动态链接中起着核心作用。
我对上述和CP有几个问题:
- CP 是否位于每种类型的文件中?
.class
- 作者所说的“象征性参考”是什么意思?
- 恒定池的目的是什么,用简单的英语?