书名
《实战JAVA虚拟机-JVM故障诊断与性能优化》
简介
核心内容
本书内容较多,主要分享下最核心也是最感兴趣的部分第9~10章——Class文件结构及类装载系统。
Class文件
对于Java虚拟机来说,Class文件是一个重要接口。无论使用何种语言开发,只要能将源文件(你写的代码)编译为Class文件,那么这种语言就可以在虚拟机上执行。可以说,Class文件就是Java虚拟机的基石。
特性:平台无关性、语言无关性
结构:Class文件的基本结构并不是一成不变的,会随着虚拟机版本的不同而有所调整。
根据Java虚拟规范的定义,一个Class文件可以非常严谨的被描述为:
ClassFile {
u4 magic; //魔数。固定: OxCAFEBABE,标识这是一个Class文件
u2 minor_version; //大版本号
u2 major_version; //小版本号
u2 constant_pool_count; //常量池个数
cp_info constant_pool[constant_pool_count-1]; //常量池表项
u2 access_flags; //访问修饰符
u2 this_class; //自身类引用
u2 super_class; //父类引用
u2 interfaces_count;