私は、メモリリークを調査するのに役立つJavaヒープダンプを取ろうとしています。私はこれを使用するたびに:問題Javaヒープダンプを取る
jmap -J-d64 -dump:format=b,file=myheapdump -F 29498
ヒープダンプファイルを約16048キロバイトに取得し、成長を停止し、jmapは永遠に実行され、私はそれを殺すしない限り、停止しません。また私は、この使用してみました:
jcmd 29498 -F GC.heap_dump heapdump.hprof
をしかし、私はルートからそれを実行しておりますので、プロセスが他のユーザから実行されて、私はこれを取得されています
com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file: target process not responding or HotSpot VM not loaded
at sun.tools.attach.LinuxVirtualMachine.<init>(LinuxVirtualMachine.java:106)
at sun.tools.attach.LinuxAttachProvider.attachVirtualMachine(LinuxAttachProvider.java:63)
at com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:208)
at sun.tools.jcmd.JCmd.executeCommandForPid(JCmd.java:147)
at sun.tools.jcmd.JCmd.main(JCmd.java:131)
だから私は、私の質問が何であるかを推測します私は間違っていると、このヒープダンプを取得しようとする前進するための最善の方法は何ですか? jcmd使用しているとき、あなたはこの回答に記載されたJVM引数を追加してみてくださいすることができ、エラーを回避するには
JVMの実行に使用したのと同じユーザーアカウントから 'jmap'(-Fなし)を実行するとどうなりますか? – apangin
ユーザーに許可がない旨のエラーが表示されます – jymbo
どのような権限ですか?ダンプファイルを作成するには?ユーザーに書き込み権限がある別のディレクトリを試してください。 – apangin