问题标签 [eclipse-mat]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
552 浏览

eclipse - Eclipse 内存分析器源

Eclipse Memory Analyzer Tool ( http://eclipse.org/mat/ ) 源代码在哪里?它声称是开源的,但该站点不包含任何源代码下载。

0 投票
2 回答
838 浏览

android - 堆分析工具报告的位图潜在内存泄漏,但应用程序没有使用位图

我的应用程序运行良好(即没有崩溃)。在测试期间,我一直在调查内存使用情况。我使用 Android Studio (AI-141.2006197) DDMS 输出 Dump HPROF 文件,然后在 Eclipse 内存分析器中打开它。该工具描述了一个泄漏嫌疑人:

来自 dominator_tree 的更多信息:

路径2gc

在过去的一天里,我已经将我的应用程序的打开活动和片段剥离到了裸露的基础上,删除了所有打开和对位图的引用,删除了菜单、服务等所有内容。剩下的就是一个包含 1 个片段的活动。该片段有一个 ListView,每个列表项都有一个简单的 TextView。不使用位图。如果需要,我可以在稍后对此问题的编辑中显示代码。

我正在手机和平​​板电脑上测试这个精简的应用程序。我安装应用程序,启动它,看到第一个片段显示的列表,然后退出。通过 DDMS,我引发 GC,然后进行堆转储并在 Eclipse 内存分析器中检查它。对于手机和平板电脑,我都看到了“潜在的”内存泄漏。

我的测试手机使用 cynogenmod ROM,具有“允许清除资产”的性能设置选项(请参阅http://pocketnow.com/2012/12/10/5-nexus-4-speed-tips#toc- 5)。当我启用此功能时,我潜在的内存泄漏就会消失。这让我觉得我的应用程序毕竟没有问题,但它的一些系统行为我不明白。

一些问题:

  1. 这可能是我的应用程序中的内存泄漏吗?
  2. 如果我的测试应用程序没有使用位图或可绘制对象,为什么要为位图分配内存?我可以检查什么?
  3. 关于解释 Eclipse 内存分析器报告的哪些潜在内存泄漏可以忽略,您有什么智慧的话吗?

提前致谢。我来自嵌入式实时 C 背景,所以当我看到内存泄漏时会非常紧张!

0 投票
1 回答
322 浏览

java - Eclipse MAT工具线程展示

作为MAT工具的初学者,我正在使用它来分析一些问题。但我不知道这对类实例下的那些线程意味着什么。如图所示(在泄漏嫌疑人选项卡下)。

在此处输入图像描述

这是否意味着,那些线程正在等待资源(类实例)?

0 投票
1 回答
526 浏览

java - Eclipse MAT 显示许多线程没有堆栈

我的代码有泄漏,并且我有一个内存转储,我正在使用很棒的 Eclipse 内存分析器工具查看它。

使用 Thread_Overview,我可以看到我有太多线程。然而,只有少数显示堆栈。其中大部分(可能是我的泄漏)显示状态为 2(已阻塞),但没有堆栈。

知道转储中没有堆栈时这意味着什么吗?也许线程已经死了,但引用仍然保存在内存中(即泄漏)?

(如果有什么不同的话,Windows 2K 上的 Java 6)

0 投票
1 回答
2803 浏览

eclipse - Mat 打不开转储文件

我的jmap命令是sudo -u flume /usr/java/jdk1.8.0_60/bin/jmap -F -dump:format=b,file=heap.hprof pid,但是 eclips mat 无法打开转储文件,并抛出异常。

这是我的环境。

但是 jhat 可以正确分析它。

0 投票
1 回答
397 浏览

java - 如何在 Eclipse MAT 中分析深度链接的对象

我正在尝试使用 Eclipse MAT 分析内存泄漏。我已经知道该问题是由本质上是链表的对象引起的,例如:

问题是它非常深(大约 40,000 个元素),而且它也不是标准的LinkedList,所以这里没有 MATs 支持。

有了第一个元素,我试图到达列表的底部,但我找不到比简单地右键单击next和选择更好的东西了Go To,这在 40,000 个元素中需要很长时间。有没有办法使用某种脚本轻松到达链接堆栈的底部?

0 投票
1 回答
1082 浏览

java - VisualVM 与 Eclipse MAT 中的堆大小差异

我正在尝试分析我的 Java 应用程序的内存使用情况。在 VisualVM 中,我看到堆大小为 ~733M:

在此处输入图像描述

但是当我将堆转储导出到 Eclipse MAT 时,它显示为 36.6MB:

在此处输入图像描述

这是为什么?

0 投票
1 回答
58 浏览

java - “OutOfMemoryError”的其他原因?

我在我的一个 java 应用程序中收到了 java.lang.OutOfMemoryError。我在eclipse中的“VM arguments”下增加了最小和最大堆大小的大小:

-XX:+HeapDumpOnOutOfMemoryError -Xmx8g -Xms2g 但是,我仍然遇到同样的错误。在 jconsole.exe 中,它显示以下内容: jconsole 截图

如果我理解正确,那么我仍然有足够的堆内存。

我还使用 eclipse MAT 分析了内存转储 MAT截图

如您所见,它显示了问题,但只有 9 MB。那么究竟是什么问题呢?我不应该有足够的可用堆内存吗?

0 投票
2 回答
856 浏览

java - 为什么我的程序在字节数组中保存 1.5Gb 的内存?

由于最近报告的一些缓慢,我一直在分析堆转储。结果发现有几个 1.5GB 字节的数组存放在那里,我无法追踪它们的来源。Eclipse 的 MAT 没有向我显示持有如此大块的类。它只是说“<系统类加载器>”。也许我没有找对地方。

在此处输入图像描述

是什么导致这两个庞大的字节数组被保留在那里?该应用程序在 Websphere Application Server 上运行。这是有关我正在运行应用程序的环境的一些 JVM 信息。谢谢

  • 编译于:JVM 1.6
  • 环境 Java 版本:JRE 1.7.0 Linux amd64-64 build 20130421_145945 (pxa6470sr4fp1ifix-20130423_02(SR4 FP1+IV38579+IV38399+IV40208))
  • 虚拟机版本:VM build R26_Java726_SR4_FP1_2_20130421_2353_B145945
    Just-In-Time(JIT) 编译器开关,Ahead-Of-Time (AOT) 编译器开关,编译器版本:r11.b03_20130131_32403ifx4
  • 垃圾收集器版本:GC - R26_Java726_SR4_FP1_2_20130421_2353_B145945_CMPRSS
  • Java 堆信息
    • -Xmx(最大 Java 堆大小):4096m
    • -Xms(初始 Java 堆大小):1024m
    • -Xscmx(Java类数据共享缓存大小):90M
    • -Xscmaxaot(缓存中可用于AOT数据的最大字节数):4M

编辑:

这两个字节数组实例没有直接在我的代码中定义。但是,我确实在 util 类中不断地使用这些方法,以便读取和写入工资单批量文件。我想知道临时文件和输入流的不断创建是否与它有关。

}

更新: 我用谷歌搜索了字节数组的大小,发现问题的根源不是我的代码,而是我们用于共享缓存并最终删除的 JGroups,所以问题就消失了。这是有问题的 JGroups 问题:

https://issues.jboss.org/browse/JGRP-1117

0 投票
1 回答
60 浏览

java - 无效后从内存中清除图像资源

我有一个 Android Activity 需要在应用程序的整个生命周期内保存在内存中(不要问为什么)。这个Activity的后台占用了大约12MB的内存。我想在未查看此活动时释放此内存空间。我尝试添加以下代码

但这会导致内存空间仍然被分配。下面的树是通过 MAT 检索的,如您所见,没有直接引用我的应用程序本身。

我怀疑位图在内存中的某个地方,等待被 gc'd,但无论出于何种原因,它永远不会。

在此处输入图像描述

仅供参考,我也尝试了以下

但这导致了这种疯狂

在此处输入图像描述