1

假设线程内的条件为真条件,如下所示

package com;

import java.util.Date;

public class Tester extends Thread {

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

这段代码会不会有问题?

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

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

我想这不会是一个问题,如果这段代码很好,请建议我。

4

2 回答 2

4

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

于 2013-07-26T06:31:15.910 回答
-3

我认为这段代码可能是一个问题。

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

如果你放一个“System.gc();” 在 d = new Date() 之后;那么我认为就没有问题了。

于 2013-07-26T06:31:43.857 回答