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

java - 在 eclipse 中解析 hprof 文件时发生内部错误

在此处输入图像描述

使用 MemoryAnalyzer(eclipse 插件)检查内存。我可以生成 hprof 文件,但无法在 eclipse 中打开。出现以下内部错误。

0 投票
2 回答
902 浏览

java - Java HeapDumps 表明在 OutOfMemory 异常后使用的堆大小比实际堆定义小 30%

在 JVM 引发异常后,我正在分析一些堆转储OutOfMemory。我在 Windows 2008R2 平台上使用 Hotspot JDK 1.7(64 位)。应用服务器是一个 JBoss 4.2.1GA,通过 Tanuki Java Service Wrapper启动。

它使用以下参数启动:

翻译为:

-Xms1498m -Xmx3000m -XX:MaxPermSize=256m -XX:+HeapDumpOnOutOfMemoryError

还有一些其他的 GC & JMX 配置参数。

我的问题是,当我分析由于OutOfMemoryException使用Eclipse Memory Analyzer而创建的堆转储时,MAT 总是向我显示 2.3G 或 2.4G 的堆大小。我已经在 MAT 中启用了该选项Keep Unreachable Objects,所以我不相信 MAT 正在修剪堆。

或者

MAT总结:

我的实际堆文件大小约为 3300KB,因此它们符合我的 3000m 最大堆大小设置。

那么MAT中缺少的500-600M内存在哪里呢?为什么 MAT 只显示我的堆大小为 2.4G?

SO上的其他帖子倾向于表明它是JVM在转储堆之前进行了一些GC,但是如果缺少500M是由于GC,为什么它甚至首先抛出OOM?如果 GC 真的可以清理 500M(或者我的堆的近 25%),那么 JVM 真的内存不足吗?

有没有办法调整堆转储,以便我可以获得堆的完整/完整图片(包括丢失的 500M)?

如果不是,我发现我真的很难找到我首先遇到这些 OOM 的方式/原因。

根据某人的要求,我附上了jstat -gc <PID> 1000来自活动节点的输出:http: //pastebin.com/07KMG1tr

0 投票
2 回答
999 浏览

java - 哪个线程触发了 OutOfMemoryException 堆转储

我有一个在 JVM 7 上运行的 JBoss 4.2.1 应用程序,它在抛出时触发了堆转储OutOfMemoryExceptions。我为 jvm 配置了以下开关:

我正在尝试通读堆转储以找出导致我的 OOME 的确切原因。我看到消耗了大块内存,但它们在某种程度上是意料之中的。我目前正在寻找的是“确凿证据”。

我已经在这里打开了另一个关于我的堆转储中缺少内存的 SO 问题,所以我试图弄清楚 OOME 发生时 JVM 在做什么。

堆转储中是否有任何内容表明哪个线程触发了 OOME?更具体地说,触发我的 OOME 的呼叫在做什么?我意识到并理解在内存泄漏的情况下,这可能是在追踪错误的线索,但我正在寻找是否看到哪个线程导致了异常。

反正有没有用MAT来看到这个?

0 投票
2 回答
2465 浏览

android - 识别 Android 应用程序中的内存泄漏

我正在尝试使用 android studio 工具和 mat 来了解 android 应用程序中的内存泄漏。

我在运行应用程序时截取了 android studio 的屏幕截图,在单击 GC 按钮后截取了另一张截图。

现在,作为分析内存泄漏或使用 android studio 工具的初学者,我想了解下面的图表。

如何仅通过查看我的应用程序已泄漏内存的图表来确定?

在图 1 中 - 我打开我的应用程序并登陆 HomeScreen 去执行不同的活动(保存图像)然后返回。

在图 2 中 - 我点击了 GC 按钮。

我的应用程序是否泄漏内存?如果不是,我的步骤是否正确,或者是否有任何具体的步骤可以检查内存泄漏。

