java 堆转储命令_java - Java堆转储和关闭 - 什么顺序? - 堆栈内存溢出

如果您使用的是OpenJDK,则可以确定何时运行-XX:OnOutOfMemoryError选项设置的命令。

代码取自OpenJDK源代码。

void report_java_out_of_memory(const char* message) {

static jint out_of_memory_reported = 0;

// A number of threads may attempt to report OutOfMemoryError at around the

// same time. To avoid dumping the heap or executing the data collection

// commands multiple times we just do it once when the first threads reports

// the error.

if (Atomic::cmpxchg(1, &out_of_memory_reported, 0) == 0) {

// create heap dump before OnOutOfMemoryError commands are executed

if (HeapDumpOnOutOfMemoryError) {

tty->print_cr("java.lang.OutOfMemoryError: %s", message);

HeapDumper::dump_heap_from_oome();

}

if (OnOutOfMemoryError && OnOutOfMemoryError[0]) {

VMError err(message);

err.report_java_out_of_memory();

}

}

}

以防简短说明:

首先检查是否设置了HeapDumpOnOutOfMemoryError选项。 在这种情况下运行dump_heap_from_oome()

如果设置了OnOutOfMemoryError选项,则返回第二步,运行report_java_out_of_memory()

因此,如果您使用的是OpenJDK,您的进程将转储内存然后退出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值