JVM快速入门

JVM快速入门,第1张

JVM快速入门

JVM大
  • JVM 体系结构
  • 类加载器
  • 双亲委派机制

JVM 体系结构

  • jvm优化大部分是在堆里进行优化
加载
  • 类加载器

  • 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

  • 流程

类加载器并不需要等到某个类被“首次主动使用”时再加载它,JVM规范允许类加载器在预料某个类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或存在错误,类加载器必须在程序首次主动使用该类时才报告错误(linkageError错误)如果这个类一直没有被程序主动使用,那么类加载器就不会报告错误

双亲委派机制

双亲委派机制: 当某个类加载器需要加载某个.class文件时,它首先把这个任务委托给他的上级类加载器,递归这个 *** 作,如果上级的类加载器没有加载,自己才会去加载这个类。
AppClassLoader(系统类加载器)–>
ExtClassLoader (标准扩展类加载器)–>
BootstrapClassLoader(启动类加载器)(最终执行)

  • 流程
  1. 类加载器收到加载请求!
  2. 这个请求向上委托给父类加载器去完成,一直向上委托,直到启动类加载器
  3. 启动类加载器检查是否能够加载当前这个类,能加载到就结束,使用当前的加载器,否则抛出异常,通知子类加载器进行加载
  4. 重复步骤3
  • 双亲委派机制的作用
    1、防止重复加载同一个.class。通过委托去向上面问一问,加载过了,就不用再加载一遍。保证数据安全。
    2、保证核心.class不能被篡改。通过委托方式,不会去篡改核心.clas,即使篡改也不会去加载,即使加载也不会是同一个.class对象了。不同的加载器加载同一个.class也不是同一个Class对象。这样保证了Class执行安全。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4021840.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-10-22
下一篇2022-10-22

发表评论

登录后才能评论

评论列表(0条)

    保存