我知道 -XX:+HeapDumpOnOutOfMemoryError JVM参数。我也知道 -XX:OnOutOfMemoryError="cmd args;cmd args" ,并且kill -3 <JVM_PID>将请求堆转储。

问题:如何确保我在OutOfMemoryError上首先进行完整的堆转储,然后在转储完成后强制重新启动(或终止)?我最好的选择是-XX:OnOutOfMemoryError="kill -3 %p;sleep <time-it-takes-to-dump>;kill -9 %p"吗?

最佳答案

java -XX:+HeapDumpOnOutOfMemoryError -XX:OnOutOfMemoryError="kill -9 %p" TestApp

JVM将首先转储堆,然后执行OnOutOfMemoryError命令(proof)

07-24 09:25