java.lang.OutOfMemoryError の処理: 実践的なアプローチ
java.lang.OutOfMemoryError をキャッチしないことが推奨されているにもかかわらず、現実的な選択になる可能性があります。この記事では、これらのシナリオを検討し、メモリ割り当てを行わずにこのエラーを処理するためのガイドラインを提供します。
OutOfMemoryError をキャッチする理由
OutOfMemoryError をキャッチする主な理由は、正常なシャットダウンを有効にすることです。メモリが枯渇すると、通常、JVM は突然終了します。このエラーをキャッチすることで、アプリケーションは制御されたシャットダウンを開始し、リソースを解放して原因をログに記録できます。
処理中のメモリ割り当ての対処
OutOfMemoryError 中のさらなるメモリ割り当てを防止するには取り扱いには、次の事項を遵守することが不可欠ですプラクティス:
使用例
次のコード スニペットは、 OutOfMemoryError:
import java.util.logging.Level; import java.util.logging.Logger; public class OutOfMemoryHandler { private static final Logger logger = Logger.getLogger("application"); public static void main(String[] args) { try { // Code that may encounter an OutOfMemoryError } catch (OutOfMemoryError e) { // Zero-arg supplier to avoid memory allocation logger.log(Level.SEVERE, "Out of memory error caught", () -> getErrorStatistics()); // Safe shutdown code } } private static String getErrorStatistics() { // Diagnostic data gathered ahead of time... return "..."; } }
これらのガイドラインに従うことで、アプリケーションは java.lang.OutOfMemoryError を適切にキャッチして処理できるため、制御されたシャットダウンが可能になり、貴重な診断情報が提供されます。
以上が追加のメモリを割り当てずに Java の OutOfMemoryError を適切に処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。