zoukankan      html  css  js  c++  java
  • JVM源码分析--ClassLoader类加载器

    本人原创,转载请注明出处:https://www.cnblogs.com/javallh/p/10224187.html 

    1、JDK已有类加载器:

     BootStrap ClassLoader (启动类加载器)  运行的是rt.jar   源码由C++编写,所以在java中读取的时候以null表示

     Extension ClassLoader extends ClassLoader 运行的是%JAVA_HOME%/lib/ext/*.jar

     App ClassLoader extends ClassLoader 运行的是ClassPath

    2、自定义类加载器 extends ClassLoader

     默认的加载顺序:自定义类加载器--App ClassLoader--Extension ClassLoader--BootStrap ClassLoader      (遵循双亲委派模型,并无继承关系!下面可以看源码)

    程序体现:

    package com.cloud.rest;
    
    import lombok.var;
    import org.junit.Test;
    
    public class ClassLoaderTest {
    
        @Test
        public void classLoderTest() {
            var loader = ClassLoaderTest.class.getClassLoader();
            while (loader != null) {
                System.out.println(loader);
                loader = loader.getParent();
            }
            System.out.println(loader);
        }
    
    
    }

    如下效果分析:

    sun.misc.Launcher$AppClassLoader@18b4aac2
    sun.misc.Launcher$ExtClassLoader@3d04a311
    null

    加载机制可以体现,为null的输出是因为加载BootStrap ClassLoader的时候由于BootStrap无法读取,所以使用null来表示,也可以这样说:如果某个类的父类加载器输出为null,则表示它的父类加载器为BootStrap ClassLoader,(注意:此时的父类为双亲委派模型的概念,并不是类的继承

  • 相关阅读:
    [hihocoder1509][异或排序]
    [hdu6148][Valley Numer]
    [hdu2089][不要62]
    [luoguU42591][小T的绝对值]
    [luogu2073][送花]
    [bzoj4709][柠檬]
    [luogu2114][起床困难综合症]
    [codevs3342][绿色通道]
    [luoguU42591][小T的面试题]
    [noip][2014]
  • 原文地址:https://www.cnblogs.com/javallh/p/10224187.html
Copyright © 2011-2022 走看看