JVM
文章平均质量分 52
JVM学习及经验分享
大旭小旭
多做与少做的区别,就是成功与失败的差距。
展开
-
ClassLoader类加载器 之 双亲委派
1、双亲委派是什么?如果一个类加载器收到了类加载的请求,他首先会从自己缓存里查找是否之前加载过这个class,加载过直接返回,没加载过的话他不会自己亲自去加载,他会把这个请求委派给父类加载器去完成,每一层都是如此,类似递归,一直递归到顶层父类,也就是Bootstrap ClassLoader ,只要加载完成就会返回结果,如果顶层父类加载器无法加载此class,则会返回去交给子类加载器去尝试加载,若最底层的子类加载器也没找到,则会抛出ClassNotFoundException 。2、为什么要有双亲委原创 2021-03-24 23:41:23 · 127 阅读 · 0 评论 -
ClassLoader类加载器 之 类加载器种类
上图:1、启动类加载器(Bootstrap ClassLoader)最顶层类加载器,他的父类加载器是个null,也就是没有父类加载器。负责加载jvm的核心类库,比如java.lang.* 等,从系统属性中的sun.boot.class.path 所指定的目录中加载类库。他的具体实现由Java虚拟机底层C++代码实现。2、扩展类加载器(Extension ClassLoader)父类加载器是Bootstrap ClassLoader。从java.ext.dirs 系统属性所指定的目录中加载原创 2021-03-24 23:26:03 · 286 阅读 · 0 评论 -
ClassLoader类加载器 之 类加载过程
一个class文件如何从硬盘到内存,开始执行,首先来看一张图,依次描述。1、加载将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在内存上创建一个java.lang.Class 对象用来封装类在方法区内的数据结构作为这个类的各种数据的访问入口。2、连接2.1、验证主要是为了确保class文件中的字节流包含的信息是否符合当前JVM的要求,且不会危害JVM自身安全,比如校验文件格式、是否是cafe baby魔数、字节码验证等等。2.2、准备..原创 2021-03-24 22:51:45 · 151 阅读 · 0 评论