java核心机制——jvm运行以及类加载全过程

jvm运行和类加载

为啥要研究类加载全过程?
~~ 有助于了解JVM运行过程
~~更深入了解java动态性,(解热部署,动态加载)提高程序来的灵活性。
类加载机制
~JVM把class文件加载到内存,并对数据进行校验,解析和初始化,最终形成JVM可以直接使用的java类型的过程。

加载
~将class文件字节码内容加载到内存中,并将这些静态数据转换成方法去中运行是数据结构,早堆中生成一个代表这个类的java.lang.Class对象,作为方法区类数据的访问入口。

链接
将java类的二进制代码合并到jvm的运行状态之中的过程
~验证:确保加载的类信息符合jvm规范,没有安全方面的问题。
~准备:正式类变量(static变量)分配内存并设置变量初始值的阶段,这些内存都将在方法去中进行分配
~解析:虚拟机常量吃内的符号引用替换为直接引用的过程。
初始化
~初始化阶段执行类构造器<clinnt>()方法的过程。构造器<clinit>()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句(static块)中的语句合并产生的。
~当初初始化一个类的时候,如果发现父类还没有进行初始化,则需要先发出父类的初始化
~虚拟机会保证一个类的<clinit>()方法在多线程环境中被正确加锁和同步。
~当访问一个java类的静态域时,只要真正声明这个域的类才会被初始化。
package com.cn.love.ui;

public class test {
	public static void main(String[] args) {
		A a = new A();
		System.out.println(A.width);
		
	}
}
class A{
	public static int width=100;
	
	static {
		System.out.println("静态初始类A");
		width=300;
	}
	public A(){
		System.out.println("创建A类的对象");
	}
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无与伦比的傻

微信公众号:dasha500

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值