エラー java.lang.OutOfMemoryError: GC オーバーヘッド制限を超えました 質問する

エラー java.lang.OutOfMemoryError: GC オーバーヘッド制限を超えました 質問する

テストを実行すると、次のエラー メッセージが表示されますJUnit

java.lang.OutOfMemoryError: GC overhead limit exceeded

が何であるかは分かっていますOutOfMemoryErrorが、GC オーバーヘッド制限とは何を意味しますか? これを解決するにはどうすればよいでしょうか?

ベストアンサー1

このメッセージは、何らかの理由でガベージ コレクターが過剰な時間 (デフォルトではプロセスの全 CPU 時間の 98%) を費やしており、実行ごとにほとんどメモリが回復されていない (デフォルトではヒープの 2%) ことを意味します。

これは事実上、プログラムが進行を停止し、常にガベージ コレクションのみを実行していることを意味します。

アプリケーションが何もせずに CPU 時間を消費するのを防ぐために、JVM はこれをスローしてError問題を診断する機会を提供します。

私が見た中で、このようなことが起こる稀なケースは、すでにメモリが非常に制限されている環境で、何らかのコードが大量の一時オブジェクトと大量の弱参照オブジェクトを作成していた場合です。

さまざまな Java バージョンで利用可能で、この特定の問題に関するセクションが含まれている Java GC チューニング ガイドを確認してください。

おすすめ記事