1

多くの文字列操作を処理するマルチスレッド プログラムがあり、実行の数時間後にメモリが超過し、「java.lang.OutOfMemoryError: Java ヒープ スペース」の問題が発生します。そして、私はすでにメモリ全体を Java プログラム、つまり 16 GB に使用しています。

問題を理解するために次のサンプルプログラムを作成したテストでは、同じ問題を実行しています。文字列ビルダーを数千回再初期化した後、5〜10MB以上のメモリを消費します。誰かがこの問題を克服するのを手伝ってくれますか? .

StringBuilder strObj = new StringBuilder();
for(int i=0; i<50000; i++) {
    strObj = null;
    strObj = new StringBuilder();
}
4

2 に答える 2

1

どのような意味で5〜10MBのメモリを消費しますか?ここではそれだけ割り当てています。Javaは、メモリが必要になるまで、わざわざ再利用することはありません。OutOfMemoryErrorこのタイプのコードではなく、これが原因である可能性はありません。

では、OOMEを引き起こしている種類のコードを実際に表示してみませんか?

于 2012-07-17T19:45:02.817 に答える
0

サポート担当者に感謝します。実際に私の問題は、System.gc()ステートメントを呼び出して手動でガベージ コレクションを行った後に解決されました。

于 2012-07-18T10:21:32.277 に答える