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