- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
目前我有一个核心转储文件,我想提取堆转储。无论我尝试什么,我总是会收到以下错误消息:
god@heaven:~$ sudo /opt/java-MyApp/bin/jmap -dump:format=b,file=my-file.hprof /opt/java-MyApp/bin/java /home/god/tmp/core
[sudo] password for god:
Attaching to core /home/god/tmp/my-app-core-dump from executable /opt/java-MyApp/bin/java, please wait...
Error attaching to core file: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)
sun.jvm.hotspot.debugger.DebuggerException: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)
at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:411)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:156)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:191)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at sun.tools.jmap.JMap.main(JMap.java:130)
如果我尝试用 gdb 打开核心,它就像一个魅力:
gdb --core core
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
[New LWP 11241]
[New LWP 11242]
[New LWP 11243]
[New LWP 11244]
[New LWP 11245]
...
[New LWP 23423]
[New LWP 30560]
[New LWP 11240]
Core was generated by `/opt/java-MyApp/bin/java -Djava.util.logging.config.file=/opt/MyAp'.
#0 0x0000003c838cc0a6 in ?? ()
[Current thread is 1 (LWP 11241)]
(gdb)
从我读过的所有内容来看,我应该确保将 JVM 安装在与使用 {{gcore}} 完成核心转储时相同的路径和版本上。完成后,我需要做的就是用那个确切的 jvm 调用 jmpa:
sudo $JVM_USED_WHILE_GCORE_HOME/bin/jmap -dump:format=b,file=$OUTPUT_HPROF_FILE $JVM_USED_WHILE_GCORE_HOME/bin/java $CORE_FILE_PATH
有什么我想念的吗?为什么我总是收到“在远程进程中找不到符号“gHotSpotVMTypes””错误消息?
最佳答案
问题很简单。 /opt/java-MyApp/bin/java
路径是一个符号链接(symbolic link)
,一旦我重新创建了我在用于生成核心转储的机器上的结构它就像一个魅力。这些库似乎是按其规范路径使用的。
关于java - 从核心转储中提取堆转储 (hprof),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41758203/
我有一个 java.hprof.txt 文件(在 OutOfMemoryError 后自动生成),我想将其转换为二进制 hprof 格式。有什么简单的方法可以做到这一点吗? 最佳答案 不,没有。您必须
我的测试设备版本是 5.0.1 (Lollipop)。 我在 Android Studio 1.3 中获取了 Android 堆转储文件。 但是我看到了错误信息。 所以我尝试在 DDMS 中获取转储文
尝试使用内存分析器打开 HPROF 文件(由 Debug.dumpHprofData 创建)时出现以下异常: java.io.IOException: Unknown HPROF Version (J
Eclipse Memory Analyzer 文档说它可以打开 IBM 可移植堆转储文件 (*.phd): http://help.eclipse.org/luna/index.jsp?topic=
如果我使用任何 Java 应用程序(例如 VisualVM)打开堆转储(hprof 文件),VisualVM 是否需要比 hprof 文件大小更多的堆内存? 就我而言,hprof 是 4Gb 文件,V
我正在使用 Eclipse Memory Analyzer 查看 HPROF 文件。它为同一类的不同实例显示不同数量的字段: 看起来缺失的字段可能从未被分配过,但是这些缺失字段的值是多少?它们是“零”
我想知道是否有办法“安排”HPROF转储,以便我们可以每天(或每小时,具体取决于大小)生成一个 HPROF 文件。 我的想法是在生产系统上添加分析,并将其作为日常报告的一部分,这样它就成为“例行公事”
目前我有一个核心转储文件,我想提取堆转储。无论我尝试什么,我总是会收到以下错误消息: god@heaven:~$ sudo /opt/java-MyApp/bin/jmap -dump:format=
我在控制台日志中看到以下错误: HPROF ERROR: unable to resolve a method id HPROF ERROR: got NULL trace in obj_alloc
在我的应用程序中,我可以选择捕获 hprof 转储。我使用过 android.os.Debug.dumpHprofData(字符串文件名) 最初我虽然通过上述方法生成的 hprof 数据是用于整个装置
最近,我在运行应用程序时遇到了 java.lang.OutOfMemoryError 异常。 在一个这样的实例中,我能够使用 jvisualvm 获取堆转储。 我可以使用 NetBeans 8.1 I
这个问题在这里已经有了答案: How do I analyze a .hprof file? (7 个答案) 关闭 5 年前。 我正在运行 Java 应用程序并遇到内存不足的错误。 .hprof 文
正如许多有用网站所详述的那样,分析 Android 应用程序内存使用情况的一种方法是执行“kill -10 [PID]”以触发 HPROF 转储。这似乎适用于某些设备,并且 logcat 通常包含如下
我想跟踪我的应用程序的内存泄漏。但是当我想从 DDMS 按下转储 HPROF 文件按钮时,我收到一条错误消息:“hprof:无法打开/sdcard/com.google.android.apps.up
我尝试将转储从 Android Device Monitor 转换为 Eclipse Memory Analyzer 格式。我使用下一个命令 hprof-conv dump.hprof convert
有时,尤其是在我的应用程序中实现新功能时,我会使用 DDMS + HPROF 来分析内存和堆的使用情况。由于该应用程序似乎没有任何性能 - ANR 问题并且一切正常,最初我并不关心它 - 但现在,我看
我有一个非常大的堆转储 (.hprof) 文件 (16GB)。当我尝试在 Visual Vm 中打开它时,VM 只是挂起。我试图在 JProfiler 中打开它。 Jprofiler 给了我一个内存不
我正在尝试以编程方式分析 hprof 文件。使用 android-sdk 中的 hprof-conv 工具,我生成了一堆 com.your.package.index 文件。 如何以编程方式解析这些
我的程序抛出以下异常: java.lang.OutOfMemoryError: unable to create new native thread 但是当我将 -XX:+HeapDumpOnOutO
我正在调查使用 Eclipse 的内存分析器 (MAT) 分析 HPROF 文件。支配树、报告和 OQL 界面看起来非常有用。但所有这些都必须通过 MAT 软件手动完成。 是否有命令行界面,以便我可以
我是一名优秀的程序员,十分优秀!