This question already has answers here:
How to deal with “java.lang.OutOfMemoryError: Java heap space” error?
(19个回答)
4年前关闭。
我正在使用ETL软件Pentaho(仅适度相关),它是基于Java构建的。每次经过80个循环后,我都会收到堆空间错误---我可以增加分配给Java的内存-xmx2048或您拥有的内存,但这只是“延迟”了错误并且是一个临时的解决方法。
我有VisualVM和MemoryAnalyzer,但试图找出在哪里找到导致无关对象持久化的根本原因/对象/线程。我可以在VisualVM中看到堆空间内存随时间逐渐增加。我不确定到底应该怎么做才能找到原因。在发生错误时分析堆转储?
(19个回答)
4年前关闭。
我正在使用ETL软件Pentaho(仅适度相关),它是基于Java构建的。每次经过80个循环后,我都会收到堆空间错误---我可以增加分配给Java的内存-xmx2048或您拥有的内存,但这只是“延迟”了错误并且是一个临时的解决方法。
我有VisualVM和MemoryAnalyzer,但试图找出在哪里找到导致无关对象持久化的根本原因/对象/线程。我可以在VisualVM中看到堆空间内存随时间逐渐增加。我不确定到底应该怎么做才能找到原因。在发生错误时分析堆转储?
最佳答案
有几种工具可以解决此问题:
尝试:
JProfiler
你的包
Jprofiler实际上是一个很好的工具,它可以跟踪应用程序中的内存泄漏。您可以按类或在包级别进行调整。