jvm之类加载过程

1.类加载子系统作用:

① 类加载器子系统负责从文件系统或网络中加载class文件,class文件开头有特定的件标识。

② classLoader只负责class文件的加载,至于是否可以运行,则可以运行,则由Excution Engin决定。

③ 加载类的信息存放在一块程为方法区的内存空间,除了类信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息总是class文件常量池部分内存映射)。

2.类加载器ClassLoader角色

① class file时存放在磁盘上,可以理解为设计师在纸上的模板,而最终这个模板在执行的时候时要加载到JVM当中来,根据这个文件实例化出n个一模一样的实例。

② class file加载daoJVM中,被称为DNA元数据模板,放在方法区。

③ 在.class文件->jVM->最终成为元数据模板,此过程就要一个运输工具(类加载器)Class Loader),扮演一个快递员角色。

3.类加载过程:加载——>验证——>准备——>解析——>初始化。

4.加载实例

代码:

package com.lut.excise;

public class ClassLoaderTest1 {
    private static int num=1;
    {
        num=2;

    }
    public static void main(String[] args) {
        System.out.println(num);
    }
}

加载分析:

这是上面代码的加载过程,首先是给num赋值,让在静态代码块中覆盖等于2.

如果有静态变量就执行<clinit>初始化。如果没有就用<init>初始化。

5.加载

① 通过一个类的全限定名定义此类的二进制字节流。

② 将一个字节流所代表的静态存储结构转化为方法区的运行时结构。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值