1

以下に示すように、Thread while 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 オブジェクトが作成されるため??

問題ではない理由: 新しい割り当て後に古い日付オブジェクトへの参照が存在しなくなったため、ガベージ コレクターは古いオブジェクトをクリーンアップする必要があります。

これは問題ではないと思います。このコードでよろしければ教えてください。

4

2 に答える 2

4

GC はループが作成するすべてのガベージを収集しますが、何の役にも立たず、コードの 1 つを 100% の CPU 使用率にして何の役にも立たない無限ループが残っているため、GC は無用のジャンクを常に収集することになります。 . それは私にとってかなりの問題です。

于 2013-07-26T06:31:15.910 に答える
-3

このコードが問題になる可能性があると思います。

ガベージ コレクタの実行頻度によって異なります。プログラムはできるだけ多くの Date オブジェクトを作成し、古いオブジェクトはガベージ コレクターの実行時に削除されます。

「System.gc();」を入れると d = new Date(); の後 それなら問題ないと思います。

于 2013-07-26T06:31:43.857 に答える