java类加载过程(java类加载过程)
Java加载类的机制是怎样的?
sun。com/developer /TechTips/2000/tt1027。html
Writing Your Own Class Loader
The loadClass method of the ClassLoader superclass takes care of the delegation to
the parent and calls findClass only if the class hasn’t already been loaded and
if the parent class loader was unable to load the class。
什么是java类加载机制?
getParent方法返回的是上级类加载器
ExtClassLoader,但是,从类文件的观念看,他们不是继承关系,只能看做引用关系
在加载的时候,如果在我这一层,首先会去找父亲,看看他加载了没,父亲再找父亲的父亲加载了没,
没有才一步步下来,最后由我自己加载,这里讲父亲,不是父类!,有点子债父还的意思
好处是安全,因为classLoader也是个类,所以如果不用这个机制,想解析一个很简单的类,写病毒的人可以自己写个classLoader用来解析这些本来系统自带的ClassLoader就可以解析的类在里面加点病毒代码,这样解析一些简单的类的时候,它会去找加载器,找到了我自己写的病毒Classloader,如果加载的话就出事了,java这个体系,它即使找到了病毒Classloader,也不会立刻使用,它会往上找如果他的长辈(系统自带的能解析这个类的ClassLoader)能加载,就由系统解决了,就用不上这个病毒ClassLoader类了,所以说,比较安全!。
java中类的加载是在什么时候做的
楼上的负责一点好么,类加载是在编译的时候?加载一个类需要用到加载器,
你程序都没运行,jvm都没启动,哪来的加载器,你拿什么去加载一个类?
类加载的时候是运行程序时 它就加载了,至于编译,你用IDE,是你一保存,它就给编译好了。实例化的时候,
如:class A
A a = new A();这个时候会被加载这个问题java的比较核心的一个难题,我就针对问题做简要回答,不做深入讨论了:
1、编译和运行概念要搞清:编译即javac的过程,负责将.java文件compile成.class文件,主要是类型、格式检查与编译成字节码文件,而加载是指java *的过程,将.class文件加载到内存中去解释执行,即运行的时候才会有加载一说。
2、类的加载时机,肯定是在运行时,但并不是一次性全部加载,而是按需动态,依靠反射来实现动态加载,一般来说一个class只会被加载一次,之后就会从jvm的class实例的缓存中获取,谁用谁取就可以了,不会再去文件系统中加载.class文件了。
明白1,2点就够了,再深入要等一段才能明白了。
java类的加载顺序??
父类到子类
静态到非静态java类加载顺序: 先父类的static成员变量-》子类的static成员变量-》父类的成员变量-》父类构造-》子类成员变量-》子类构造。 static out是方法,方法只有再调用的时候才执行里面的代码。 这个说的很对运用的时候用java -verbose 加你的包名,类名classpath
jdk\lib\jre\ext
jdk\lib问题没有描述清楚,别人怎么回答你呀。
还没有评论,来说两句吧...