题目:加于不加 while(true)语句有区别吗?什么区别?public class UseGC { /**
* @param args
*/
public static void main(String[] args) { System.out.println("请按Ctrl + C终止程序......");
GcTest obj1 = new GcTest("Object1");
GcTest obj2 = new GcTest("Object1");
GcTest obj3 = new GcTest("Object1"); obj1 = null;
obj2 = null;
obj3 = null;
System.gc();
//while(true);
}}
* @param args
*/
public static void main(String[] args) { System.out.println("请按Ctrl + C终止程序......");
GcTest obj1 = new GcTest("Object1");
GcTest obj2 = new GcTest("Object1");
GcTest obj3 = new GcTest("Object1"); obj1 = null;
obj2 = null;
obj3 = null;
System.gc();
//while(true);
}}
区别在于有while(true);
程序一直处于运行状态不结束而没有 就马上结束掉
obj1,obj2,obj3之前所引用的对象被回收,
调用了被重写了的finallize方法,
想看打印输出吧,没什么的。
但java就是这样,对象在被回收之前,会调用它的finalize方法,
进行一些后续处理。
finalize方法还是依赖GC的。
37109630
通常JVM 不会去主动清理内存,除非感觉内存吃紧时,就你上面代码而言,如果你不加这个while,有可能还没有到该回收时,你的程序就已经结速,所以不会有效果,你加了这个 while会增加你内存占用量,和程序执行时间,就应该会使你测试结果更明显