问题标签 [hprof]

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 回答
1785 浏览

android - 为什么要使用 HPROF 查看器和分析器查找“重复字符串”?

使用 Android 内存监视器,尤其是它的“Dump Java Heap”功能,我目前正在寻找我的应用程序中的内存泄漏。在 Android Studio 的转储/HPROF 视图的左侧,有一个打开“分析器任务”的选项,您可以在那里告诉机器“检测泄漏的活动”和“查找重复的字符串”。我对后一种选择感到困惑。它有什么作用以及它有什么用处?它必须比仅仅帮助我们中间那些将相同字符串两次放入资源文件夹的笨拙开发人员更复杂。这些文档在这里不是很有帮助(如果我的搜索足够彻底的话),因为它们只声明它在“目标程序具有重复值的字符串”的情况下有所帮助。什么时候会出现这种情况?

0 投票
1 回答
567 浏览

android - Meaning of icons in HPROF Viewer in Android Studio

From time to time I use the Memory Monitor and HPROF Viewer in Android Studio to check for any memory leaks and memory usage in general.

I believe I know the meaning of most symbols and colours used in the Viewer, but I would like to be sure and not just have my own understanding of them. I haven't found any explanations on web, but I'm sure the answers to my questions are pretty straight forward.

What do the follwing symbols in the reference three mean?

1: Symbol #1

2: Symbol #2

3: Symbol #3

4: Symbol #4

5:Symbol #5

What does it mean when the font colour of the instance is blue, red, bold or italic ?

Sometimes the symbols 1, 2 and 3 can be combined in the same instance. Does that mean something special?

6: Symbol Comb

7: Symbol Comb

My feature request for the HPROF Viewer is a tooltip when hovering the different icons..

0 投票
0 回答
402 浏览

java - Android Studio 堆转储 (.hprof) 查看器显示不正确的计数?

我为此实验启动了一个全新的示例项目。该应用程序有一个活动。

此时我运行应用程序并转储 Java 堆。结果如下所示:

在此处输入图像描述

伟大的!一切看起来都是正确的。“总计数”和“堆计数”为 1。正是我所期望的。

让我们旋转我的设备 3 次。在这一点上,我仍然希望只看到 1 个 MainActivity,但我知道已经创建了 4 个。让我们来看看。

在此处输入图像描述

嗯……这很奇怪。它显示 4。这怎么可能?也许活动还在。未引用...但它们还没有被 GC 处理。让我们强制 GC 并进行另一个堆转储。

在此处输入图像描述

奇怪的。它仍然在 4。这就是我迷路的地方。听起来总计数或堆计数应该为 1。它只是保持 MainActivity 的每个引用吗?那是泄漏吗?观众是不是错了?

Total Count(根据文档)是“未完成的实例总数”。

也许堆计数?“选定堆中的实例数。” 好吧,这听起来更像是我想要的。我想要具有 gc 根的实例(真实实例)的数量。

有谁知道为什么会这样?

0 投票
2 回答
5325 浏览

android - 如何打开/查找使用 Android Studio 2.1.3 创建的“hprof”转储文件?

我是 Android 开发的新手。我想分析我的应用程序使用内存的方式。我正在使用 Android Studio 2.1.3 开发我的应用程序。

我正在使用 Android Monitor 来观察内存使用情况,并且我正在尝试创建一个“hprof”文件。我在内存监视器中单击“转储 Java 堆”按钮,但没有任何反应。

在以下链接中,官方文档指出一旦创建了 hprof 文件,HPROF 查看器就会自动出现。 官方文档截图

官方文档还指出,转储文件存储在 Heap Snapshot 文件夹中,以便以后查看。

我找不到存储转储文件的文件夹。

我什至在我所有的硬盘上搜索了带有“hprof”扩展名的文件,但一无所获。

你能帮我找到转储文件并打开它吗?

0 投票
0 回答
33 浏览

java - 为什么历史 .hprof 文件的更改时间已更改

正如我在标题中提到的,我想知道我的历史.hprof文件更改时间已更改的更改原因。

