日期:2014-05-20  浏览次数:20642 次

关于自定义的classloader的问题。
类的加载过程,就是将.class文件中的二进制数据读取到内存中的过程,那么,这个过程完成的最终产物是什么呢?
                也就是说,JVM把类都加载到哪里去了?是存放到某个特定的变量里?还是在内存中以另一种java语言之外的形势存在?因为在classloader里,好几个关键性的属性和方法,都是native的。
                在您给的那段代码中,类的加载是存储到自定义的一个变量数组中。如果这样的话,那加载本地的类(ri.jar里的)也都加载到我们自己定义的这个变量数组里吗?我感觉应该不是这样的。但又不知道到底是怎么回事。
                还有一个问题,就是,我们如何应用我们自定义的加载器呢?也就是如何显现的调用的呢?JVM是自动调用类加载器的,那我们要重写JVM的代码才可以实现吗?结合上一个问题,我们自定义加载的类和JVM加载的类是放在一起的吗?

------解决方案--------------------
这么多问题..自己先看书吧
------解决方案--------------------
类的加载过程,就是将.class文件中的二进制数据读取到内存中的过程,那么,这个过程完成的最终产物是什么呢?

内存中。最终产物-〉类的说明(类名,methods,fields ,父类,子类关系)


还有一个问题,就是,我们如何应用我们自定义的加载器呢?也就是如何显现的调用的呢?JVM是自动调用类加载器的,那我们要重写JVM的代码才可以实现吗?结合上一个问题,我们自定义加载的类和JVM加载的类是放在一起的吗?
----------------
jvm,从来我都不敢碰,这里也没有听说那个大虾自己写了个jvm,

jvm只会自动加载 相关路径上的jar,class文件,而不是所有,如果是不在相应的目录里面的话,那么必须显示加载

我们自定义加载的类和JVM加载的类是放在一起的吗? 二者不是在一个权限级别上,其他的好像没什么区别。