类的生命周期

类加载的生命周期有加载 ->连接->初始化->使用->销毁

加载


加载:类加载器获取二进制信息(本地,动态代理,网络传输)放入方法区(虚拟概念)生成InstanceKlass对象保存类信息类,同时堆中也会存放一份,并且相互关联,方法区是使用c++处理的结果,堆区是使用java包装后的结果,同时堆区的内容的内容更少(为了安全,减少访问范围),省略一些无法操作的数据,jdk8之后会将静态字段存放入堆区

连接 校验->准备->解析

连接
    校验 :程序员不参与(java虚拟机规范)
    准备 :为静态变量分配内存,设置初值,final修饰的会直接赋值(初始化)指向常量池
    解析 :将常量池中的符号引用(常量池编号)转换为直接引用(内存)

初始化


初始化 :执行静态代码块,字节码中的clinit方法,为静态变量赋值,clinit和静态代码块的执行顺序和编写顺序相同,直接访问父类静态变量不会初始化子类,反之会初始化父类,
注:访问静态变量,方法,反射会默认初始化类(可修改),new,Main方法所在类均会加载类,调用final修饰的静态变量不会加载类,每一次创建新变量时都会加载一次?
补充:
//jvm操作规范,未被初始化的类在初始化时会被初始化,静态代码块在类初始化阶段执行,会被执行两次,但是类只会加载一次

/**
 * every time you create a new object of a class in Java,the class is initialized.
 * This is because the class constructor is called
 * when a new object is created, and the constructor is responsible
 * for initializing the object's state。
 * not every time you create a new object of a class in Java,the class is loaded.
 * This is because the class is only loaded once when it is first used.
 */
 

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值