易截截图软件、单文件、免安装、纯绿色、仅160KB

详解Java 中的类加载机制

首先明确下类加载的定义,类加载实际上就是将java class文件加载到java 虚拟机中,根据JVM规范的定义,一般分为2种类型的类加载,一种是启动类加载器,另外一种是用户自定义类加载器。
一 启动类加载器。
启动类加载器也有以下三种:Bootstrap ClassLoader、AppClassLoader和ExtClassLoader,这三种classloader在java虚拟机启动时会相继创建,首先启动时加载BootstrapClassLoader,然后BootstrapClassLoader加载ExtClassLoader,然后ExtClassLoader加载AppClassLoader,他们之间是由父子关系的,也就是通过父的classloader加载子classloader.下边分别介绍下这三种不同的classloader。
BootstrapClassLoader比较特殊,实际上它不是 java.lang.ClassLoader的子类,是C++编写的,java虚拟机启动时第一个执行,它是java虚拟机自带的装载器,用来装载核心类库,也就是java.lang.*,因为是c++编写的,所以在运行时,我们无法获取BootstrapClassLoader的任何信息。
ExtClassLoader的父亲是BootstrapClassLoader,但是在java运行时环境中,由于无法获取BootstrapClassLoader的任何信息,因此我们通过获取ExtClassLoader的parent的方式查看其父亲,会发现得到是null。ExtClassLoader的职责是负责加载JRE的扩展目录(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系统属性指定的)中JAR的类包。
AppClassLoader的父亲是ExtClassLoader,它的主要职责是加载用户应用系统所需要的类,如用户系统自己编写的class,或用户系统导入的其他jar架包。
 
下边用代码测试下这三种类加载器:
/**
 * 测试类加载机制
 * @author Administrator
 *
 */
public class TestLoader
{
    /**
     * 分别加载三种不同类型的class类检验其用到的加载器。
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception
    {
       // 获取AppClassloader
       ClassLoader appClassloader = ClassLoader.getSystemClassLoader();
       // 获取ExtClassloader,也就是AppClassloader的父亲
       ClassLoa


相关文档:

java clone

java clone
文章分类:Java编程 关键字: java clone
1.java里的clone分为:
A:浅复制(浅克隆): 浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。
b:深复制(深克隆):深复制把要复制的对象所引用的对象都复制了一遍。
Java中对象的克隆,为了获取对象的一份拷贝,我们可以利用Object类的clone()方法。必须要 ......

JAVA 文件下载时的文件名乱码解决

if(null != agent && -1 != agent.indexOf("MSIE")){ 
                    filename = URLEncoder.encode(filename
,"UTF8"); 
         }else if ......

java日期技巧总结

计算某一月份的最大天数
Calendar time=Calendar.getInstance();
time.clear();
time.set(Calendar.YEAR,year); //year 为 int
time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0          
int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);/ ......

Java程序的问题

这是一段我参考的Java程序字段,已经调试可以通Eclipse运行了,代码有点看不懂,哪位高手可以帮我做个中文注释?谢谢啦~~
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import ja ......

传智播客java学习 sql对象

我今天学习了Oracle数据库如何修改表的知识,是冯威老师讲的课,我做了简单的记录:
1.在表中插入新的列:
  alter table tablename
  add city varchar(2) default 'rr' //赋默认值
2.修改表中的列:
  alter table tablename
  modify city varchar(20)
3.删除表中的列:
  alter t ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号