为了账号安全,请及时绑定邮箱和手机立即绑定

深入分析Java Web-05-深入classloader工作机制

标签:
Java

我看了一圈"深入class文件结构"这一章,我发现我很懵逼,于是我打算跳过它,直接开始看ClassLoaser,类加载器。之前讲到了,我们写好的java文件会被编译成class文件,那么Java要想运行这个文件,一定要使用某个工具放到Java virtual machine (Java 虚拟机)里面去运行,这也是为什么Java 可以跨平台的原因,因为无论你在什么设备上想用Java势必要装上虚拟机才可以运行。就好像之前我所使用的Unity引擎,也是具备跨平台的特点,原理几乎一样,它可以运行在Web、Android、Linux、Windows操作系统上,就是需要安装Unity插件,运行在该插件上即可。
ClassLoader 加载一个class 文件到JVM时需要经过的步骤:
在这里插入图片描述

  1. 找到.class 文件并把这个文件包含的字节码加载到内存中。
  2. 字节码验证->Class类数据结构分析及相应的内存分配和最后的符号表的链接。
  3. 静态属性和初始化赋值,以及静态块的执行。

1.加载字节码到内存

用 URLClassLoader 找到这个 class 文件,读取它的byte字节流,通过 defineClass()方法来创建类对象。判断是jar 包还是文件,分别创建 FileLoader 或者 JarLoader ,或者使用默认的加载器。调用 findClass 加载字节流到内存中。

2.验证与解析

  • 字节码验证
  • 类准备,准备方法、字段和实现的接口
  • 解析,装入所引用的其他类

3.初始化 Class 对象

在类中包含的静态初始化器都被执行,在这一阶段末尾静态字段被初始化为默认值。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
30
获赞与收藏
154

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消