![](/img/trans.png)
[英]jvm: is it possible to find out process is shutting down due to an OOM while in the shutdown hook?
[英]How a JVM dies due to an OOM exception?
我查看了很多地方,但找不到 JVM 因 OOM 而死的原因。 我不考慮操作系統殺手。 為了提供一些背景信息,我有一個 Java 應用程序正在運行,它開始用完 memory,我知道它可能會在 JVM 開始殺死線程后繼續存在。
但是,我已經看到它在第一次 OOM 后運行了 30 多分鍾,並且在這個無響應的 state 中繼續運行,它可能會或不會恢復。 但是,在復制相同的步驟以觸發 OOM 后,我也看到它在第一次 OOM 之后立即崩潰。 系統在 memory 方面很好,問題只是在 JVM 方面。 所以,我的問題是:
從技術上講, OutOfMemoryError
是“另一個可拋出的”,因此它可能會也可能不會殺死它被拋出的線程,具體取決於該線程如何處理其異常。
例如,如果它在最低級別有一個catch (Error e)
塊,那么它可以在仍然運行的同時“承受”很多問題。
因此,如果您的OutOfMemoryError
僅在優雅地處理此類錯誤的線程中拋出,那么您的系統可以繼續正常工作。
但這也是OutOfMemoryError
的 2 個不尋常的屬性發揮作用的地方:
OOME
變得異常困難。所以tl;dr對您的問題的回答是:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.