我如何找到导致 Java 中的堆 space 错误的对象/线程? (VisualVM, 内存分析器)
How can I find what objects/ threads are causing heap space error in Java? (VisualVM, MemoryAnalyzer)
我正在使用一个 ETL 软件 Pentaho(只是稍微相关)——它建立在 Java 之上。每次进程循环 80 次后,我都会收到堆 space 错误 --- 我可以增加分配给 Java -xmx2048 的内存或者你有什么,但那只是 "delays"错误,是创可贴修复。
我有 VisualVM 和 MemoryAnalyzer,但我想找出在哪里可以找到导致无关对象持续存在的根本原因/对象/线程。我可以在 VisualVM 中看到堆 space 内存随时间逐渐增加。我不确定我到底应该做什么才能找到原因。分析错误时的堆转储?
有几种工具可以解决这个问题:
尝试:
- JProfiler
- 你的包
Jprofiler 实际上是一个很棒的工具,可以跟踪应用程序中的内存泄漏。您可以按 类 或在包级别进行调整。
如果命令行工具不怕您,请尝试 aprof:https://github.com/devexperts/aprof
当您出于某种原因必须在生产环境中进行分析时(例如,您无法在其他任何地方重现问题),这非常有用。
我正在使用一个 ETL 软件 Pentaho(只是稍微相关)——它建立在 Java 之上。每次进程循环 80 次后,我都会收到堆 space 错误 --- 我可以增加分配给 Java -xmx2048 的内存或者你有什么,但那只是 "delays"错误,是创可贴修复。
我有 VisualVM 和 MemoryAnalyzer,但我想找出在哪里可以找到导致无关对象持续存在的根本原因/对象/线程。我可以在 VisualVM 中看到堆 space 内存随时间逐渐增加。我不确定我到底应该做什么才能找到原因。分析错误时的堆转储?
有几种工具可以解决这个问题: 尝试:
- JProfiler
- 你的包
Jprofiler 实际上是一个很棒的工具,可以跟踪应用程序中的内存泄漏。您可以按 类 或在包级别进行调整。
如果命令行工具不怕您,请尝试 aprof:https://github.com/devexperts/aprof
当您出于某种原因必须在生产环境中进行分析时(例如,您无法在其他任何地方重现问题),这非常有用。