java随笔
文章平均质量分 81
小小的丿程序猿
我是程序员,我骄傲!!!
展开
-
(四)手写打破双亲委派 (类加载机制 第四篇)
我们知道,在加载类的时候,会一级一级向上委托,判断是否已经加载,从自定义类加载器-》应用类加载器-》扩展类加载器-》启动类加载器,如果到最后都没有加载这个类,则回去加载自己的类。 双亲委托有个弊端: 不能向下委派,不能不委派 怎么打破双亲委派机制:(也就是能向下委派和不委派) 自定义类加载器(不委派) spi机制(向下委派) 用spi来打破双亲委派 SPI是什么? SPI全称Service Provider Interface,是Java提供的一套用来被第三方实现或者扩展的接口,它可以用来启用框架扩展和替换原创 2021-11-04 14:58:13 · 230 阅读 · 0 评论 -
(三)自定义加载器 (类加载机制 第三篇)
首先一个问题:为什么要自定义类加载器? 我们大家都知道,java内部已经有3大加载器,可以满足大部分类的加载场景了,为什么还要来自定义加载器呢?这个问题,我们来分析一下当前类加载的一些弊端。 非当前classpath下的类,我们当前的类加载器是无法进行加载的,如果在数据库,在远程服务器上的class,等等 我们当前类为了更加的安全,我们需要对其进行加密操作 以上的问题,当前的类加载是无法处理,所以我们需要自己自定义类加载。 那么怎么自定义类加载器呢? 首先,分析ClassLoader类的加载方原创 2021-11-04 14:57:29 · 350 阅读 · 0 评论 -
(二) launcher详解 (类加载机制 第二篇)
sun.misc.Launcher类 sun.misc.Launcher类是不开源的,我们只能通过IDEA反编译看到代码,根据第一篇,我们知道,类加载的神器主要是在Launcher这个类中,这个类是jvm底层,进行类加载的。 JVM启动入口,主要作用是:创建ExtClassLoader 、用ExtClassLoader作为parent去创建AppClassLoader、设置AppClassLoader为当前线程的ContextClassLoader。 Launcher 只是一个封装了虚拟机的执行原创 2021-11-04 14:50:40 · 966 阅读 · 0 评论 -
(一) 类加载过程详解 (类加载机制 第一篇)
当我们用java命令运行某个类的main函数启动程序时,首先需要通过类加载器把主类加载到 JVM。 package com.shendu; public class JvmTest01 { public static final int initData = 666; public int compute() { int a = 1; int b = 2; int c = (a + b) * 10; return c;原创 2021-11-04 14:49:10 · 7092 阅读 · 1 评论