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

java - Android 上的对象分配和 String.format()

String.format()StringBuilder每次调用时都会创建一个对象。

String.format考虑到 Android 上对对象分配和垃圾收集的担忧,用某种可重用的格式化程序和对象池 替换操作(特别是在日志记录操作中)是否有意义?

是否有现有的图书馆?

0 投票
1 回答
198 浏览

netbeans - 保留大小计算,包括堆栈帧变量?

我发现了大量关于“保留大小”的问题,接受的答案似乎是:

对象的保留大小是该对象从垃圾收集中保留的内存量。

现在,我一直在使用 Netbeans 分析器库(在 中完成保留大小计算)对文件中的保留大小(如此处定义)进行编程hprof计算。工作得很好(抱歉,为简洁起见,使用了 kotlin):HprofHeap.java

sizeMap当保留大小只有边际数量时,我注意到的是 Netbeans 仅计算不在堆栈上的对象的保留大小。因此分配给 的局部变量(在堆栈上分配)Thread不会包含在保留大小中

我的问题是:有没有办法让 netbeans 库将堆栈元素视为依赖对象,例如 Yourkit Profiler 的计算方式?如果上一个问题的答案是“否”,我将如何添加这样的功能?

0 投票
1 回答
1595 浏览

java - java堆转储文件的大小

我的应用程序服务器正在生成大小从 2G 到 3G 不等的 .hprof 文件。为什么堆转储文件比通过 -Xmx 分配的内存大。

它们不应该等于最大堆大小吗?这是发生内存不足错误的时候。

0 投票
1 回答
696 浏览

android - 如何在 android 应用程序中找到哪些对象占用了大部分内存?

我正在尝试查看哪些对象占用了我的应用程序中的大部分内存。
使用 Android 的工作室 Android->Memory 选项卡,我可以看到内存是如何增加的,但我看不到哪些对象占用了多少内存。
我使用 DDMS 来获取 hprof,并从 Memory 选项卡中进行了 start alocation tracking 和“Dump Java Heap”。
我安装了独立垫,但是当我尝试打开 hprofs 时,我得到了两个:

打开堆转储“Snapshot_2016.01.08_19.00.05.hprof”时出错。检查错误日志以获取更多详细信息。

问题是什么?
我的 Android Studio 版本是 1.3.2

0 投票
1 回答
307 浏览

java - hprof 结果中的“accum”字段是什么意思?

当我使用选项运行 java 时:

hprof 的结果如下:

我想知道accum归档是什么意思?

谢谢。

0 投票
2 回答
2733 浏览

android - Android Studio HPROF 参考树元素颜色代表什么?

有人能告诉我 Android Studio 中 HPROF Viewer 中的粗体、蓝色一号和红色一号的确切含义是什么吗?

我在参考树面板中询问了一个。

粗体项目

蓝色项目

红色项目

最好的祝福。

0 投票
2 回答
1025 浏览

java - Java HPROF 堆转储缺少字段?

我正在使用 Eclipse Memory Analyzer 来查看 HPROF 文件。它为同一类的不同实例显示不同数量的字段:

似乎丢失的字段可能永远不会被分配,但那些丢失的字段的值是什么?它们是“零”值还是来自字段初始化程序的值?

编辑:

JVM是Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)

编辑2:

似乎缺少的字段不是“零”(通过调试确认),但可能从未分配给。

下面的 OQL 查询显示 Eclipse Memory Analyzer 实际上知道这些字段中的实际值,但只是选择不显示它们......

0 投票
0 回答
1385 浏览

java - 无法在 Eclipse 内存分析器中加载 HPROF 文件

在 MAT 中加载 HPROF 文件时出现以下错误

HPROF 解析器遇到了它无法安全处理的违反 HPROF 规范的问题。这可能是由于文件截断或 JVM 中的错误造成的。请考虑在 eclipse.org 上提交错误。要继续解析转储,您可以使用 -DhprofStrictnessWarning=true 或在 Preferences > HPROF Parser > Parser Strictness 下设置严格模式。有关详细信息,请参阅内部异常。HPROF 解析器遇到了它无法安全处理的违反 HPROF 规范的问题。这可能是由于文件截断或 JVM 中的错误造成的。请考虑在 eclipse.org 上提交错误。要继续解析转储,您可以使用 -DhprofStrictnessWarning=true 或在 Preferences > HPROF Parser > Parser Strictness 下设置严格模式。有关详细信息,请参阅内部异常。堆转储记录 0x20 大小 15,93,39, 104 不是受支持的记录类型。堆转储记录 0x20 大小 15,93,39,104 不是受支持的记录类型。

更改首选项后,它会引发以下错误

在以下期间发生内部错误:“从 '/home/local/ZOHOCORP/raamesh-1460/Downloads/Rajesh/java_pid2360.hprof' 解析堆转储”。java.lang.NullPointerException

JDK版本:1.6

0 投票
0 回答
109 浏览

android - Android 堆转储太小

我正在尝试为 android 应用程序获取堆转储(大量 UI 测试与泄漏等)消耗接近 160Mb(在日志和 ddms 中看到) - 但获得只有 50Mb 大小的堆 hprof 文件。

尝试在 Android Studio 或 MAT 中打开它会导致错误:

处理 hprof 文件时出现意外错误:null

或 hprof-conv

错误:读取 M 个字节中的 N 个

0 投票
2 回答
1391 浏览

android - 无法将转储 HPROF 文件从 Android Studio 转换为 MAT 格式

当我尝试将 android studio 终端中的 HPROF 文件转换为 MAT 格式时:

1) hprof-conv [-z] d:/dump.hprof d:/outfile.hprof

2) hprof-conv d:/dump.hprof d:/outfile.hprof

我有同样的答案:

用法:hprof-conf [-z] infile outfile

-z:排除非应用堆,例如 Zygote

为一个或两个文件指定“-”以使用标准输入/标准输出。

版权所有 (C) 2009 Android 开源项目

该软件是根据 Apache 许可证 2.0 版(“许可证”)许可的源代码构建的。您可以在以下网址获取许可证的副本

有关详细信息,请参阅此软件的相关通知文件。

但是 android 平台工具中不存在 hprof-conf 命令。

我该怎么做才能转换文件?