Java后期内存分析

Java后期内存分析,java,Java,我很好奇是否有一种方法可以分析java程序的内存使用情况。我的代码由于OutOfMemory错误而崩溃,所以我想看看到底是什么在使用它。如果有帮助的话,我会使用Intellij IDEA,但我不能真正调试它,因为我使用的测试用例是txt文件,我认为IDEA没有办法在运行程序时重新路由标准输入。有几种方法 Heapdump(内存): 这些都是手动调用的,您可以根据需要生成文件。当您想了解应用程序在一段时间内的工作方式时,此功能非常有用 在Java过程中,您可以设置这些变量,使其在检测OoO错误时自

我很好奇是否有一种方法可以分析java程序的内存使用情况。我的代码由于OutOfMemory错误而崩溃,所以我想看看到底是什么在使用它。如果有帮助的话,我会使用Intellij IDEA,但我不能真正调试它,因为我使用的测试用例是txt文件,我认为IDEA没有办法在运行程序时重新路由标准输入。

有几种方法

Heapdump(内存):

这些都是手动调用的,您可以根据需要生成文件。当您想了解应用程序在一段时间内的工作方式时,此功能非常有用

在Java过程中,您可以设置这些变量,使其在检测OoO错误时自动执行:

+HeapDumpOnOutOfMemoryError
更多信息:

现在,所有这些文件都可以通过MAT读取:

您还可以使用SDK附带的Java VisualVM读取线程转储:

heapdump将帮助您分析内存泄漏、堆问题和垃圾收集器问题。通过线程转储,您可以查看是否阻塞了线程或大量IO操作导致服务器停止。(通常有很多日志和电话)

最后,MAT在读取诸如4GB或更大的堆时可能会遇到一些问题。我还经常使用IBM heap analyzer:

我通常喜欢分析这类问题。
祝你好运

有几种方法

Heapdump(内存):

这些都是手动调用的,您可以根据需要生成文件。当您想了解应用程序在一段时间内的工作方式时,此功能非常有用

在Java过程中,您可以设置这些变量,使其在检测OoO错误时自动执行:

+HeapDumpOnOutOfMemoryError
更多信息:

现在,所有这些文件都可以通过MAT读取:

您还可以使用SDK附带的Java VisualVM读取线程转储:

heapdump将帮助您分析内存泄漏、堆问题和垃圾收集器问题。通过线程转储,您可以查看是否阻塞了线程或大量IO操作导致服务器停止。(通常有很多日志和电话)

最后,MAT在读取诸如4GB或更大的堆时可能会遇到一些问题。我还经常使用IBM heap analyzer:

我通常喜欢分析这类问题。
祝你好运

为什么需要重新路由标准输入?只需使用VisualVM探查器。它与JDK一起提供。强制堆转储,然后获取并加载转储文件。为什么需要重新路由标准输入?只需使用VisualVM探查器。强制堆转储,然后获取并加载转储文件。
+HeapDumpOnOutOfMemoryError