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

java - hprof 文件格式

有谁知道.hprof(二进制堆转储)文件格式的参考?

有谁知道处理 .hprof 文件的库?我知道帽子可以做到这一点,VisualVM也可以通过 NetBeans 插件做到这一点。但是还有其他人吗?

0 投票
2 回答
16961 浏览

java - -XX:+HeapDumpOnOutOfMemoryError 不在 OOM 中创建 hprof 文件

我使用以下参数(以及其他参数)开始我的 java 代码(Vista 中的 1.6.0_16)-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=../logs。我运行代码,我可以在日志中看到有两个 OOM。

我知道的第一个是因为我可以在标准输出中看到正在创建 hprof 文件:

然后,在代码的最后,我得到了另一个 OOM,我捕获了这个,但我没有创建第二个 hprof 文件。有谁知道这是为什么??是因为我捕获了OOM异常吗?

0 投票
4 回答
34951 浏览

java - 可以随意生成HPROF文件吗?

我有一个行为可疑的 java 进程。我想看看使用各种 HPROF 分析工具的情况。

如何即时生成一个?

0 投票
2 回答
1414 浏览

java - 内存转储比可用内存小得多

我有一个配置为在 OOM 上创建内存转储的 Tomcat 应用程序服务器,它以 -Xmx1024M 启动,因此他应该可以使用 Gigabyte。

现在我找到了一个这样的转储,它只包含 260MB 的未保留内存。转储怎么可能比他应该有的大小小得多?

0 投票
1 回答
1179 浏览

java - 从应用程序代码中获取其他进程的 Hprof 转储

在我的应用程序中,我可以选择捕获 hprof 转储。我用了

android.os.Debug.dumpHprofData(字符串文件名)

最初我虽然上述方法生成的 hprof 数据是针对整个设备的,但事实并非如此。生成的 hprof 数据仅适用于我的进程。

现在我也在尝试为其他进程生成 hprof 数据。我需要从应用程序代码中获取所有正在运行的进程的 Hprof 转储。

从 adb shell 我尝试了“kill -10”,该命令将为 data/misc 文件夹中的相应进程生成 hprof 文件。

现在的问题是该命令在 adb shell 提示符下运行良好,但我无法将该命令嵌入到 mycode。

我的代码就像

Runtime.getRuntime().exec("chmod 777 /data/misc") Runtime.getRunTime().exec("kill -10")

没有抛出异常,但不知何故它不起作用。当我给出我的进程 ID 时,上面的相同代码正在为我的进程捕获 Hprof 转储。

我尝试使用“android.os.Process.sendSignal(int pid,android.os.Process.SIGNAL_USR1);” 还有。遇到同样的问题。它正在为我的进程捕获 Hprof 转储。对于其他进程,它不起作用。

我们是否需要任何特殊权限才能从我们的进程中杀死其他进程?或者它是一个内置的问题?您能否建议一些可能的方法来从应用程序代码中获取其他进程的 Hprof 转储?

谢谢

0 投票
3 回答
1173 浏览

java - Java 分析:java.lang.Object.hashCode 占用一半的 CPU 时间,但从未显式调用

我已经使用我的多线程程序对我的多线程程序进行了基准测试-agentlib:hprof=cpu=samples ,并且惊讶地在结果中发现以下行:

我从未在我的程序中明确调用 hashCode()。这可能是什么原因?如何理解这次“浪费”的来源,是否正常?

谢谢,大卫

0 投票
2 回答
1296 浏览

scala - 从 sbt 运行 hprof

我该如何hprof逃跑sbt

是否有不同的选项来分析 CPU 与堆?

0 投票
1 回答
4176 浏览

android - 为什么我不能从某些设备获得 HPROF 转储?

正如许多有用的网站所详述的,分析 Android 应用程序的内存使用情况的一种方法是执行“kill -10 [PID]”来触发 HPROF 转储。这似乎适用于某些设备,并且 logcat 通常包含以下内容:

但是,在其他设备上,执行“kill -10”会导致:

我正在尝试的所有设备都已植根,并且我确保将 chmod /data/misc 设置为 777。执行“kill -10”后我没有收到任何错误消息。

如果有帮助,这里是我得到 HPROF 转储的设备:HTC ACE (Desire HD)、HTC G1、HTC Nexus One (T-Mobile)

以下是我没有得到 HPROF 转储的设备:Nexus S、Droid、Droid X、Nexus One (AT&T)

为什么我不能从某些设备获得 HPROF 转储,我可以做些什么来让我获得转储?

0 投票
1 回答
1637 浏览

java - 为什么 hprof 文件的大小比分配给 jvm 的内存量小得多

我们的代码使用 -XX:+HeapDumpOnOutOfMemoryError 标志运行,因此我们在 OOM 上获得了一个 hprof 文件。最近我从安装中得到这样一个文件,我用Eclipse内存分析器(MAT)打开它,我可以看到总大小是46MB,如果进程是用-Xmx1024m启动的怎么办?

大小不应该更接近最大分配大小吗?

这是jdk1.6。

编辑:好的,现在我发现了一个类似的问题,确实可能是 PermGen 空间问题,因为我的过程已经持续了 23 天。我经常创建新线程(据我所知正确结束),也许每秒一次。有人知道我能否以某种方式确认这一点吗?

0 投票
1 回答
3992 浏览

java - 用于计算符合条件的对象的 OQL 语法

如何使用 OQL 语法计算 Eclipse MAT 中的对象?这不起作用:

(我想统计加载到内存中的hibernate pojos的数量)

必须有一个非常快速的方法来做到这一点......谢谢你帮助我!