IDEA查看类加载器加载类顺序

编程

在需要运行的类配置中添加该配置,运行时即可打印类加载明细

-verbose:class

源程序代码如下:

import com.sun.crypto.provider.DESKeyFactory;

public class ClassLoadTest1 {

public static void main(String args[]) {

// 启动类加载器,使用C++语言编写,负责加载支撑JVM运行的位于jre的lib目录下的核心类库

System.out.println(String.class.getClassLoader());

// 扩展类加载器,负责加载支撑JVM运行的位于jre的lib目录下ext扩展目录下的jar类包

System.out.println(DESKeyFactory.class.getClassLoader().getClass().getName());

// 应用程序加载器,负责加载classpath路径下的类包,主要是用户自己写的类

System.out.println(ClassLoadTest1.class.getClassLoader().getClass().getName());

// 应用程序加载器

System.out.println(ClassLoader.getSystemClassLoader().getClass().getName());

// 自定义加载器,负责加载用户自定义路径下的类包

System.out.println("方法内引用类加载1=======");

A a = new A();

System.out.println("方法内引用类加载2=======");

B b = null;

System.out.println("方法内引用类加载3=======");

}

}

class A {

}

class B {

}

添加之后运行main方法,控制台打印日志如下:

[Opened C:Program FilesJava8jrelibt.jar]

[Loaded java.lang.Object from C:Program FilesJava8jrelibt.jar]

......// 省略一大批日志

[Loaded sun.launcher.LauncherHelper$FXHelper from C:Program FilesJava8jrelibt.jar]

[Loaded sun.nio.cs.US_ASCII$Decoder from C:Program FilesJava8jrelibt.jar]

[Loaded java.lang.Class$MethodArray from C:Program FilesJava8jrelibt.jar]

[Loaded java.lang.Void from C:Program FilesJava8jrelibt.jar]

null

[Loaded sun.security.util.ManifestDigester from C:Program FilesJava8jrelibt.jar]

[Loaded sun.security.util.ManifestDigester$Position from C:Program FilesJava8jrelibt.jar]

[Loaded sun.security.util.ManifestDigester$Entry from C:Program FilesJava8jrelibt.jar]

......// 省略一大批日志

[Loaded sun.security.util.ManifestEntryVerifier$SunProviderHolder from C:Program FilesJava8jrelibt.jar]

[Loaded javax.crypto.SecretKeyFactorySpi from C:Program FilesJava8jrelibjce.jar]

[Loaded com.sun.crypto.provider.DESKeyFactory from file:/C:/Program%20Files/Java8/jre/lib/ext/sunjce_provider.jar]

sun.misc.Launcher$ExtClassLoader

sun.misc.Launcher$AppClassLoader

sun.misc.Launcher$AppClassLoader

方法内引用类加载1=======

[Loaded classLoad.A from file:/E:/MyLearn/out/production/JavaVitualMachine/]

方法内引用类加载2=======

方法内引用类加载3=======

[Loaded java.lang.Shutdown from C:Program FilesJava8jrelibt.jar]

[Loaded java.lang.Shutdown$Lock from C:Program FilesJava8jrelibt.jar]

Process finished with exit code 0

 

以上是 IDEA查看类加载器加载类顺序 的全部内容, 来源链接: utcz.com/z/510512.html

回到顶部