是否可以监视遇到OOM错误的Java进程?

时间:2017-01-12 12:02:10

标签: java out-of-memory

我有一个使用jsl作为Windows服务运行的java进程。 由于某种原因,它经历了一个内存错误。 这个过程仍在运行,我想知道,在我停止服务之前,是否有办法分析OOM发生的原因?

提前致谢。 盖

1 个答案:

答案 0 :(得分:1)

不幸的是,你无法将JVM中的状态解除到OOME发生的那一刻。您可以使用jmap获取heapdump进行分析。这应该让你知道什么是占用大部分内存现在

我还强烈建议您使用+XX:+HeapDumpOnOutOfMemoryError参数运行该过程。当应用程序发现OOM错误时,这将触发自动堆转换。在我看来,应该使用此选项启动所有Java应用程序,否则无法调查OOM错误,并且它不会在应用程序上添加任何开销(只要没有OOM错误)。