`

JVM学习笔记——class文件结构

    博客分类:
  • JVM
阅读更多
Java编译过程:


Java的Class文件结构:


上图可描述为ClassFile结构体:
ClassFile {
    u4 magic;
    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;
    u2 interfaces[interfaces_count];
    u2 fields_count;
    field_info fields[fields_count];
    u2 methods_count;
    method_info methods[methods_count];
    u2 attributes_count;
    attribute_info attributes[attributes_count];
}

上面伪定义这个结构体是用来说明class文件的组成结构的。为便于记忆,我把class文件可以看做两种类型:
1、基本类型。如:u4,u2等。u2占2byte,u4占4byte。
2、复合类型。如: *_info。

了解class文件的结构有助于学习字节码操作框架,如asm,bcel,javassist等,而这些库又是很spring、hibernate等框架经常使用到的,阅读源码的时候将会有很大帮助。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics