问题标签 [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.
eclipse - Eclipse 内存分析器源
Eclipse Memory Analyzer Tool ( http://eclipse.org/mat/ ) 源代码在哪里?它声称是开源的,但该站点不包含任何源代码下载。
android - 堆分析工具报告的位图潜在内存泄漏,但应用程序没有使用位图
我的应用程序运行良好(即没有崩溃)。在测试期间,我一直在调查内存使用情况。我使用 Android Studio (AI-141.2006197) DDMS 输出 Dump HPROF 文件,然后在 Eclipse 内存分析器中打开它。该工具描述了一个泄漏嫌疑人:
来自 dominator_tree 的更多信息:
在过去的一天里,我已经将我的应用程序的打开活动和片段剥离到了裸露的基础上,删除了所有打开和对位图的引用,删除了菜单、服务等所有内容。剩下的就是一个包含 1 个片段的活动。该片段有一个 ListView,每个列表项都有一个简单的 TextView。不使用位图。如果需要,我可以在稍后对此问题的编辑中显示代码。
我正在手机和平板电脑上测试这个精简的应用程序。我安装应用程序,启动它,看到第一个片段显示的列表,然后退出。通过 DDMS,我引发 GC,然后进行堆转储并在 Eclipse 内存分析器中检查它。对于手机和平板电脑,我都看到了“潜在的”内存泄漏。
我的测试手机使用 cynogenmod ROM,具有“允许清除资产”的性能设置选项(请参阅http://pocketnow.com/2012/12/10/5-nexus-4-speed-tips#toc- 5)。当我启用此功能时,我潜在的内存泄漏就会消失。这让我觉得我的应用程序毕竟没有问题,但它的一些系统行为我不明白。
一些问题:
- 这可能是我的应用程序中的内存泄漏吗?
- 如果我的测试应用程序没有使用位图或可绘制对象,为什么要为位图分配内存?我可以检查什么?
- 关于解释 Eclipse 内存分析器报告的哪些潜在内存泄漏可以忽略,您有什么智慧的话吗?
提前致谢。我来自嵌入式实时 C 背景,所以当我看到内存泄漏时会非常紧张!
java - Eclipse MAT 显示许多线程没有堆栈
我的代码有泄漏,并且我有一个内存转储,我正在使用很棒的 Eclipse 内存分析器工具查看它。
使用 Thread_Overview,我可以看到我有太多线程。然而,只有少数显示堆栈。其中大部分(可能是我的泄漏)显示状态为 2(已阻塞),但没有堆栈。
知道转储中没有堆栈时这意味着什么吗?也许线程已经死了,但引用仍然保存在内存中(即泄漏)?
(如果有什么不同的话,Windows 2K 上的 Java 6)
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 可以正确分析它。
java - 如何在 Eclipse MAT 中分析深度链接的对象
我正在尝试使用 Eclipse MAT 分析内存泄漏。我已经知道该问题是由本质上是链表的对象引起的,例如:
问题是它非常深(大约 40,000 个元素),而且它也不是标准的LinkedList
,所以这里没有 MATs 支持。
有了第一个元素,我试图到达列表的底部,但我找不到比简单地右键单击next
和选择更好的东西了Go To
,这在 40,000 个元素中需要很长时间。有没有办法使用某种脚本轻松到达链接堆栈的底部?
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 问题: