JVM(三)类的 吗加载器与加载过程

一.类加载器

在这里插入图片描述

1.1 类加载器子系统的作用:

  1. 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。
  2. ClassLoader只负责class文件的加载,至于它是否可以运行,则由ExecutionEngine决定。
  3. 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法去中还会存放运行时常量池信息,可能还包括字符串字面量和数字常量(这部分常量信息是Class文件常量池部分的内存映射)

1.2 类加载器ClassLoader角色

在这里插入图片描述

  1. class file 存在于本地磁盘上,可以理解为设计师画在纸上的模板,而最终这个模板在执行的时候是要加载到JVM中来根据这个文件实例化出n个一模一样的实例。
  2. class file 加载到JVM中,被称为DNA元数据模板,放在方法区。
  3. 在 .class 文件 -> JVM -> 最终成为元数据模板,此过程就要一个运输工具(类加载器 Class Loader),扮演一个快递员的角色。

1.3 类加载过程(宏观上的概念)

简图
在这里插入图片描述

细化过程
在这里插入图片描述

1.3.1 类加载过程的Loading阶段(狭义上的加载阶段)

加载:

  1. 通过一个类的全限定名获取此类的二进制字节流,(以物理磁盘上的文件为例即以流的方式实现去把这个物理磁盘上的文件加载到内存区中。)
  2. 将这个字节流所代表的静态存储结构转化为方法去的运行时数据结构,即类要存在方法区中
    3.** 在内存中生成一个代表这个类的java.lang.Class 对象**,作为方法区这个类的各种数据的访问入口。

加载.class 文件的方式

  1. 从本地系统中直接加载
  2. 通过网络获取,典型场景:Web Applet
  3. 从zip 压缩包中读取,成为日后jar ,war格式的基础
  4. 运行时计算生成,使用最多的是:动态代理技术
  5. 由其他文件生成,典型场景:JSP 应用
  6. 从专有数据库中提取.class 文件, 这种比较少见
  7. 从加密文件中去获取,典型的防Class文件被反编译的保护措施防止盗版
1.3.2 类加载过程中的Liking阶段

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值