JVM虚拟机-类加载器、双亲委派模子、类装载的执行过程 ...

打印 上一主题 下一主题

主题 1735|帖子 1735|积分 5205


一、什么是类加载器,类加载器有哪些

我们如今要讲的就是类加载子系统,主要作用是将java源码编译为class字节码文件后装载到运行时数据区,运行时数据区就可以去分配内存再通过执行引擎来执行java代码。


启动类加载器(也称引导类加载器),它嵌套在JVM内部,主要用于加载Java的焦点库(也就是lib目录下的全部jar包);
扩展类加载器主要用于加载jdk安装目录内的扩展目录下的jar包,当用户自己的类文件也放在当前目录下时,就会自动被扩展类加载器来加载;
应用类加载器负责加载环境变量CLASSPATH下全部的类,它就是默认的类加载器,一样平常Java应用的类都是由它来完成加载的,在Java的日常应用开发中,类的加载根本上都是由以上这三种来相互配合完成加载的,各自加载各自的类
自界说类加载器在平时的应用很少。
* 总结


二、双亲委派模子

(1)双亲委派模子介绍


①加载student类

我们自己编写的student类首先应当给应用类加载器进行加载,但是双亲委派机制会委托上级的扩展类加载器进行加载,发现它另有上一级加载器,就会再委托上级的启动类加载器进行加载,发现该类没有在焦点库目录下,就会再到扩展类中进行查找,末了回到子加载器(应用类加载器)来尝试加载。
②加载String类

当尝试在应用类加载器进行加载时,发现有上级加载器扩展类加载器与启动类加载器,终极在启动类加载器的焦点库下找到了该String类,那么就会在此处把该类进行加载了,并且直接返回给应用类加载器进行使用。
(2)JVM为什么采用双亲委派模子


(3)总结


三、类装载的执行过程


(1)加载


主要就是通过当前该类的全名来获取二进制数据流,并将其读入到运行时数据区,在元空间中去存储类的信息,在堆中开发一个空间来存储当前该类的class对象,方便后期创建对象进行使用。
(2)验证


(3)准备

通过static修饰的变量就是类变量(静态变量)

(4)解析


(5)初始化


(6)使用


(7)总结



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

千千梦丶琪

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表