在javap -verbose之后,缺少一个常量池项

时间:2016-04-23 12:44:08

标签: java jvm

我创建了一个名为JVMClassTest的Java类,然后编译。之后,我运行" javap -verbose JVMClassTest"。常量池的#4是什么。

    public class JVMClassTest {
        private int i = 0;
        private static String s = "tString";
        private final double d = 1.2d;

        public JVMClassTest() {

        }

        public int getI() {
            return i;
        }

        public static String getS() {
            return s;
        }

        public double getD() {
            return d;
        }
    }

以下是结果的屏幕截图

enter image description here

1 个答案:

答案 0 :(得分:1)

根据JVM specification on the classfile format

  

CONSTANT_Long_info和CONSTANT_Double_info表示8字节数字(长和双)常量:

     

...

     

所有8字节常量占用类文件的constant_pool表中的两个条目。如果CONSTANT_Long_info或CONSTANT_Double_info结构是索引n处的constant_pool表中的项,则下一个可用项在游泳池中位于索引n + 2。