在具有相同引用的true条件下在Thread内创建一个Object

时间:2013-07-26 06:27:01

标签: java

假设Thread内的条件为true,如下所示

package com;

import java.util.Date;

public class Tester extends Thread {

    public void run() {
        Date d = new Date();
        while(true)
        {   
              d = new Date();
        }
    }
}

这段代码是不是问题?

问题因为:因为它会创建太多Date对象?

不是问题,因为:因为在新分配后不再存在对旧日期对象的引用,因此垃圾收集器应该清理旧对象

我想这不是问题,如果此代码没问题,请建议我。

2 个答案:

答案 0 :(得分:4)

GC将收集循环创建的所有垃圾,但是你仍然有一个没有用的无限循环,并且会将你的一个代码带到100%的CPU使用率,没有任何用处,这将迫使GC不断收集无用的垃圾。这对我来说是个问题。

答案 1 :(得分:-3)

我认为此代码可能成为一个问题。

取决于垃圾收集器运行的频率。程序将创建尽可能多的Date对象,并在垃圾收集器运行时删除旧对象。

如果你输入“System.gc();”在d = new Date()之后;那我觉得没问题。