Windows下jmap命令報錯問題


   最近換了筆記本,新的工作環境下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,然而還是報同樣的錯:

這下無助了,百度、stackoverflow逛了一圈也沒找到解決問題的辦法.....先放一放?

華麗麗的分隔線

大概過了不知道多久,猛地想起來 - - “是不是命令沒敲對?”,jmap -h 走一波,仔細看截圖中紅框內容,然后羞愧的低下了頭(一定是中秋月餅吃多了才導致的,嗯!)

如圖jmap有三種用法,1、連接正在運行的進程 2、分析core文件,即dump文件 3、連接其他機器的JVM進程所以,上面jmap heap xxx命令的問題就出在搞忘記加 " - " 了,被jmap當作是要分析 “heap” 這個快照文件了,報錯也就理所應當了。

總結:

   JDK自帶的工具包中,像jps、jmap、jstack等這些命令,指定option一般都是要帶 “ - ” 的,而緊跟的參數是不帶杠的,這點需要牢記。還有就是報異常了不要慌,一定要仔細讀異常提示信息和異常棧,拿本例來說,其實第一行已經提示清楚了(小小吐槽下:要是把文件名也打印出來就更好了)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM