我使用的是ETL软件Pentaho(仅略显相关) - 它是基于Java构建的。我每次进行80次循环后都会出现堆空间错误 - 我可以增加分配给Java -xmx2048的内存或者你有什么内容,但这只会延迟"错误,是一个创可贴修复。
我有VisualVM和MemoryAnalyzer但我正在试图找出导致无关对象持久存在的根本原因/对象/线程的位置。我可以在VisualVM中看到堆空间内存随着时间的推移逐渐增加。我不确定我应该做些什么才能找到原因。在出错时分析堆转储?
答案 0 :(得分:2)
有几种工具可以解决这个问题: 试试:
Jprofiler实际上是一个很好的工具,可以跟踪应用程序中的内存泄漏。您可以按类或在包级别进行调整。
答案 1 :(得分:1)
如果命令行工具没有吓到你,请尝试 aprof :https://github.com/devexperts/aprof
当您必须在生产环境中通过某种原因进行配置时非常有用(例如,您无法在其他任何地方重现问题)。