1.请问这张图里的表述是否存在一些问题? 2.位于运行时常量池的 final 常量值和字符串字面量都是保存对象引用,对象本身还是在堆中? 3.运行时常量池的其他具体是指那些? 4.有些观点认为 jvm 方法区还存储静态变量,如果是的请问是位于方法区的哪里? 方法区, jvm, 请问, 常量值
Java 虚拟机对于 Class 文件每一部分(自然也包括常量池)的格式都有严格规定,如每一个字节用于存储哪种数据都必须符合规范上的要求才会被虚拟机认可、加载和执行,但对于运行时常量池,《 Java 虚拟机规范》并没有做任何细节的要求,不同提供商实现的虚拟机可以按照自己的需要来实现这个内存区域,不过一般来说,除了保存 Class 文件中描述的符号引用外,还会把由符号引用翻译出来的直接引用也存储在运行时常量池中。