GingerbreadVM 二:JavaClass常量区特性
常量区列表本身从1开始 而不是0
这里与常规思维差别很大,0号常量元素用于特殊的一个功能,可参考JavaClass类的继承链特性。
常量元素的后置数字跳跃
在长整数常量(存储Long)、长浮点数常量(存储Double)中,它的下一个会空出一个元素的索引,目前认为这是在之前的32位纯解释运行的运行时所留下的特性,只不过为了兼容而保留到了现在。
以下为示例,根据索引展示
索引数 | 类型 | 值 |
---|---|---|
1 | UTF8 | ‘java/lang/String’ |
2 | 长整数 Long | 255L |
3 | 空位 | |
4 | 数字 Integer | 255 |
以下为示例,根据内存展示
UTF8(‘java/lang/String’) | Long(255L) | Integer(255) |
---|
虽有3号空位在,但文件、内存上依然是连续的,3仅在读取时需要跳位。