欢迎使用我的 在线工具

小D

读历史、看小说、写程序都是我所爱。技术不好,头脑不灵光,靠的是兴趣。
随笔 - 35, 文章 - 25, 评论 - 13, 引用 - 0
数据加载中……

Java类加载器的类加载机制??

      关于Java类加载器,我们都知道Java虚拟机有很多的类加载器,什么什么哦,这里说EXT 加载器,主要是加载EXT中的jar包中的类,而系统类加载器是我们在代码中使用的类的加载,很显然EXT加载器在JVM启动的时候就已经加载了,在整个JVM中只会存在一个EXT加载器加载的类,而我们使用系统类加载器价值的类,再我们重新调用该类的时候也许会重新加载,或许不会,谁知道呢?起码我知道domino代理每次运行都会使用系统加载器加载该类,而EXT只会在代理JVM启动的时候加载一次,似乎不符合我们以前学的知识,谁知道IBM是怎么做的。

     对于EXT加载器加载的类,和系统类加载的类,两者是不相同的,也就是加载了两个该类的Class对象,比如说ext jar包中的com.you.Test类和我们自定义的com.you.Test类会在使用的时候加载两个类Class对象,他们生成的对象是不相等的。

    如果我们这边定义了一个com.you.Test类,然后ext jar包里面有一个类用来持有该类对象(暂时叫test),OK,当我们的加载的com.you.Test的Class类对象被回收后,我们将无法把test对象转化成com.you.Test对象了,使用 test instanceof com.you.Test也会返回false,这是因为我们没有一个全局的com.you.Test的Class对象,当我们的程序再一次加载com.you.Test的Class对象时,test 已经不是这个Class对象的实例了。

   完全的确定一个对象,是通过 类加载器+包名+类名,不同的加载器加载的类,哪怕包名和类名完全一致,他们也不是同一种类型,因为不同的类加载器分别加载了该类,生成了不同的Class对象。

   思路混乱,不知所云,但也算有感

posted on 2011-04-02 11:15 vagasnail 阅读(170) 评论(0)  编辑  收藏 所属分类: java


只有注册用户登录后才能发表评论。


网站导航: