标签:java 虚拟机 classloader 类加载器 双亲委派模型
个人学习整理,如有不足之处,请不吝指教。转载请注明:@CSU-Max
public void test()
{
ClassLoader cl = getClass().getClassLoader();
System.out.println(cl.toString());
if (cl != null)
{
cl = cl.getParent();
System.out.println(cl.toString());
}
}没有自己定义的类加载器时 有自己定义的类加载器时
protected Class<?> loadClass(String name, boolean resolve)
throws ClassNotFoundException
{
synchronized (getClassLoadingLock(name)) {
// 首先判断请求的类是否已经被加载过了
Class c = findLoadedClass(name);
if (c == null) {
long t0 = System.nanoTime();
//如果没有被加载,接着就检查双亲类加载器是否存在
try {
if (parent != null) {
//如果双亲类加载器存在,就调用其loadClass方法
c = parent.loadClass(name, false);
} else {
//如果不存在双亲类加载器,就检查是否使用启动类加载器加载该类
c = findBootstrapClassOrNull(name);
}
} catch (ClassNotFoundException e) {
}
if (c == null) {
long t1 = System.nanoTime();
//如果依旧不能被加载,则调用自身的findClass来进行类加载
c = findClass(name);
}
}
if (resolve) {
resolveClass(c);
}
return c;
}
}最近在看 java 虚拟机这一块,将自己的一些学习心得记录下来,分享给大家,多多指教。
***************************************************************************
* 转载请注明出处: @CSU-Max http://blog.csdn.net/csu_max *
***************************************************************************
标签:java 虚拟机 classloader 类加载器 双亲委派模型
原文地址:http://blog.csdn.net/csu_max/article/details/26405341