x.java 通过javac命令生成x.class x.class通过java命令执行。通过classloader load到内存。代码经常需要引用java类库,所以也需要通过classloader load到内存 装载完成后,会调用字节码解释器,或者JIT来进行解释或者编译 编译完成之后通过执行引擎开始执行 执行引擎对面的就是操作系统和硬件
u1 u2 u4 u8和_info(表类型) _info的来源是hotspot源码中的写法 u指无符号, u1为一个字节(二进制8位,16进制2位,如CA), u2为两个字节
查看bytecode插件: IDEA插件 JClassLib
constant_pool_count被用来表示常量池的常量数,这里的常量池是从1开始索引的,因为第0项是用于某些指向常量池的索引值的数据在特定情况下表示“不引用任何一个常量池项目”的含义。
常量池的每一个常量都是一个表,表结构起始的第一位是个u1类型的标志位(tag),代表着当前常量属于哪种常量类型。
具体项,比如CONSTANT_Utf8_info,如下