1. 组成部分
字节码文件
类加载器ClassLoader
运行时数据区域(JVM管理的内存)
执行引擎(即时编译器、解释器、垃圾回收器等)
本地接口(调用本地已经编译的方法,比如虚拟机中提供的c/c++方法)
2. 字节码文件组成
基础信息:
魔数、字节码文件对应的Java版本号、访问标识(public final等)、父类和接口
魔数:由于文件后缀名可以改,因此无法通过后缀名判断文件类型,所以通过文件头(前几个字节),也就是“魔数”来判断文件类型。
版本号:判断当前字节码版本和运行时JDK是否兼容。
常量池
保存了字符串常量、类或接口名、字段名 主要在字节码文件中使用
字段
当前类或接口声明的字段信息
方法
当前类或接口声明的方法信息
属性
类的属性、比如源码的文件名、内部类的列表等
3. 字节码常用工具
javap -v
arthas
3.1 arthas
监控面板
dashboard命令
查看字节码信息
dump -d 保存到的地址 类名
jad 类名
方法监控
类的热部署
内存监控
垃圾回收监控
应用热点定位