问题标签 [eclipse-memory-analyzer]

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 投票
0 回答
149 浏览

android - 奇怪的 OutOfMemoryException 和内存泄漏

我面临着非常奇怪的OutOfMemoryException问题。首先,我没有加载大位图的问题。我的问题是基于内存泄漏。应用很普遍——活动很少;在视图中替换了片段的一项主要活动。

使用应用程序几分钟后,我得到了,OOME因为没有更多可用内存了。

我对 MAT 进行了一些调查,我的两个项目都存在这种问题:

Merged shortest paths to GC roots without weak references

第一个项目内存泄漏 第二个项目内存泄漏

很少Bitmaps或被BitmapShaders“某物”持有。我正在使用 Android 支持库(Fragments等)和Android-Universal-Image-Loader库(加载图像)。

图像加载库在Application中以这种方式初始化(​​我认为没有问题):

提前感谢您的每一个建议。

0 投票
1 回答
247 浏览

eclipse - 如何从 Eclipse 中删除 MAT?

我在 Eclipse 中安装了 MAT,但现在我的 Eclipse 没有启动。如何从 Eclipse 中删除 MAT?(通过文件系统)

0 投票
1 回答
1710 浏览

java - “字节[]”的一个实例由“​​加载”" 占用 29,393,296 (40.58%) 字节

为什么?

怎么解决? byte[] 需要设置 null吗?Eclipse 内存分析器

在此处输入图像描述

0 投票
1 回答
1600 浏览

android - 无法转换 hprof 转储

我尝试将转储从 Android 设备监视器转换为 Eclipse 内存分析器格式。我使用下一个命令

我得到错误

我在一个/platform-tools文件夹中执行此操作。当我在另一台计算机上运行相同的命令时,一切正常。有什么问题?

0 投票
1 回答
361 浏览

java - Android中的内存分析:dominator_tree没有显示某些对象的所有实例

我正在使用 Eclipse 内存分析器来测试MainActivity我的 Android 应用程序中的行为。

我已经将我的设备旋转了 10 次,所以我创建了 11 个实例MainActivity类实例。

查看 Eclipse Memory Analyzer 中的 Histogram 选项卡,我得到了这个

直方图

整个列表对象(右键单击 -> lList 对象 -> 带有传入引用)给了我这 11 个对象的列表:

列出具有传入引用的对象

这应该是正确的,因为我有 11 个 MainActivity 类的实例,正如预期的那样(假设 GC 尚未发布这些活动)。

但是如果我在 dominator_tree 选项卡中搜索“MainActivity”,我只会获得 4 个实例(我不确定这些是实例......可能它只是显示我的应用程序中活动的引用,而不是堆中的所有对象):

支配树

其他 6 个实例在哪里?为什么这些没有显示在 dominator_tree 图中?

0 投票
0 回答
316 浏览

java - java内存转储从非二进制转换为二进制格式

使用工具 jmap,您可以创建两种格式的内存转储:

或者

我读过很多地方,只有二进制格式可以被 jhat 和 jvisualvm 等工具读取。

所以:

  1. 有没有可以读取其他格式的工具?
  2. 有什么工具可以从其他格式转换为二进制格式吗?

我有一个使用其他格式创建的内存转储文件,需要能够检查它,最好使用Eclipse Memory Analyzer Tool

0 投票
1 回答
375 浏览

java - 为什么我看不到 GC 根?

我有一个因 OutOfMemory 崩溃的应用程序。我将崩溃中的 phd 文件加载到 Eclipse 内存分析器中。我立即发现了一个相当可疑的 ArrayList,其中包含大约 5,700,000 个条目,每个条目都是一个内容为 16 个空字节(????)的字符串。注意:我没有检查所有条目,而是检查了一个较小的样本。

不出所料,我很感兴趣谁在坚持这样一个愚蠢的事情,所以我右键单击 ArrayList 并打开“GC Roots 路径”(所有引用或排除,它似乎没有区别) .

将打开一个新选项卡并仅显示一行,即 ArrayList,并附加了后缀“Unknown”。

所以我的问题就在标题中:为什么我看不到 GC 根?

涉及的各种版本的东西。

应用程序在一些 1.6 IBM JRE 上的 Websphere 8.x 上运行

Eclipse 内存分析器:版本 1.5.0

Java 诊断工具框架(用于加载 IBM 转储):1.10.0.201211161052

0 投票
0 回答
163 浏览

java - 如何使用 heapdump 查找特定包中的类消耗的 java 总堆内存

使用 heapdump,如何找到特定包下类的所有实例消耗的总堆内存。

例子,想知道到底消耗了多少堆内存org.apache.log4j.*这当然应该包括log4j使用的String、HashMap、原始数据类型等

尝试了 Eclipse Memory Analyzer MAT,但找不到用于特定包的总堆内存。MAT 在其直方图视图中排除“不可到达的对象”。

0 投票
1 回答
1363 浏览

jvm - 有没有办法从正在运行的 JVM 中获得类似“Dominator Tree”的功能?

最近,我一直在使用Eclipse MAT深入研究 JVM 堆转储。我喜欢它,但我似乎使用最多的一个功能是Dominator Tree。Eclipse 的示例截图:

Eclipse Dominator 树示例截图

无论如何,我发现很多时候,我通常会从查看该表并获取前几个条目中获得最大价值。因为得到这个的周转时间是:

  1. 创建堆转储 ( jcmd <pid> GC.heap_dump)
  2. 下载/拉取 heapdump 到一个位置(MAT 没有安装在我们的服务器上)
  3. 运行 Eclipse MAT 的ParseHeapDump.sh工具来构建各种树
  4. 打开 MAT,单击Dominator Tree图标。
  5. 分析

有没有办法以编程方式从正在运行的JVM中获取这些等效信息?我想gather_dominators.sh <pid>在主机上运行某种脚本并从 JVM 获取 Top X 对象,但我不知道从哪里开始。

0 投票
1 回答
642 浏览

java - Android 堆转储转换为 J2SE:hprof-conv:找不到命令

按照Patrick Dubroy指南,我尝试将堆转储转换为 J2SE HPROF,但无法执行hprof-conv. 这很奇怪,因为它位于文件夹中。

在此处输入图像描述

如何解决这个问题?