2013-06-20 13 views
6

Java 6アップデート45で実行されているJBossアプリケーションサーバーがあります。私たちはおそらく自分自身を紹介したOutOfMemoryErrorsを実行しています。これらを分析してヒープダ​​ンプを作成したいと考えています。これは以下の例外を除いて失敗します。ReadVirtualが失敗したためにヒープダンプを作成できません

グーグル検索とstackoverflowの検索は私にはあまり役に立ちませんでしたが、誰もこのマシンからヒープダンプを取得する方法を知っていますか?

ありがとうございます!

マーティン

例外は次のとおりです。

C:\>"d:\Program Files\Java\bin\"jmap -F "-dump:format=b,file=D:\heapdumps\20130620_085902_heap.dump" 1832 
Attaching to process ID 1832, please wait... 
Debugger attached successfully. 
Server compiler detected. 
JVM version is 20.45-b01 
Dumping heap to D:\heapdumps\20130620_085902_heap.dump ... 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:597) 
     at sun.tools.jmap.JMap.runTool(JMap.java:179) 
     at sun.tools.jmap.JMap.main(JMap.java:110) 
Caused by: sun.jvm.hotspot.debugger.DebuggerException: Windbg Error: ReadVirtual failed! 
     at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.readBytesFromProcess0(Native Method) 
     at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.readBytesFromProcess(WindbgDebuggerLocal.java:485) 
     at sun.jvm.hotspot.debugger.DebuggerBase$Fetcher.fetchPage(DebuggerBase.java:76) 
     at sun.jvm.hotspot.debugger.PageCache.getPage(PageCache.java:178) 
     at sun.jvm.hotspot.debugger.PageCache.getInt(PageCache.java:96) 
     at sun.jvm.hotspot.debugger.DebuggerBase.readCInteger(DebuggerBase.java:355) 
     at sun.jvm.hotspot.debugger.DebuggerBase.readCompOopAddressValue(DebuggerBase.java:459) 
     at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.readCompOopHandle(WindbgDebuggerLocal.java:332) 
     at sun.jvm.hotspot.debugger.windbg.WindbgAddress.getCompOopHandleAt(WindbgAddress.java:122) 
     at sun.jvm.hotspot.oops.Oop.getKlassForOopHandle(Oop.java:235) 
     at sun.jvm.hotspot.oops.ObjectHeap.newOop(ObjectHeap.java:378) 
     at sun.jvm.hotspot.oops.ObjectHeap.iterateLiveRegions(ObjectHeap.java:464) 
     at sun.jvm.hotspot.oops.ObjectHeap.iterate(ObjectHeap.java:249) 
     at sun.jvm.hotspot.utilities.AbstractHeapGraphWriter.write(AbstractHeapGraphWriter.java:51) 
     at sun.jvm.hotspot.utilities.HeapHprofBinWriter.write(HeapHprofBinWriter.java:416) 
     at sun.jvm.hotspot.tools.HeapDumper.run(HeapDumper.java:56) 
     at sun.jvm.hotspot.tools.Tool.start(Tool.java:221) 
     at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:77) 
     ... 6 more 
+0

[このバグ](http://bugs.sun.com/view_bug.do ?bug_id = 6987812)は関連しているようですが、固定されているとマークされています... – fge

+0

ええ、それは私はグーグルで見つけた投稿ですが、それは6u45 JDKの問題ではありません... – SunSear

+0

可能であれば、OpenJDK 6で再現し、再現可能な場合はバグを開く可能性がありますか? – fge

答えて

0

うーんは、他のウェブサイト上で答えを見つけて、これが動作するようには思えません。上で見られるよう

​​

:それは、次のオプションでのOutOfMemoryErrorに遭遇したとき、私たちは今、ヒープダンプを作るためにJVMを求めている

http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html

+1

スタートアップパラメータへのアクセス権があり、プロセスがまだ実行されていない場合は、これが問題ありません。しかし、私はExceptionを取り除くための "本当の"解決策も探しています。残念ながら、このソフトウェアは古いJREバージョンに同梱されています。そのため、JREの更新は役に立ちません。あなた/誰か別の方法を見つけましたか? – Dani

0

ポイントの下に確認してください、

  1. コマンドコンソールを管理者として実行します。
  2. JDKのバージョン(jmapコマンド用)およびJRE (Javaアプリ実行環境)は同じでなければなりません。
  3. は、JDK/JREとなった例外は

JDK/JRE 8と同じことを7try場合は実際に私は、JDK 7でjmapの中でいくつかの問題に直面していましたが、私はJDK 8に移動したときに、私は正常に生成することができましたコマンドの下に

jmapの-dumpのを使用してヒープダ​​ンプ:ファイル= D:\ heapdump \ myHeapDump.hprof -F

関連する問題