继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

Caeser110
关注TA
已关注
手记 139
粉丝 30
获赞 154

我看了一圈"深入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 对象

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP