问题标签 [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.
java - OutOfMemoryError - 创建 hprof 后如何杀死 JVM
我希望我的 java 在捕获时退出OutOfMemoryError
,我正在使用-XX:+HeapDumpOnOutOfMemoryError
转储hprof
文件。
我无法使用kill -9 <pid>
,因为转储文件时需要启动 JVM hprof
,有没有办法在hprof
文件创建后停止 JVM?
需要明确的是,我使用的是 Sun 的 JVM 版本 6。
java - heapdump 大小与 hprof 大小
当我的 jboss 服务器运行 xms 为 4096m 和 xmx 为 4096m 以及 permsize 为 512m 时,我最近以 hprof 格式进行了 heapdump。
生成的 hprof 文件超过 5gb。当我在 visualvm、mat 分析器或 yourkit 中加载堆转储时,我只看到大约 1gb 的总字节。我已尝试更改 yourkit 中的可达性范围,但它显示的大小不超过 1 GB。
知道文件大小与显示的堆转储大小的巨大差异会导致什么吗?
ps:我用的是jdk1.6.0_23
不幸的是,我不允许在这里提交屏幕截图。
在文件系统上,hprof 大小为 5.227.659 kb,在 yourkit 中它指出:
对象:9.738.282 / 浅层大小 740 mb / 保留大小:740 mb 其中可到达的字符串:6.652.515 (68%) / 浅层大小:381 mb (51%) / 保留大小:381 MB (51%)
最大保留大小是 206.810.176 的 byte[]
java - 是否可以从 hprof 转储/堆转储中的线程中查看线程
我有一个大型(5GB)hprof 转储,由应用程序在OutOfMemoryError
发生时创建。(使用 XX:HeapDumpOnOutOfMemoryError)。
不幸的是,发生此错误时没有收集任何日志。重新创建这将需要几个小时。我希望某些工具可以显示来自 hprof 的异常堆栈跟踪或所有线程堆栈等。
我目前正在使用MAT,看不到获取线程信息的方法。我可以使用哪个工具?
(我不确定 hprof 文件是否有关于 OOM 发生时调用的线程/位置的信息)。
(我知道在正常情况下如何进行线程转储。这里的麻烦是事件已经发生了,我只有 hprof 转储。)
android - MAT (Eclipse Memory Analyzer) - how to view bitmaps from memory dump
I'm analyzing memory usage of my Android app with help of Eclipse Memory Analyzer (also known as MAT). Sometimes I can find strange instances of android.graphics.Bitmap
class, utilizing big portion of heap. Problem is what I can't find source of this bitmaps, no filename, no resourceID, nothing. All information what I can find for bitmap is following:
There is a field mBuffer
with array of image pixels, I assume. But it's in some internal Android format, not PNG.
Question: how can I view image represented by this bitmap from memory dump?
java - 如何在 jar 中分析一个类?
mvn assembly:assembly
如果我在试图分析的 JAR(用 编译)中有一个类,那么获取可以与 jhat 或 Eclipse 内存分析器一起使用的有效核心转储的命令是什么?
我试着运行这个:
java -agentlib:hprof=heap=sites,cpu=samples,file=profile.hprof,format=b -jar the-jar.jar
并且当我停止进程时会创建核心转储。
但 jhat 或 Eclipse 内存分析器都不会将此视为有效转储。
jhat 给了我这个警告:
还阅读了 hprof 文档,我看到我必须传递类名。当它在 JAR 中时,我该怎么做?
java - 无法将 coredump 转换为 hprof
我有一个 core.31690 文件,我想将其转换为 hprof。我试过了:jmap -dump:format=b,file=mydump.hprof /usr/bin/java core.31690
但我得到了以下信息:
我尝试在网上查找,但找不到任何东西。任何指针?
java - 使用 YourKit 打开 Hadoop HPROF .profile 文件
YourKit 声称能够打开二进制 HPROF 转储,但它坚持认为从 Hadoop 作业生成的二进制转储不是有效的快照。
转储是通过将mapred.task.profile.params
选项指定为-agentlib:hprof=cpu=samples,heap=sites,depth=6,force=n,thread=y,verbose=n,file=%s,format=b
(如 Hadoop:The Definitive Guide 中所指定)来进行的。
有什么方法可以用 YourKit 打开这个文件吗?是否有其他图形分析工具可以打开创建的文件?
java - 使用 JVMTI 计算 CPU 使用率
我正在寻找我的 java 应用程序的 CPU 使用率。我发现获得 CPU 使用率的最佳方法是 (process_time/elapsed_time)*100.0。对于 java 应用程序,process_time 由 com.sun.management.OperatingSystemMXBean 获取。有没有办法使用 JVMTI 计算 CPU 使用率。
java - HPROF 在尝试查找 Maven 构建内存泄漏时抱怨
我有一个 Maven 构建,它似乎偶尔会出现泄漏,导致 Java 进程耗尽 PermGen 内存(编辑),我从 VisualVM 了解到,每当构建新的时,堆和 PermGen 显着增加。现在我想找出泄漏的位置(编辑:而不仅仅是摆脱偶尔的异常)。
似乎标准的方法是让 HPROF 收集数据以进行验尸分析。但是,这对我来说失败了,并且生成的 java.hprof 文件无法被工具正确解析。
我的“mvn.bat”文件看起来像(Windows 7 上的 64 位 JVM):
我的 MAVEN_OPTS 看起来像
这是“mvn clean”的结果。
(并且不断地不断地)。我不熟悉hprof。
从这里继续的最佳方式是什么?
android - ListActivity 性能问题
我的ListActivity
. 当我打开它并开始滚动时,应用程序会冻结几秒钟,然后就可以平滑滚动了。我没有收到“应用程序未响应”错误。我做了一个*.hprof
堆转储并将其放入 MAT。在这里你可以看到我的泄漏:
好像有什么鱼腥味。也许我没有以正确的方式使用光标。在这里你可以看看我的代码:
EDIT1:
问题不是来自数据库,因为我与以下代码有相同的泄漏:
如果有人能找到内存泄漏,那就太棒了。
问候迈克!