第四章:虚拟机性能监控与故障处理工具
1:-Dcom.sun.management.jmxremote开启JMX管理功能;
JConsole工具可以检测线程信息,并可以看看是否有死锁情况;
第五章:调优案例分析与实战
第六章:类文件结构,略
第七章:类加载器
小知识点:魔数:0xCAFEBABE
第八章:虚拟机字节码执行引擎
一:运行时栈帧结构----数据结构组成部分
二:栈帧数据结构
1:局部变量表
是一组变量值存储空间,用于存放方法参数和方法内部定义的局部变量;
在编译成class文件时,就在code属性的max_locals数据项中确定了需要分配的最大局部变量表的容量,单位为变量槽Slot为最小单位,一般每个Slot占用32位长度的内存空间;
局部变量表建立在线程的堆栈上,是线程私有的数据,保证了原子性,不会引起数据线程安全;
System.gc()进行垃圾回收。
2:操作数栈
是一个后入先出的LIFO栈,class文件编译后被写入到Code属性的max_stacks数据项中;
操作数栈的每一个元素可以是任意的java数据类型,32位数据类型所占的栈容量为1,64位为2;
3:动态连接
4:方法返回地址
两种方式退出一个执行后的方法:
5:附加信息
三:方法调用
1:解析
final方法是一种非虚方法。
四:分派
1:静态分派---实际应用:方法重载
2:动态分派---实际应用:重写
3:单分派与多分派