当前位置: 首页 >> Java >> java之jvm类加载器 >> 正文

java之jvm类加载器

11个月前 (09-28)     作者:4869     分类:Java     阅读次数:2846     评论(0)    文章页统计代码

一)JVM类加载器

/**
 * @项目名称 longlonggo-sample
 * @文件名称 ClassLoadTest.java  版本号:1.0
 * @创建日期 2018年9月27日 
 * @创建作者 me@longlonggo.com
 */
package classload;

import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;

/**
 * 说明: jvm类加载器
 * 
 * @version 1.0
 * @author me@longlonggo.com
 *
 */
public class ClassLoadTest2 {

    public static void main(String[] args) throws IOException {
        /******************************* 【1】系统类加载器 *******************************/
        ClassLoader systemLoader = ClassLoader.getSystemClassLoader();
        // 系统加载器对象:sun.misc.Launcher$AppClassLoader@18b4aac2
        System.out.println("系统加载器:" + systemLoader);
        // 系统加载器加载路径,程序运行的物理路径
        Enumeration<URL> eml = systemLoader.getResources("");
        while (eml.hasMoreElements()) {
            System.out.println("系统加载器路径:" + eml.nextElement());
        }

        
        /******************************* 【2】扩展类加载器 *******************************/
        // 获取 系统类加载器的父加载器,即扩展类加载器对象
        ClassLoader parentLoader = systemLoader.getParent();
        // 扩展类加载器对象:sun.misc.Launcher$ExtClassLoader@5fd0d5ae
        System.out.println("扩展类加载器对象:" + parentLoader);
        System.out.println("扩展类加载器路径:" + System.getProperty("java.ext.dirs"));

        
        /******************************* 【3】引导类加载器 *******************************/
        // 负责加载java的核心类,它实际上不是 java.lang.ClassLoader的子类,而是由JVM自身实现的
        ClassLoader parent2Loader = parentLoader.getParent();
        System.out.println("原始加载器对象:" + parent2Loader);
        URL[] urls = sun.misc.Launcher.getBootstrapClassPath().getURLs();
        for (int i = 0; i < urls.length; i++) {
            System.out.println("原始加载器核心类库:" + urls[i].toExternalForm());
        }
        
        // 内容输出如下:
        // 系统加载器:sun.misc.Launcher$AppClassLoader@2a139a55
        // 系统加载器路径:file:/C:/workspace/longlonggo-sample/target/classes/
        
        // 扩展类加载器对象:sun.misc.Launcher$ExtClassLoader@5fd0d5ae
        // 扩展类加载器路径:C:\Program Files\Java\jdk1.8.0_181\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
        
        // 原始加载器对象:null
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/resources.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/rt.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/sunrsasign.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/jsse.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/jce.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/charsets.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/lib/jfr.jar
        // 原始加载器核心类库:file:/C:/Program%20Files/Java/jdk1.8.0_181/jre/classes
    }
}

注:本文章参考:

http://www.blogjava.net/lhulcn618/archive/2006/05/25/48230.html

http://www.cnblogs.com/jasonstorm/p/5663864.html

除非注明,发表在“石马人山的博客”的文章『java之jvm类加载器』版权归4869所有。 转载请注明出处为“本文转载于『石马人山的博客』原地址http://longlonggo.com/post/410.html
文章页分享代码

评论

发表评论   

昵称*

E-mail*(建议输入,以便收到博主回复的提示邮件)

网站