0%

侏儒兔小妹妹来了,出生于2022年11月16日,与2023年01月29日来到了小家庭。

在探索OpenJDK时,发现了JVMSpec对java程序处理的很多特性
这些特性在我认为在JIT模式盛行的现在,这些特性仅会保留到JVM将代码翻译为机器码前。
故GingerbreadVM一定程度上与OpenJDK的实现并不相同。
同时受限于精力的影响,仍有许多功能未进行实现。

阅读全文 »

常量区列表本身从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仅在读取时需要跳位。

思考要不要开放评论系统。