我知道 -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)。