![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
jvm
文章平均质量分 95
JAVA的类加载机制
wyaoyao93
小白
展开
-
jvm内存结构
文章目录1 jvm结构2 jvm的内存区域2.1 栈2.1.1 线程栈2.1.2 栈帧(方法栈帧) 1 jvm结构 一个类会通过jvm的第一个组成部分类装载子系统(C++实现),会把字节码文件丢到jvm的内存区域 最终通过jvm的另一个组成部分字节码执行引擎执行内存区域的代码 我们常说的jvm的内存模型说的就是 jvm的内存区域的划分,堆,栈,方法区,程序计数器这些玩意。 另外,常说的 运行时常量池是方法区的一部分 2 jvm的内存区域 2.1 栈 2.1.1 线程栈 栈(线程栈),每当一个线程开原创 2021-07-07 22:32:13 · 241 阅读 · 0 评论 -
03 类加载机制解析四:打破双亲委派机制
文章目录1 打破双亲委派机制 1 打破双亲委派机制 上节自定义的类加载器,实现了加载指定目录的class,但是还是遵循了双亲委派机制 如何打破双亲委派机制 很简单,我们已经知道了双亲委派机制就是在ClassLoader的loadClass方法实现的,只要我们重写该方法就可以了呗 package study.wyy.jvm.classLoader; import java.io.FileInputStream; public class MyClassLoader extends ClassLoader原创 2020-09-04 11:56:33 · 330 阅读 · 0 评论 -
03 类加载机制解析二:自定义类加载器
文章目录1 自定义类加载器 1 自定义类加载器 自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是 loadClass(String, boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法,所以我们自定义类加载器主要是重写findClass方法。 自定义类加载器MyClassLoader package study.wyy.jvm.classLoader; import java.io.FileInputStream原创 2020-09-02 23:32:35 · 126 阅读 · 0 评论 -
02 类加载机制解析二:双亲委派机制
文章目录1 双亲委派机制2 全盘负责委托机制 1 双亲委派机制 JVM类加载器是有亲子层级结构的,如下图 这里类加载其实就有一个双亲委派机制,加载某个类时会先委托父加载器寻找目标类,找不到再 委托上层父加载器加载,如果所有父加载器在自己的加载类路径下都找不到目标类,则在自己的 类加载路径中查找并载入目标类。 比如我们的Math类,最先会找应用程序类加载器加载,应用程序类加载器会先委托扩展类加载 器加载,扩展类加载器再委托引导类加载器,顶层引导类加载器在自己的类加载路径里找了半天 没找到Math类,则向下退原创 2020-09-02 22:51:05 · 205 阅读 · 0 评论 -
01 类加载机制解析一
文章目录1 类加载器初始化和加载类的过程2 懒加载(动态加载?)3 类加载器3.1 类加载器简单介绍3.1 类加载器的初始化 1 类加载器初始化和加载类的过程 package study.wyy.jvm.classLoader; import study.wyy.jvm.model.User; public class Math { public static User user = new User(); public static final int initData = 666原创 2020-09-02 21:55:14 · 192 阅读 · 0 评论