java - 如何找到 Java 中哪些对象/线程导致堆空间错误? (VisualVM、内存分析器)

标签 java memory-management pentaho visualvm

我正在使用 ETL 软件 Pentaho(仅轻度相关)——它是基于 Java 构建的。我每次在进程 80 次循环后都会遇到堆空间错误 --- 我可以增加分配给 Java -xmx2048 的内存或其他什么,但这只是“延迟”错误并且是一个创可贴修复。/p>

我有 VisualVM 和 MemoryAnalyzer,但我试图找出在哪里可以找到导致无关对象持续存在的根本原因/对象/线程。我可以在 VisualVM 中看到堆空间内存随着时间的推移逐渐增加。但我不确定我到底应该做什么来找到原因。分析错误时的堆转储?

最佳答案

有几种工具可以解决这个问题: 尝试:

  1. JProfiler
  2. 你的工具包

Jprofiler 实际上是一个很棒的工具,可以跟踪应用程序中的内存泄漏。您可以按类或包级别进行调整。

关于java - 如何找到 Java 中哪些对象/线程导致堆空间错误? (VisualVM、内存分析器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30377702/

相关文章:

memory-management - Go(lang) 内存使用 : RSIZE growing and VSIZE of 139GB?

c++ - 最终形成指南支持库的无效内存访问

hadoop - Pentaho Kettle 连接到 Hadoop 集群

java - netty 4.1正确释放引用计数的ByteBuf对象

java - 获取数据来填充 JTable netbeans

iphone - 是否可以说名称包含 new、alloc、create 或 copy 的方法不会自动释放它们创建的对象?

javascript - 如何用 javascript 解析以下 soap 响应? (不能使用 jquery)

mysql - 如何使用 pentaho 数据集成获取唯一记录

java - 为什么我的 Java 字符串中的撇号在我的 HTML 中显示为 `'`?

java - Java 中的客户端类错误