问题标签 [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.
android - 奇怪的 OutOfMemoryException 和内存泄漏
我面临着非常奇怪的OutOfMemoryException
问题。首先,我没有加载大位图的问题。我的问题是基于内存泄漏。应用很普遍——活动很少;在视图中替换了片段的一项主要活动。
使用应用程序几分钟后,我得到了,OOME
因为没有更多可用内存了。
我对 MAT 进行了一些调查,我的两个项目都存在这种问题:
Merged shortest paths to GC roots without weak references
很少Bitmaps
或被BitmapShaders
“某物”持有。我正在使用 Android 支持库(Fragments
等)和Android-Universal-Image-Loader
库(加载图像)。
图像加载库在Application中以这种方式初始化(我认为没有问题):
提前感谢您的每一个建议。
eclipse - 如何从 Eclipse 中删除 MAT?
我在 Eclipse 中安装了 MAT,但现在我的 Eclipse 没有启动。如何从 Eclipse 中删除 MAT?(通过文件系统)
java - “字节[]”的一个实例由“加载”" 占用 29,393,296 (40.58%) 字节
为什么?
怎么解决?
byte[]
需要设置null
吗?Eclipse 内存分析器
android - 无法转换 hprof 转储
我尝试将转储从 Android 设备监视器转换为 Eclipse 内存分析器格式。我使用下一个命令
我得到错误
我在一个/platform-tools
文件夹中执行此操作。当我在另一台计算机上运行相同的命令时,一切正常。有什么问题?
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 图中?
java - java内存转储从非二进制转换为二进制格式
使用工具 jmap,您可以创建两种格式的内存转储:
或者
我读过很多地方,只有二进制格式可以被 jhat 和 jvisualvm 等工具读取。
所以:
- 有没有可以读取其他格式的工具?
- 有什么工具可以从其他格式转换为二进制格式吗?
我有一个使用其他格式创建的内存转储文件,需要能够检查它,最好使用Eclipse Memory Analyzer Tool。
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
java - 如何使用 heapdump 查找特定包中的类消耗的 java 总堆内存
使用 heapdump,如何找到特定包下类的所有实例消耗的总堆内存。
例子,想知道到底消耗了多少堆内存org.apache.log4j.*
这当然应该包括log4j使用的String、HashMap、原始数据类型等
尝试了 Eclipse Memory Analyzer MAT,但找不到用于特定包的总堆内存。MAT 在其直方图视图中排除“不可到达的对象”。
jvm - 有没有办法从正在运行的 JVM 中获得类似“Dominator Tree”的功能?
最近,我一直在使用Eclipse MAT深入研究 JVM 堆转储。我喜欢它,但我似乎使用最多的一个功能是Dominator Tree。Eclipse 的示例截图:
无论如何,我发现很多时候,我通常会从查看该表并获取前几个条目中获得最大价值。因为得到这个的周转时间是:
- 创建堆转储 (
jcmd <pid> GC.heap_dump
) - 下载/拉取 heapdump 到一个位置(MAT 没有安装在我们的服务器上)
- 运行 Eclipse MAT 的
ParseHeapDump.sh
工具来构建各种树 - 打开 MAT,单击Dominator Tree图标。
- 分析
有没有办法以编程方式从正在运行的JVM中获取这些等效信息?我想gather_dominators.sh <pid>
在主机上运行某种脚本并从 JVM 获取 Top X 对象,但我不知道从哪里开始。