任何人都可以在编译并运行以下代码时向我详细解释内部发生的事情......
class ObjTest{
public static void main(String [] args){
while(true){
String str = new String("Hello");
}
}
}
答案 0 :(得分:3)
无限循环的每次迭代都会创建一个新的String实例。
在上一次迭代中创建的实例有资格进行垃圾收集,因此最终是否会出现内存不足错误取决于垃圾收集器是否比循环创建新实例更快地释放这些旧实例。
答案 1 :(得分:0)
"而"条件为真时执行block语句。
你正在过去"真实"使条件永远正确。
永远不会停止
答案 2 :(得分:0)
你有一个无限循环创建一个String对象。在每次迭代中都会创建一个新对象,因此旧对象可用于垃圾收集器。