初识JVM

在这里插入图片描述

1.类加载子系统

只负责加载class文件
分三个阶段

1.1加载

1.1.1通过类名获取定义此类的二进制字节流

1.1.2将字节流代表的静态存储结构转化为方法区的运行时数据结构

1.1.3在内存中生成代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问接口

1.2链接

1.2.1验证

验证class文件中字节流信息的符合当前虚拟机要求

1.2.2准备

为类变量分配空间并设置变量的默认初始值如int 的设置为0 ,注意,这时变量还未初始化,

不包括加了final修饰的static,因为final在编译时就会分配,准备阶段会显式初始化

类变量分配在方法区,实例变量随对象放到java堆中

1.2.3解析

常量池内的符号转换成直接引用的过程

事实上,解析会伴随着JVM在执行完初始化之后再执行

1.3初始化

执行类构造器方法

对类变量赋值和静态代码区中的语句一起

按顺序执行

保证一个类在多线程下同步加锁,否则一个加载后加锁后会阻塞其他线程的进行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值