JVM初学

本文是观看张龙老师JVM教学视频的笔记,介绍了Java虚拟机生命周期,包括正常结束、报错、意外关闭等情况;阐述了类加载过程,如加载、连接、初始化;还说明了类的主动使用和被动使用是否会初始化的情况,以及terminal插件相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了张龙老师的jvm教学视频的笔记

java 虚拟机生命周期

  1. 执行了System.exit();方法
  2. 程序正常结束
  3. 程序报错
  4. 虚拟机意外关闭(操作系统死机或断电程序不可控原因)

类加载过程

  1. 加载 .class文件里的二进制数据进内存
  2. 连接(验证确保类的正确性,准备 为静态变量分配内存初始化默认值,解析把类的符号引用转化为直接引用)
  3. 初始化 为类初始化设定的值

类的主动使用会初始化

  1. new class() 创建实例
  2. 访问类的静态变量或给静态变量赋值
  3. 调用静态方法
  4. 反射
  5. 初始化一个子类(也会初始化父类)
  6. 此类为启动类(main方法等)

类的被动使用不会初始化
通过子类的名字调用父类的静态变量,并没有主动使用子类,所以子类的静态代码快没有被初始化,并执行

初始化父类的子类,对父类来说也是一个主动使用。因此父类的静态代码快被初始化,执行了。而子类这里调用了子类的静态变量。也是一个主动使用。第二条:访问某个类或这接口的静态变量,或这对该变量赋值。第五条:初始化一个类的子类

terminal 插件

即使没有对MyChild初始化,但是完成了对这个类的加载
在编译阶段,把 final定义的常量 放入到 调用这个常量的方法 所在类的常量池当中。之后就与定义的类无关了,删掉那个class也无所谓

一大堆的注记符…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值