最近在忙毕业设计,我的题目是《JAVA CLASS LOADING技术研究》。以前没怎么研究过虚拟机,在网上查阅了一下相关的资料。但是还是有些地方不是很理解。特来求助。1.类的加载。这几个字到底该怎么理解呢?是发生在编译的过程中,还是在运行的过程中?类的加载,是指一个对象在创建的时候“加载”类这个模型而创建出一个对象吗?2.关于CLASSLOADER.类的加载器从出生到灭亡,是怎样一个过程呢?跟类的加载有什么联系?怎么理解到一起去?3.如何实例一个CLASSLOADER?刚刚接触,还望高手指点。
很想和你交流一下,
1.类的加载是发生在类的运行中的,与类的编译编译过程没有关系。
2.在JVM中,每一个类都会被classloader加载。包括类加载器本身。还没弄明白的是:
1.如果说类的加载与对象的实例化没有什么必然的联系,那么,类的加载是发生在第一个对象实例化之前吗?
2.加载器的工作是在什么时候发生的?Bootstrap是怎么工作的?
3.我们自己做一个类的加载器,到底有什么意义呢?
这是肯定的,在成功new出一个对象之前,对应的类必然已经成功加载了2.加载器的工作是在什么时候发生的?Bootstrap是怎么工作的?
参见第1条,以下行为会导致一个类被加载:
a.第一次访问这个类的静态成员或静态方法
b.第一次new这个类的对象
注意上面说的"这个类"也包括该类所处继承链上所有的衍生类,比如B继承自A,在第一次new一个B的时候,如果B类未被加载,则会加载B,同时如果A类也未被加载,还会加载A3.我们自己做一个类的加载器,到底有什么意义呢?
加载器,还是构造器?
先把<<深入Java虚拟机(原书第2版)>>这书买回来看完
中文版地址:
http://www.china-pub.com/computers/common/info.asp?id=14719Bill Venners维护的网站:
http://www.artima.com/insidejvm/resources/再看看:
The JavaTM Virtual Machine Specification:
http://java.sun.com/docs/books/jvms/second_edition/html/VMSpecTOC.doc.html再到OpenJDK主页: https://openjdk.dev.java.net/
把javac、hotspot源码下下来慢慢看。