Java ClassLoader相关资料

一、Java ClassLoader概要

  1.Java ClassLoader共分3类:Bootstrap ClassLoader(加载核心类)、Extension ClassLoader(加载扩展类)、App ClassLoader(加载应用程序类);

  2.三类ClassLoader对应不同目录,其中App ClassLoader对应应用程序,目录非固定,其他两个都固定目录;

  3.类加载顺序是自顶向下:Bootstrap ClassLoader——》Extension ClassLoader——》App ClassLoader;

  4.类型:Bootstrap ClassLoader(内嵌在JVM,打印出类型为null)、Extension ClassLoader(继承ClassLoader)、App ClassLoader(继承ClassLoader);

  5.用户可以自定义ClassLoader,只需继承ClassLoader类,许多服务器都定义自己的ClassLoader;

  详细内容可参看:http://blog.csdn.net/xyang81/article/details/7292380

二、Websphere类加载机制

  1.在Java类加载机制上,自定义了自身的ClassLoader;

  2.包括:WebSphere Extensions Classloader(加载was核心类),WebSphere lib/app Class loader和WebSphere "server" Class loader(加载共享类), Application Class loader(应用程序的类加载,并且有2个ClassLoader,分别对应ear和war);

  3.关注重点: Application Class loader,包含2个 Application Module Class loader,分别对应应用程序级别EAR和模块级别WAR;

  4.调整类加载顺序:parent_first和parent_last,分别表示Application Class loader放在类加载书序的最后和最前,也就是是否优先使用父类加载,其中:

    parent_first:jvm类加载器(3个)——》WebSphere Extensions Classloader——》XXX——》Application Class loader;

    parent_last: Application Class loader——》jvm类加载器(3个)——》WebSphere Extensions Classloader——》XXX,可以将应用程序类加载器提到最前;

  5.Application Class loader可以选择使用1个类加载器加载EAR和WAR(共用模式,war包可以看到同ear下其他war包的classpath),也可以选择使用单独的WAR加载器加载WAR包(2个加载器,1个加载ear,1个加载war,war包只能看到自己的classpath);

  6.类查找机制是自底向上,因此下一层的classloader可以访问上一层classloader内的类,相反不行;

  详细内容可参考:http://blog.itpub.net/145274/viewspace-591473/

  如何查看程序类加载情况和顺序:http://blog.csdn.net/zhouyong0/article/details/7970557

posted on 2016-08-18 22:33  KAZMA  阅读(106)  评论(0)    收藏  举报

导航