因为runtime.gc();调用后并不一定会马上执行。
答案1、
执行完tf = null;这以后,表明对象tf可以被回收,并在调用runtime.gc();以后被回收,因此finalize()只被执行了一次,所以。
答案2、
执行完tf = null;这以后,表明对象tf可以被回收,且系统在这时回收,调用一次finalize(),接着又人工调用了runtime.gc();finalize()又被执行了一次,所以。
答案3、
同上面差不多,只是很“巧”而已。————————————————————————
如有不对之处,。。还请大家指正。 :)
————————————————————————
答案1、
执行完tf = null;这以后,表明对象tf可以被回收,并在调用runtime.gc();以后被回收,因此finalize()只被执行了一次,所以。
答案2、
执行完tf = null;这以后,表明对象tf可以被回收,且系统在这时回收,调用一次finalize(),接着又人工调用了runtime.gc();finalize()又被执行了一次,所以。
答案3、
同上面差不多,只是很“巧”而已。————————————————————————
如有不对之处,。。还请大家指正。 :)
————————————————————————
能给讲一下
Runtime runtime = Runtime.getRuntime();
runtime.gc();
的功能吗?
因此这一句就是实例化Runtime类。
Runtime runtime = Runtime.getRuntime();
Runtime类有一个gc()方法,这个方法要求JVM执行垃圾回收,但不一定会马上执行,什么时候执行由系统决定。