`
can_do
  • 浏览: 258029 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JMap抓取heap使用统计信息报错

阅读更多
******************************
/////////jmap jdk small version diffrent from jvm jdk vesion////////begin///////
[dev@iZ2ze8us9p89pfk02m9vs1Z ~]$ jmap -heap 1541
Attaching to process ID 1541, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:163)
at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:278)
at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:671)
at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:49)
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:498)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: sun.jvm.hotspot.debugger.DebuggerException: cannot open binary file
at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.access$100(LinuxDebuggerLocal.java:62)
at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$1AttachTask.doit(LinuxDebuggerLocal.java:269)
at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.run(LinuxDebuggerLocal.java:138)
/////////jmap jdk small version diffrent from jvm jdk vesion////////end///////

/////////jmap jdk big version diffrent from jvm jdk vesion////////begin///////
Attaching to process ID 30413, please wait...
Exception in thread "main" java.lang.reflect.InvocationTargetException
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:498)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: java.lang.InternalError: void* type hasn't been seen when parsing int*
at sun.jvm.hotspot.HotSpotTypeDataBase.recursiveCreateBasicPointerType(HotSpotTypeDataBase.java:721)
at sun.jvm.hotspot.HotSpotTypeDataBase.lookupType(HotSpotTypeDataBase.java:134)
at sun.jvm.hotspot.HotSpotTypeDataBase.lookupOrCreateClass(HotSpotTypeDataBase.java:631)
at sun.jvm.hotspot.HotSpotTypeDataBase.createType(HotSpotTypeDataBase.java:751)
at sun.jvm.hotspot.HotSpotTypeDataBase.readVMTypes(HotSpotTypeDataBase.java:195)
at sun.jvm.hotspot.HotSpotTypeDataBase.<init>(HotSpotTypeDataBase.java:89)
at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:395)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:49)
... 6 more
/////////jmap jdk big version diffrent from jvm jdk vesion////////end///////
****************************************
【问题】
执行jmap -heap命令时报错,方法返回参数类型不匹配
【分析】
考虑执行jmap的jdk版本同目标jvm的jdk版本不一致:
1> 如果jmap的jdk版本比目标jvm高,执行会提示方法不兼容错误
2> 如果jmap的jdk版本比目标jvm低,执行会提示jdk版本不一致错误
【解决】
采用执行jmap的jdk版本同目标jvm的jdk版本保持一致。

【温馨提示】
如果您觉得满意,可以选择支持下,您的支持是我最大的动力:

分享到:
评论

相关推荐

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx

    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...

    java使用JMAP定位代码内存泄漏在哪

    3. **GC日志分析**:`jmap -heap &lt;pid&gt;`可以输出JVM的堆配置信息以及垃圾收集的状态。 4. **堆内存统计**:`jmap -finalizerinfo &lt;pid&gt;`可以查看等待Finalizer线程处理的对象,这有时是内存泄漏的一个迹象。 当...

    jmap -dump:format=b,file=heapdump.hprof Pid堆栈文件分析工具

    首先,`jmap`是Java HotSpot虚拟机的一个命令行工具,它可以提供关于JVM的内存信息,如堆内存大小、已分配对象的统计、类加载信息等。在JDK安装目录下的`bin`目录下,可以找到这个工具。`jmap`的主要功能包括: 1. ...

    Kubernetes应用java程序无法使用jmap,jstack的解决方案.docx

    Kubernetes 应用 Java 程序无法使用 jmap, jstack 的解决方案 背景: 在 Kubernetes 环境中,运行 Java 程序时,无法使用 jmap 和 jstack 命令进行性能分析和诊断。这种情况下,无法获取 Java 进程的 pid,导致无法...

    jvm信息jmap使用的基本方法教程

    【JVM信息jmap使用的基本方法教程】 JVM(Java Virtual Machine)是Java程序运行的基础,它负责解析字节码并执行程序。为了优化JVM的性能,开发人员需要掌握一系列工具,其中就包括jmap。jmap是JDK自带的一个命令行...

    IBM HeapAnalyzer

    在Linux环境下,确保使用root权限,然后执行`jmap -heap:format=b pid &gt; heap_dump.hprof`命令,其中`pid`是出现OOM的Java进程ID。 - **打开heap dump**:下载并安装IBM HeapAnalyzer,运行工具,加载刚才生成的`...

    06-VIP-JVM调优实战及常量池详解(1)1

    这些日志包含了GC执行的时间、类型(如Full GC、PSYoungGen、ParOldGen、Metaspace)、内存区域的使用情况以及GC耗时等信息。 GC日志分析可以帮助识别潜在的内存泄漏或过度的垃圾收集活动。例如,日志中的“6160K-&gt;...

    jvm日志解读

    例如,JVM内存设置(如-Xms, -Xmx)可能影响到程序的内存使用,而JDK版本可能影响到某些功能的行为。 4. **异常堆**:在某些情况下,日志会包含异常堆的详细信息,如对象的实例数量、类加载器状态等。这在排查内存...

    IBM的HeapAnalyzer

    1. **生成heap dump**:当应用运行时,使用JConsole、VisualVM或jmap命令生成heap dump文件。 2. **打开heap dump**:在HeapAnalyzer中加载这个文件。 3. **分析**:进行对象搜索、引用分析等操作,寻找可能的问题...

    JVM、GC详解及调优

    1. **内存模型**:JVM内存分为堆内存(Heap)、方法区(Method Area)、虚拟机栈(JVM Stack)、本地方法栈(Native Method Stack)和程序计数器(PC Register)。其中,堆和方法区是线程共享的,而栈和程序计数器是...

    heapdump分析工具

    要生成heapdump,可以使用JVM内置的命令行选项,例如`-XX:+HeapDumpOnOutOfMemoryError`来配置JVM,在出现OOM错误时自动创建heapdump,或者使用`jmap`工具(需要与JDK配套)手动触发dump: ```bash jmap -dump:...

    jmap Eclipse内存分析工具.rar

    1. **生成堆转储(Heap Dump)**: 使用`jmap -dump`命令,可以在运行时将Java堆的完整状态导出为一个二进制文件,通常以`.hprof`为扩展名。 2. **堆统计信息**: `jmap -histo`可以打印出堆中对象的数量和大小的直方...

    java 内存溢出分析工具 HeapAnalyzer

    或者使用`jmap -dump:format=b,file=heap.dump &lt;pid&gt;`命令手动触发dump。 2. **加载Heap Dump** 使用HeapAnalyzer打开生成的heap dump文件。在工具界面中选择“File” -&gt; “Open”,找到并加载dump文件。 3. **...

    java诊断与调优常用命令jmap、jstack、jstat使用实战.pdf

    例如,`jmap -heap [进程ID]` 可以显示堆内存的详细信息,包括eden区、survivor区和old区的使用情况。`jmap -histo [进程ID]` 可以按类型统计对象数量和占用的空间,有助于发现潜在的内存泄漏问题。此外,`jmap -...

    使用jmap分析Java程序性能问题

    ### 使用jmap分析Java...通过使用jmap,开发者不仅可以快速获取到有关程序内存使用的概览信息,还能深入到具体细节,帮助他们更快地解决问题。对于每一个Java开发者来说,掌握jmap的使用方法都是十分必要的技能之一。

    jmap+EclipseMAT:排查内存泄漏的好工具.pdf

    2. 分析内存使用情况:jmap &lt;pid&gt; 可以打印出指定进程的内存使用情况,包括堆 heap 的大小、使用率、垃圾回收频率等信息。 EclipseMAT EclipseMAT 是一个基于 Eclipse 的内存分析工具,用于分析 Java 应用程序中的...

    01HeapAnalyzer.rar

    1. **生成heapdump文件**:在JVM中设置相关参数,如`-XX:+HeapDumpOnOutOfMemoryError`,使得在内存溢出时自动创建heapdump文件,或者通过`jmap`命令手动触发dump。 2. **打开heapdump文件**:使用HeapAnalyzer工具...

    一次Jvm old过高的排查过程实战记录

    接着,我们将使用jmap命令来dump出Jvm的内存信息,并使用jvisualvm工具来查看Jvm的内存情况。 通过查看Jvm的内存情况,我们发现Jvm Old区的使用率非常高,超过了90%。这表明Jvm Old区已经被大量对象占用。我们接着...

Global site tag (gtag.js) - Google Analytics