[b]Java编译过程:
[/b][img]http://www.oschina.net/uploads/img/201001/11000149_dJCf.gif[/img]

[b]Java的Class文件结构:[/b]
[img]http://www.oschina.net/uploads/img/201001/11000206_rrb7.gif[/img]

上图可描述为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等框架经常使用到的,阅读源码的时候将会有很大帮助。

JVM学习笔记——class文件结构相关推荐

  1. JVM学习笔记(Ⅰ):Class类文件结构解析(带你读懂Java字节码,这一篇就够了)

    JVM学习笔记(Ⅰ):Class类文件结构解析,带你读懂Java字节码 前言:本文属于博主个人的学习笔记,博主也是小白.如果有不对的地方希望各位帮忙指出.本文主要还是我的学习总结,因为网上的一些知识分 ...

  2. JVM学习笔记(四)------内存调优

    首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提 ...

  3. JVM学习笔记(四)

    JVM学习笔记(四) 文章目录 JVM学习笔记(四) 笔记链接 1.GC算法 1.1GC-判断对象是否可回收 1.1.1 引用计数法 1.1.1 可达性分析 1.2GC-回收算法 标记清除法(Mark ...

  4. jvm学习笔记(三)

    jvm学习笔记(三) 文章目录 jvm学习笔记(三) 1.全部笔记链接 2.堆 2.1堆的划分 使用JVM参数查看划分 Hotspot堆内存划分图(JDK8之前) 2.2 GC对堆的回收 GC的种类 ...

  5. jvm学习笔记(二)

    jvm学习笔记(二) 文章目录 jvm学习笔记(二) 1.全部笔记链接 2. Native关键字 3.关于JVM规范 3.1 JVM规范中运行时数据区的概念 4.HotSpot的JVM运行时数据区 4 ...

  6. jvm学习笔记(一)

    jvm学习笔记(一) 文章目录 jvm学习笔记(一) 1.全部笔记链接 3.类加载器 作用 类别 加载步骤 获得类加载器 4.双亲委派机制 5.沙箱安全机制 沙箱概念 JAVA沙箱的基本组件 基本组件 ...

  7. JVM学习笔记-04-java历史-沙箱安全机制

    JVM学习笔记-04-java历史-沙箱安全机制 文章目录 JVM学习笔记-04-java历史-沙箱安全机制 视频链接-最新JVM教程IDEA版[Java面试速补篇]-04-java历史-沙箱安全机制 ...

  8. JVM学习笔记-03-类加载器及双亲委派机制

    JVM学习笔记-03-类加载器及双亲委派机制 文章目录 JVM学习笔记-03-类加载器及双亲委派机制 1. 类加载器 视频链接-最新JVM教程IDEA版[Java面试速补篇]-03-类加载器及双亲委派 ...

  9. JVM学习笔记-02-JVM的体系结构

    JVM学习笔记-02-JVM的体系结构 文章目录 JVM学习笔记-02-JVM的体系结构 1. JVM的位置 2. JVM的体系结构 3.垃圾回收GC 4.JVM调优 视频链接-最新JVM教程IDEA ...

最新文章

  1. 2016 年 3 月 TIOBE 编程语言排行榜
  2. GPU算力免费用?百度AI Studio两周年惊喜活动开启
  3. 蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路
  4. java 6 update 3_Java(TM) 6 Update(java运行环境) V 6.0.450.6 官方版
  5. IP地址、子网掩码、网关、默认网关、DNS的理解
  6. ios 分段 判断 小说阅读器_还在用别的小说阅读器?今天教你用Python制作简易小说阅读器!...
  7. 以CCF CSP认证为抓手,积极探索软件基础能力递进式培养体系
  8. echarts源码打包_Echarts源码阅读指南
  9. C#:SQL查询结果生成datatable后,根据min、max查询datatable中min到max的数据,并生成新的datatable
  10. C#实现调用第三方接口进行短信验证码验证
  11. 国内HTML5前端开发框架汇总
  12. 华为笔记本linux双系统,华为MateBook笔记本安装Win10与Ubuntu双系统
  13. Phyton安装MySQL驱动
  14. outlook qr码在哪里_使用python自动发邮件-163、QQ、outlook邮箱
  15. linux计算多个文件大小的和,linux统计多个文件大小总和
  16. Google Drive—谷歌云盘大文件下载
  17. ff14服务器延迟滑步,ff14 5.0黑魔怎么玩_最终幻想14 5.0黑魔输出手法
  18. web前端-前端三剑客之CSS(1)
  19. JVM_12 垃圾回收3-垃圾回收器
  20. Python3.6笔记之腌制泡菜(pickle模块的用法)

热门文章

  1. linux如何调试elf程序,Linux下ELF的执行过程
  2. 智方6000系五金交电销售管理系统 卡巴斯基反病毒软件
  3. CSDN开会员了,你怎么想?----中级
  4. Unity Android 之 Unity Android 交互(aar形式)动态申请权限功能实现(权限可人为怎加删减,并含代码工程)
  5. 「GRUB」- 在BIOS系统上的GRUB引导 @20210221
  6. 30个最优秀的在线照片编辑工具
  7. 钉钉远程打卡(玩儿呢)
  8. Java 原型模式(克隆模式)
  9. Scaleform 4.3 (1)
  10. win10提醒软件桌面消息通知怎么打开