Windows下jmap命令报错问题
程序员文章站
2022-04-15 08:53:18
最近换了笔记本,新的工作环境下jmap命令居然在报错,而jps、jstat、jinfo、jstack都能正常使用,所以初步排除进程号的问题。 同时,又试了下 一个不存在的进程号(这里先埋个坑),还是报同样的错误,根据异常栈的信息,怀疑是Windows下的命令行没有 ......
最近换了笔记本,新的工作环境下jmap命令居然在报错,而jps、jstat、jinfo、jstack都能正常使用,所以初步排除进程号的问题。
attaching to core 17536 from executable heap, please wait... error attaching to core file: windbg error: opendumpfile failed! sun.jvm.hotspot.debugger.debuggerexception: windbg error: opendumpfile failed! at sun.jvm.hotspot.debugger.windbg.windbgdebuggerlocal.attach0(native method) at sun.jvm.hotspot.debugger.windbg.windbgdebuggerlocal.attach(windbgdebuggerlocal.java:160) at sun.jvm.hotspot.hotspotagent.attachdebugger(hotspotagent.java:673) at sun.jvm.hotspot.hotspotagent.setupdebuggerwin32(hotspotagent.java:569) at sun.jvm.hotspot.hotspotagent.setupdebugger(hotspotagent.java:335) at sun.jvm.hotspot.hotspotagent.go(hotspotagent.java:304) 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.pmap.main(pmap.java:72) 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)
同时,又试了下jmap heap xxx
一个不存在的进程号(这里先埋个坑),还是报同样的错误,根据异常栈的信息,怀疑是windows下的命令行没有管理员权限,无法访问dump文件,所以试了下以管理员运行cmd,然后jmap heap,然而还是报同样的错:
这下无助了,百度、*逛了一圈也没找到解决问题的办法.....先放一放?
=
==============================华丽丽的分隔符==============================
=
大概过了不知道多久,猛地想起来 - - “是不是命令没敲对?”,jmap -h
走一波,仔细看截图中红框内容,然后羞愧的低下了头(一定是中秋月饼吃多了才导致的,嗯!)
如图jmap有三种用法,1、连接正在运行的进程 2、分析core文件,即dump文件 3、连接其他机器的jvm进程所以,上面jmap heap xxx
命令的问题就出在搞忘记加 " - " 了,被jmap当作是要分析 “heap” 这个快照文件了,报错也就理所应当了。
总结:
jdk自带的工具包中,像jps、jmap、jstack等这些命令,指定option
一般都是要带 “ - ” 的,而紧跟的参数是不带杠的,这点需要牢记。还有就是报异常了不要慌,一定要仔细读异常提示信息和异常栈,拿本例来说,其实第一行已经提示清楚了(小小吐槽下:要是把文件名也打印出来就更好了)
推荐阅读
-
解决Mysql5.7.17在windows下安装启动时提示不成功问题
-
jquery库或JS文件在eclipse下报错问题解决方法
-
windows下启动和关闭oracle的命令教程
-
解决Windows10下mysql5.5数据库命令行中文乱码问题
-
使用cmd运行mysql数据库的时候,报错:"不是内部命令也不是可有运行的程序"问题的解决办法
-
windows系统下mysql数据库字符编码问题分析之需要修改字符集为UTF-8
-
windows下apache的简单命令
-
IE8下Jquery获取select选中的值post到后台报错问题
-
Windows下利用Gvim写PHP产生中文乱码问题解决方法
-
Windows7更新补丁KB4025341下载(附修复解决问题汇总) 32位/64位