随笔分类 -  技术随笔 / Jvm

Java虚拟机类加载机制
摘要:JVM整体结构以及内存模型public class Math { public static final int initData = 666; public static User user = new User(); public int compute() { //一个方法对应一块栈帧内存区域 阅读全文
posted @ 2023-02-23 19:07 朱俊升 阅读(54) 评论(0) 推荐(0)
摘要:再来一个沙箱安全机制示例,尝试打破双亲委派机制,用自定义类加载器加载我们自己实现的 java.lang.String.class public class MyClassload1 extends ClassLoader { private String classPath; public MyCl 阅读全文
posted @ 2023-02-22 12:08 朱俊升 阅读(84) 评论(0) 推荐(0)
摘要:为什么要设计双亲委派机制? 沙箱安全机制:自己写的java.lang.String.class类不会被加载,这样便可以防止核心API库被随意篡改 避免类的重复加载:当父亲已经加载了该类时,就没有必要子ClassLoader再加载一次,保证被加载类的唯一性 全盘负责委托机制 “全盘负责”是指当一个Cl 阅读全文
posted @ 2023-02-22 11:36 朱俊升 阅读(60) 评论(0) 推荐(0)
摘要:Java里有如下几种类加载器 引导类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的核心类库,比如rt.jar、charsets.jar等 扩展类加载器:负责加载支撑JVM运行的位于JRE的lib目录下的ext扩展目录中的JAR类包 应用程序类加载器:负责加载ClassPath路径下的类包 阅读全文
posted @ 2023-02-22 10:52 朱俊升 阅读(113) 评论(0) 推荐(0)
摘要:其中loadClass的类加载过程有如下几步: 加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载 加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.C 阅读全文
posted @ 2023-02-21 19:28 朱俊升 阅读(43) 评论(0) 推荐(0)