我正在使用 ETL 软件 Pentaho(仅轻度相关)——它是基于 Java 构建的。我每次在进程 80 次循环后都会遇到堆空间错误 --- 我可以增加分配给 Java -xmx2048 的内存或其他什么,但这只是“延迟”错误并且是一个创可贴修复。/p>
我有 VisualVM 和 MemoryAnalyzer,但我试图找出在哪里可以找到导致无关对象持续存在的根本原因/对象/线程。我可以在 VisualVM 中看到堆空间内存随着时间的推移逐渐增加。但我不确定我到底应该做什么来找到原因。分析错误时的堆转储?
最佳答案
有几种工具可以解决这个问题: 尝试:
- JProfiler
- 你的工具包
Jprofiler 实际上是一个很棒的工具,可以跟踪应用程序中的内存泄漏。您可以按类或包级别进行调整。
关于java - 如何找到 Java 中哪些对象/线程导致堆空间错误? (VisualVM、内存分析器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377702/