读书人

将不应用的对象置为NULL可以加快回收吗

发布时间: 2012-10-24 14:15:58 作者: rapoo

将不使用的对象置为NULL可以加快回收吗
一直听说将不用的对象置为NULL,可以加迅被GC回收,但又听见另一种观点说置NULL不会被GC.倒底会不会加速呢,本人不太懂GC的机制,但也可以知道置NULL有没有用,写个代码测试一下就OK了.贴代码:

import java.util.Hashtable;public class LoopObject{public static void main(String[] args){Hashtable<Object, Object> ht;for (int i = 0; i < 100000; i++){ht = new Hashtable<Object, Object>();ht = null;}}}

重新编译后并执行
javac LoopObject.java
执行了三次运行命令,每执行一次,复制记录一下:
java -verbosegc LoopObject

[GC 896K->161K(5056K), 0.0013605 secs]
[GC 1057K->161K(5056K), 0.0004848 secs]
[GC 1057K->161K(5056K), 0.0003503 secs]
[GC 1057K->161K(5056K), 0.0001571 secs]
[GC 1057K->161K(5056K), 0.0001541 secs]
[GC 1057K->161K(5056K), 0.0001685 secs]
[GC 1057K->161K(5056K), 0.0001570 secs]
[GC 1057K->161K(5056K), 0.0001546 secs]
[GC 1057K->161K(5056K), 0.0001561 secs]
[GC 1057K->161K(5056K), 0.0001341 secs]

[GC 896K->161K(5056K), 0.0014766 secs]
[GC 1057K->161K(5056K), 0.0004738 secs]
[GC 1057K->161K(5056K), 0.0003499 secs]
[GC 1057K->161K(5056K), 0.0001562 secs]
[GC 1057K->161K(5056K), 0.0001534 secs]
[GC 1057K->161K(5056K), 0.0001450 secs]
[GC 1057K->161K(5056K), 0.0001547 secs]
[GC 1057K->161K(5056K), 0.0001607 secs]
[GC 1057K->161K(5056K), 0.0001585 secs]
[GC 1057K->161K(5056K), 0.0001300 secs]

[GC 896K->161K(5056K), 0.0013647 secs]
[GC 1057K->161K(5056K), 0.0004726 secs]
[GC 1057K->161K(5056K), 0.0003491 secs]
[GC 1057K->161K(5056K), 0.0001531 secs]
[GC 1057K->161K(5056K), 0.0001437 secs]
[GC 1057K->161K(5056K), 0.0001537 secs]
[GC 1057K->161K(5056K), 0.0001530 secs]
[GC 1057K->161K(5056K), 0.0001282 secs]
[GC 1057K->161K(5056K), 0.0001714 secs]
[GC 1057K->161K(5056K), 0.0001593 secs]

从这次的结果中不难看出,多加了一行置空的代码,还真有点效果,只是不知道这些效果对系统性能有没有什么提高呢

读书人网 >软件架构设计

热点推荐