我的问题的场景是:

.hprof由于发生内存泄漏,我在几个月前生成了一个文件,因此我已经修复了问题并重新启动了相关的 java 进程。之后,这个转储文件被丢弃在它生成的地方。

同时,我有一个正在运行的监视器,一旦更改时间更新(使用)就会触发它find -cmin

结果,我收到了一条警报,提示我存档.hprof文件的更改时间已更新。

没有人手动更改文件的权限,所以我想我有什么情况java会自己做吗?

请告诉我关于这个问题的一些事情。非常感谢。

0 投票
0 回答
52 浏览

android - Android Studio 堆转储导致网络断开

当 Android 客户端连接到网络时,我正在调试继承的代码库/VOIP 应用程序。Android 客户端是桌面电话,通过以太网连接到网络。我正在使用 Android Studio 中的 Android Monitor 来查找内存泄漏。奇怪的是,我注意到每当我生成堆转储 (HPROF) 时,应用程序都会断开网络连接。

似乎堆转储之类的调试工具应该是良性的(有点像星际迷航的主要指令)。知道这里发生了什么吗?

0 投票
1 回答
914 浏览

java - 从 Java 进程获取堆转储以调试内存泄漏

遵循以下过程,但我无法分析生成的转储。

  1. 我尝试使用“jmap -F -dump:format=b,file=/tmp/test.hprof”从 Linux 机器上运行的 Java 进程获取堆转储
  2. 60 秒后按 Ctrl+C
  3. 使用 Eclipse MAT(内存分析器工具)启动上述步骤生成的堆转储,但我看到以下错误。

在“解析来自'/users/sobhan/Test.hprof'的堆转储”期间发生内部错误。java.lang.NullPointerException

PS:我尝试了其他分析工具,如 VisualVM、IBM Heap Analyzer,结果是一样的。我认为堆转储已损坏(此处使用 Ctrl+C 是否有问题?)。如果是这样,请提出正确的方法 lo 优雅地退出 'jmap'

提前致谢。

0 投票
1 回答
1062 浏览

android - Android Studio 中具有高内存分配的堆转储永远不会完成

我们有一个应用程序在活动之间导航时从 30 MB 的内存分配跃升至超过 500 MB。我可以在发生这种情况时跟踪分配,并查看内存中保存的内容,但我想创建堆的 HPROF 文件,因此我可以将其加载到 MAT 并更好地了解使用该内存的内容。

但是,当我尝试创建转储时,它只会在内存图上显示一条虚线和微调器,并且(似乎)没有尽头。我可以创建分配较低的转储而没有任何问题,但是分配了 500+ MB,我似乎无法做到这一点。

我已经查找了该场景的已知问题,但找不到任何问题。有没有我可以更改的设置来帮助它,或者我可以做些什么来解决问题?如果没有对堆进行良好的分析,我对内存的情况一无所知。

注意:我不是在寻找内存问题本身的帮助,ATM,我最感兴趣的是如何让堆转储工作。

0 投票
0 回答
67 浏览

java - 不是没有参照物的 GCed FinalizerReferences?

我正在分析大量使用 c++ 本机代码(甚至使用内置 V8 js 引擎)并具有 JNI 胶水类的 android 应用程序。在尝试使用 Android Studio 分析内存使用情况时,我发现有很多保留的 FinalizerReferences 没有参照物。

  1. 我在 Android Studio 中禁用了即时运行
  2. 我没有任何带有 finalize() 方法体的类
  3. 我在获取堆转储之前单击了“收集 GC”

在此处输入图像描述

为什么我看到这么多 FinalizerReferences?为什么没有参照物?他们不应该被GCed吗?

0 投票
1 回答
702 浏览

java - Android 应用程序未生成 hprof 文件

我正在 Eclipse 中调试一个 Android 幻灯片播放应用程序。我正在尝试生成堆转储以查找内存泄漏的来源,但在我正在测试的文件夹“/data/data/app 文件夹/”android 设备中没有生成 hprof 文件。以下是我生成文件的代码。那有什么问题?提前致谢!