问题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操作