问题标签 [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 投票
5 回答
6631 浏览

java - eclipse 内存分析器看到整个堆转储(8GB)的一小部分(363,2MB)

我试图调查java.lang.OutOfMemoryError: GC limit exceeded在我们部署在 tomcat 中的 web 应用程序的高负载时发生的情况。堆大小设置为 8GB ( -Xms2048m -Xmx8192m)

在某个时间点,由于 GC 活动开销,我们的应用程序变得无响应。我可以在日志中看到 Full GC 连续发生多次。所以我使用以下命令(jmap -F -dump:format=b,file=/root/dump2.hprof 4963)进行了堆转储。包含转储的文件大小为 9GB。进行转储后(应用程序被冻结了大约 45 分钟),发生了多次完整的 GC,直到OutOfMemoryError被抛出。

这是 GC 活动的日志示例

为了分析堆转储,我在 Eclipse 内存分析器 (MAT) 中打开了它。不幸的是,MAT 显示堆大小为 363.2MB(在概览选项卡或堆转储详细信息选项卡中),而根据 GC 日志,堆已填满 6467961K (6.4G)。Unreachable Objects Histogram 总共显示 75 511 736 (75 MB)。直方图视图也证实了浅堆的总数为 380 837 136 (363.2MB)

我的问题是,如果 GC 无法回收内存,为什么 MAT 不显示堆转储中的所有对象?

以下是 MAT 中导入的堆转储的屏幕截图:

0 投票
1 回答
67 浏览

java - 从 mat 消息映射原始内存泄漏

我可以使用 MAT 并且收到消息,显示我的包名称带有浅层和保留堆。由此,我如何定位导致内存泄漏的代码行?任何机构,请帮助我,在此先感谢。下面是转储 HPROF 文件消息 在此处输入图像描述

0 投票
1 回答
145 浏览

android - 浅堆和保留堆都是 0

有两个活动:TestEmptyActivity 和 FireRoomActivity。FireRoomActivity 有一个完成此活动并启动 TestEmptyActivity 的按钮。当我自己运行 TestEmptyActivity 并查看 DDMS 时,我看到 Allocated 为 12486 MB。但是当我从 FireRoomActivity 启动它时,我看到它是 12530 MB,比它应该的要多,这表明 FireRoomActivity 中存在内存泄漏,并且当 FireRoomActivity 完成时 gc 没有清除所有内容。所以我打开堆转储并搜索 FireRoomActivity,它找到了一些实例,但从屏幕截图中可以看出,它们都有 0 保留堆和 0 浅堆。那意味着什么? 在此处输入图像描述

0 投票
0 回答
179 浏览

android - MAT 识别我未创建的 UI 元素中的泄漏

我在我的应用程序上运行了 MAT,看看我是否可以减少我的用户发生的内存泄漏和“OutOfMemoryException”。

我在该工具生成的直方图中看到,即使我调用了完成并且没有创建我知道的循环引用,我的一项活动也没有从内存中清除。所以我查看了所有传入的引用,不包括所有软/弱引用,发现有一个EditText没有名称并且我没有放入活动。

附上报告截图。

请帮助我了解如何堵塞此泄漏。

MAT截图

0 投票
1 回答
1176 浏览

android - 如何在eclipse中使用MAT查找内存泄漏

我是这个主题的新手,所以我在互联网上研究了 MAT,但这些文章已经很老了,并且有一些关于创建堆转储和手动将文件转换为其他格式等的东西......但只要我点击堆转储我得到这个

在此处输入图像描述

所以我猜我不再需要转换它了,还是我?

我想问一下我的应用程序需要大约 40-120 mb ram。由于内存泄漏,大小不断增加如何找出导致它的变量?我们甚至可以找出单独变量的内存分配吗?

0 投票
0 回答
176 浏览

java - 在无头(仅限终端)机器中交互式查询 java 堆转储

我需要调查 Java 应用程序中潜在的内存泄漏。

具体来说:我有一个包含在地图中的对象类型。不时地重新读取这些数据,并用新的地图替换地图。然而,一些旧对象似乎并不总是被释放,即使在外部强制 gc 之后也是如此。

我开始使用带有预定义报告(泄漏嫌疑人等)的 MAT,但我需要进一步深入研究。

使用 mat 的 GUI 版本是不切实际的,因为机器是一个远程 linux 服务器(我用 X11 尝试了 MAT,但它没有响应,并且转储下载太大)

我正在寻找一种使用命令行工具进一步分析堆转储的方法。

SO和其他网站中有几个相关的问题 - 但除了我尝试过的选项(使用预定义的报告)之外,我没有找到任何东西

0 投票
1 回答
1757 浏览

java - MAT: How do you diagnose "x instances of "byte[]", loaded by "" occupy y (z%) bytes" memory issues?

I'm trying to diagnose a memory issue in my Android app. I dumped an HPROF file and have it loaded up in the Eclipse MAT tool (see How to analyze memory using android studio). I'm now trying to make sense of the listed "Leak Suspects"

I'm wondering if the following is indicative of a real problem:

If so, how would you suggest tracking it down? If it's not, do you know what this byte data might be?

0 投票
1 回答
253 浏览

android - Eclipse:垫错误

我正在开发一个安卓应用程序。我第一次尝试使用 MAT 找出内存泄漏。我参考了以下链接。

关联

直到第3步它的工作。但是当我尝试运行第 4 步时,我在 Eclipse 中遇到错误。错误日志是:

我在谷歌上搜索但没有得到问题是什么以及如何解决它。

请给我您宝贵的建议以解决错误。

0 投票
2 回答
1037 浏览

java - 从堆转储中提取线程转储

MAT我有一个巨大的堆转储(大约 12GB),用or打开它需要很长时间jvisualvm。我只想在不索引对象的情况下从中获取线程转储。是否可以使用上述或任何其他工具?

0 投票
0 回答
132 浏览

android - 跟踪android中的内存泄漏

我正在尝试跟踪我的应用程序中的内存泄漏。我有一个Activity可以在 7 秒之间切换Fragment的。我正在实例化Fragments 中的ActivitysonCreate()并在它们之间切换时使用相同的实例。

我正在使用Picasso加载Fragments 中的任何图像。当我在 s 之间切换Fragment时,内存分配不断增加,甚至在完成 s 时,Activity内存也没有被释放。

我已经使用 MAT 来分析堆转储,似乎是Bitmaps 没有被释放。

我知道我在Activity包含Fragments 的内容中有泄漏,但由于即使在退出 s 之后内存也没有被释放Activity,我想我也在坚持Activity

由于我无法以一种有益的方式使用 MAT 来识别泄漏(也没有弄清楚我在哪里坚持Activity),如果有人可以帮助我,我将不胜感激。