Day324.类加载子系统 -JVM

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day324.类加载子系统 -JVM相关的知识,希望对你有一定的参考价值。

类加载子系统

  • 简图

image-20210710164426772

一、类加载器与类的加载过程

image-20210710164606517

1、类加载器子系统作用

image-20210710165820235

  • 常量池在运行过程中加载到内存里。叫运行时常量池

2、类加载器ClassLoader角色

image-20210710170201580


3、类的加载过程

这里的类的加载过程是一个宏观上的概念,分为三个环节:加载、链接、初始化

  • 类的加载整体执行流程

image-20210710170347928

image-20210710170251159

  • 加载流程图

image-20210710170259673

  • ①【加载】环节

image-20210710170940103

  • class文件获取来源

image-20210710170314685

  • ②【链接】环节

image-20210710172631139

③【初始化】环节

image-20210710174144020

一类只能被初始化一次,且初始化过程是被加锁的

  • 具体代码表现:↓

静态变量&静态代码块

image-20210710172940010

↓对应生成的.class字节码文件,里面会有对应的方法,会看到<client>是自动生成的,而main方法是我们定义的

image-20210710172928514

二、类加载器分类

image-20210710175120203

image-20210710175552895

  • 代码

    image-20210710180042003

BootstrapClassLoader无法获取到


1、虚拟机自带的加载器

①BootstrapClassLoader

image-20210710180855742

②ExtensionClassLoader

image-20210710181119812

③AppClassLoader

image-20210710180448400


2、用户自定义的加载器

image-20210710180515831


3、用户自定义加载器实现步骤

image-20210710183536519


4、关于ClassLoader

image-20210710180613738

image-20210710180620794


5、ClassLoader的获取途径

image-20210710180649546

三、双亲委托机制

image-20210710184142426

image-20210710184958302


  • 代码演示:↓↓↓

image-20210710185427609


image-20210710184202144


  • 双亲委派机制的优点:↓↓↓

image-20210710184208741

  • 沙箱安全机制

image-20210710184214465

四、其他

image-20210710190428584

image-20210710184233783


  • 类的主动使用和被动使用

image-20210710190608917

以上是关于Day324.类加载子系统 -JVM的主要内容,如果未能解决你的问题,请参考以下文章

day21-反射&枚举

java自学之路-day21

一起重新开始学大数据-java篇-DAY26反射,正则表达式

day19_java基础加强_动态代理+注解+类加载器

Day690.Tomcat如何实现热部署和热加载 -深入拆解 Tomcat & Jetty

day38 04-Spring加载配置文件