JVM学习之旅--JVM类加载机制 1

JVM学习之旅–JVM类加载机制 1


前言

JVM整体的运行过程是 先把我们编写的.java代码文件编译成.class字节码文件,然后类加载器把.class字节码文件中的类给加载到jvm中,接着是JVM执行代码

一、整体过程

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

二、JVM加载过程

一个类从加载到使用,一般会经历下面过程:
加载 ——> 验证 ——> 准备 ——> 解析 ——> 初始化 ——> 使用 ——> 卸载

  • 1、加载 JVM启动会给类加载到内存
  • 2、验证 校验加载的.class类文件中的内容是否符合指定的规范
  • 3、准备 给类分配一定的内存空间,并给类中的类变量(static修饰的变量)分配内存空间并赋默认的 初始值
  • 4、 解析 把符号引用替换为直接引用
  • 5、 初始化 赋值 (之前准备阶段只是给初始值)

在这里插入图片描述

三、什么时候会初始化一个类

比如使用new关键字或者包含main()方法的主类。必须是立马初始化的
如果初始化一个类的时候,发现其父类还没有初始化,则必须先初始化父类

四、类加载器

1 启动类加载器 Bootstrap ClassLoader

主要负责加载java目录下的核心类,在java安装目录的lib文件夹

2 扩展类加载器 Extension ClassLoader

主要负责加载java安装目录 lib\ext 下的类

3 应用程序类加载器 Application ClassLoader

主要负责加载 classPath环境变量所制定的路径中的类,可以理解为写好的java代码

4 自定义类加载器

可根据需求加载你所需要的类

在这里插入图片描述

五、双亲委派机制什么意思?

假设你的应用程序类加载器需要加载一个类,他首先会委派给自己的附加在其去加载,最终传导到最顶层的类加载器去加载
如果福类加载器在自己负责加载的范围内没有找到这个类就会报错,同时子加载器会catch这个错误尝试自己加载

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值