jdk 几个内置的classloader的加载路径
源程序
import java.util.concurrent.locks.LockSupport;
public class ClassloadTest {
public static void main(String[] args) {
LockSupport.park();
}
}
如何分析
-
jps找到对应的pid
-
执行jmap命令
F:\gitee-ckl\all-simple-demo-in-work-1>jmap -dump:live,format=b,file=heap3456.bi n pid然后就拿到了堆转储文件,我这边文件名为heap3456.bin
然后使用mat(eclipse memory analyzer )打开该文件。

这里查出来,就是默认的appclassloader。

上面红框,就是appclassloader的加载路径。
那么,其parent classloader的加载路径呢?
parent为:

bootStrap的呢?
extclassloader的parent为null,看不到了

可以通过如下的demo去查看:
public class HelloWorld {
public static void main(String[] args) {
System.out.print(System.getProperty("sun.boot.class.path"));
}
}
我这边的输出如下:
C:\Program Files\Java\jdk1.8.0_11\jre\lib\resources.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\lib\rt.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\lib\sunrsasign.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\lib\jsse.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\lib\jce.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\lib\charsets.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\lib\jfr.jar;
C:\Program Files\Java\jdk1.8.0_11\jre\classes
其他分析方法
可以使用阿里的arthas试试,我这里就不分析了。