假设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对象?
不是问题,因为:因为在新分配后不再存在对旧日期对象的引用,因此垃圾收集器应该清理旧对象
我想这不是问题,如果此代码没问题,请建议我。
答案 0 :(得分:4)
GC将收集循环创建的所有垃圾,但是你仍然有一个没有用的无限循环,并且会将你的一个代码带到100%的CPU使用率,没有任何用处,这将迫使GC不断收集无用的垃圾。这对我来说是个问题。
答案 1 :(得分:-3)
我认为此代码可能成为一个问题。
取决于垃圾收集器运行的频率。程序将创建尽可能多的Date对象,并在垃圾收集器运行时删除旧对象。
如果你输入“System.gc();”在d = new Date()之后;那我觉得没问题。