【问题标题】:OutOfMemoryError - how to kill the JVM after the hprof createdOutOfMemoryError - 创建 hprof 后如何杀死 JVM
【发布时间】:2012-03-05 07:38:21
【问题描述】:

我希望我的 java 在捕获 OutOfMemoryError 时退出,我正在使用 -XX:+HeapDumpOnOutOfMemoryError 转储 hprof 文件。
我不能使用kill -9 <pid>,因为在转储hprof 文件时JVM 需要启动,有没有办法在创建hprof 文件后停止JVM?

需要明确的是,我使用的是 Sun 的 JVM 版本 6。

【问题讨论】:

    标签: java jvm out-of-memory sun hprof


    【解决方案1】:

    This page 似乎暗示你可以结合-XX:+HeapDumpOnOutOfMemoryError-XX:OnOutOfMemoryError="kill -9 %p"

    大概是在运行“On...”命令之前创建了堆转储。 (应该很容易拼凑一些东西来测试它。)

    【讨论】:

    • 我结合了这两个 JVM 参数,您的假设并不完全正确,堆转储创建与“On...”命令并行,在我的情况下,杀死发生在完全创建转储之前,死亡JVM 在创建转储过程中导致 hprof 损坏。
    • 好的,所以 Oracle 页面具有误导性。但是您仍然应该能够使用该行为来获得所需的行为。
    • @shaiis.com 这个解决方案有效吗?这 2 个参数一起工作是否正确?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 2021-10-19
    • 2017-08-13
    • 1970-01-01
    相关资源
    最近更新 更多