类加载器:把类(class)装载进内存

类加载器:把类(class)装载进内存

类缓存机制:类加载器可以查找类,类被加载到类加载器中会被维持加载(缓存)一段时间.JVM的GC(垃圾回收器)可以回收这个class对象
java文件运行全过程
我们可以操作的,一般用到的是系统加载器.有的显示是AppClassloader
SystemClassloader


引导类加载器(根加载器)是基本,不能直接获取

负责java核心类库(rt.jar),c++编写
rt.jar包在jre运行环境下可以找到
rt.jar
里面保存了基本的jdk包和类
util


获取系统类加载器(我们自己使用的加载器)

package com.li.changGe.reflection.classloader;

public class ClassLoaderDemo01 {
  public static void main(String[] args) throws ClassNotFoundException {

    /**
     * 获取系统类加载器(我们自己使用的加载器),之上是扩展类加载器
     * 最后还有引导类加载器:一般为null
     */
    ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
    ClassLoader parent = systemClassLoader.getParent();
    ClassLoader parent1 = parent.getParent();
    /**
     * sun.misc.Launcher$AppClassLoader@18b4aac2(AppClassLoader我们自己的系统类加载器)
     * sun.misc.Launcher$ExtClassLoader@14ae5a5(ExtClassLoader扩展类加载器)
     * null(再往上就是引导类加载器,我们不能直接获取,所以为null)
     */
    System.out.println("系统类加载器"+systemClassLoader+"\n"+parent+"\n"+parent1);

    /**
     * 获取我们的类,和官方的类的类加载器
     * 官方的一般由引导类加载器完成
     */
    ClassLoader classLoader = Class.forName("com.li.changGe.reflection.pojo.User").getClassLoader();
    System.out.println("我们自己的类的类加载器"+classLoader);

    classLoader = Class.forName("java.lang.Object").getClassLoader();
    System.out.println("官方Object类的类加载器"+classLoader);
//--------------------------------------------------------------------
    /**
     * System.getProperty()获取指定的系统属性
     * java.class.path获取系统类加载器可以加载的路径
     */
    /**
     * D:\JAVA\jdk1.8\jre\lib\charsets.jar;
     * D:\JAVA\jdk1.8\jre\lib\deploy.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\access-bridge-64.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\cldrdata.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\dnsns.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\jaccess.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\jfxrt.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\localedata.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\nashorn.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\sunec.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\sunjce_provider.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\sunmscapi.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\sunpkcs11.jar;
     * D:\JAVA\jdk1.8\jre\lib\ext\zipfs.jar;
     * D:\JAVA\jdk1.8\jre\lib\javaws.jar;
     * D:\JAVA\jdk1.8\jre\lib\jce.jar;
     * D:\JAVA\jdk1.8\jre\lib\jfr.jar;
     * D:\JAVA\jdk1.8\jre\lib\jfxswt.jar;
     * D:\JAVA\jdk1.8\jre\lib\jsse.jar;
     * D:\JAVA\jdk1.8\jre\lib\management-agent.jar;
     * D:\JAVA\jdk1.8\jre\lib\plugin.jar;
     * D:\JAVA\jdk1.8\jre\lib\resources.jar;
     * D:\JAVA\jdk1.8\jre\lib\rt.jar;
     * E:\JAVA\JavaSE\11多线程\out\production\12注解和反射;
     * D:\IDEA\IntelliJ IDEA 2020.3.1\lib\idea_rt.jar
     */
    String property = System.getProperty("java.class.path");
    System.out.println("系统类加载器可以加载的路径"+property);

  }

}

classloader

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

helloses

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值