看了张龙老师的jvm教学视频的笔记
java 虚拟机生命周期
- 执行了System.exit();方法
- 程序正常结束
- 程序报错
- 虚拟机意外关闭(操作系统死机或断电程序不可控原因)
类加载过程
- 加载 .class文件里的二进制数据进内存
- 连接(验证确保类的正确性,准备 为静态变量分配内存初始化默认值,解析把类的符号引用转化为直接引用)
- 初始化 为类初始化设定的值
类的主动使用会初始化
- new class() 创建实例
- 访问类的静态变量或给静态变量赋值
- 调用静态方法
- 反射
- 初始化一个子类(也会初始化父类)
- 此类为启动类(main方法等)
类的被动使用不会初始化
terminal 插件
在编译阶段,把 final定义的常量 放入到 调用这个常量的方法 所在类的常量池当中。之后就与定义的类无关了,删掉那个class也无所谓
一大堆的注记符…