图 1 在此处输入图像描述

图 2 在此处输入图像描述

请帮忙,谢谢。

0 投票
1 回答
404 浏览

android - 从 MAT 检测内存泄漏

来自 eclipse-Mat 的直方图图像我正在使用内存分析器工具来检测我的应用程序中可能存在的内存泄漏,下面是堆配置文件的图像,它说我有 5 个 IntroActivity 对象 下面是我的 introactivity 代码,我无法找到创建该对象的位置多个次

任何人都可以帮助找到可能的泄漏任何帮助都可以得到

0 投票
2 回答
306 浏览

android - Eclipse MAT 显示由于 Volley NetworkDispatcher 和 CacheDispatcher 导致的内存泄漏

这不包括弱引用

我是 MAT 的新手,不知道如何检测和消除泄漏,但为什么 volley 在我所有的泄漏背后?

我该如何解决这个问题?

0 投票
1 回答
203 浏览

java - 为什么字节数组本身的gc根在mat中?

我有这种情况:当我分析android堆时,字节数组在MAT中被标记为gc root。我已经排除了对 gc root 的弱/软引用。截图如下:

在此处输入图像描述

这意味着字节数组是 gc 根?很难说服。

你能解释一下这个现象吗?

这与此处相同,但没有人解释它。

估计本机有对字节数组的引用,但是我没有足够的知识来解释。

0 投票
1 回答
1209 浏览

java - 堆转储分析 - 查找 OutOfMemory 异常的根本原因

我正在运行一个应用程序,该应用程序具有 4 gigs 的最大堆大小-Xms4096m -Xmx4096m -Xmn1024m,GC 配置为-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=50,GC 间隔为Dsun.rmi.dgc.server.gcInterval=43200000 -Dsun.rmi.dgc.client.gcInterval=43200000

突然,我的应用程序出现内存不足异常,我在同一场合进行了线程转储和堆转储。在分析线程转储时,由于为 hashMap 和 arrayList 创建了一些值,线程被卡住了。ByteArrayOutStream 在其中一个线程中创建了锁。

在 Eclipse 内存分析器工具中的 Analyzing Heap dump 中,它清楚地表明 bytearray 对象已经占用了将近 1 Gigs 的 Heap。从 GCViewer 显示它在几分之一秒内有一个峰值。我不知道为什么突然字节数组对象使用了 1 Gigs 的空间。有人可以帮我缩小罪魁祸首。

-- 应用服务器 - Weblogic 12c

0 投票
0 回答
692 浏览

java - Android HPROF文件,有没有办法显示本机内存部分?

我使用 MAT 工具和 haha​​ 库,它是一个 hprof 文件解析器。

我可以显示 java 对象的字段(例如位图):

在此处输入图像描述

但是我想要一些信息:mNativeBitmap在屏幕截图中..

我想它是一个本机指针,有没有一种很好的方法来显示指针指向的内存块?


正如@CommonsWare 所说:本机堆不计入 hprof。

有没有办法/指南可以帮助我转储指针指向的本机内存部分?

我可以在我的应用程序运行时转储 hprof,所以我想我可以分析对象找到指针的值,然后用我自己的本机帮助程序库转储内存块,简单的 memcpy 东西?

我可以在不编写本机库的情况下转储本机内存块吗?

0 投票
0 回答
1601 浏览

java - 给定 hashmap 的对象 id,获取 hashmap 中键的字段

我已将堆转储加载到地图中。我发现了带有泄漏对象的哈希图。如何获取该哈希图中的键字段?我怀疑我在地图中有同一个对象的多个副本,名称如 joseph_0001, joseph_0002, ..., joseph_WXYZ 。

到目前为止,我已经尝试了以下陈述。

我想要每个键的 displayName 字段。

请注意 MAT 的 OQL 规范(http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.mat.ui.help%2Freference%2Foqlsyntax.html)与 VisualVM 不同。