您的位置:首页 > 编程语言 > Java开发

java类加载的思考

2011-12-10 23:31 246 查看
 

问题From:

    前几天开发一个需求,涉及到industry_center服务化的改造,在预发布验证时,发现服务化的改动并没有起效果,检查发现ops同学已将最新的rpm包部署到预发布机上了,查看服务启动时间发现原来部署后服务没有重启,内存加载的依然是旧版本。因此有一个假设,如果java命令运行一个程序后(类似while循环不会自动退出),删除其java源文件、编译后的class文件,并不会打断其运行。。

实例验证:

测试程序

package collection;

import java.util.Set;
import java.util.TreeSet;

/**
* 类TreeSetTest.java的实现描述:TODO 类实现描述
*
* @author onlyone 2011-12-10 下午11:15:09
*/
public class TreeSetTest {

public static void main(String[] args) {
while (true) {

// TODO Auto-generated method stub

Set set = new TreeSet();
set.add(3.23);
set.add(1.12);
set.add(3.23);
set.add(6.4);
Object[] o = set.toArray();
System.out.println(o[2]);
System.out.println("-------------");
// Long a=null;
// Long b=1L;
// System.out.println(b-a);

}
}

}


进入到class文件目录下

java collection.TreeSetTest   ,,此时有结果输出在控制台

然后删掉class文件



 

发现控制台的结果依然在打印.

 

此时修改TreeSetTest的源文件,重新生成新的class文件,发现的控制台的输出结果没有变。

重新执行java collection.TreeSetTest,输出的是新的结果

 

恢复手动删除的class文件,可采用Clean操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息