1

Java アプリケーションがありますが、スタックしているようです。kill -3 を試しましたが、出力は空です (ファイルにリダイレクトされますが、何もありません)。
それが何をしているのかをどのように見ることができますか?

編集:

jstack を試しましたが、クラッシュしました:

Linux # /usr/pkgs/java/1.6.0.25/bin/jstack -F -l 12666
Attaching to process ID 12666, please wait...

A fatal error has been detected by the Java Runtime Environment:

 SIGSEGV (0xb) at pc=0xaf121777, pid=5423, tid=2937191328

JRE version: 6.0_25-b06
Java VM: Java HotSpot(TM) Server VM (20.0-b11 mixed mode linux-x86 )
Problematic frame:
C  [libsaproc.so+0x1777]  void+0x1777
...

EDIT2:

これは jvisualvm クラッシュです:

Linux # /usr/pkgs/java/1.6.0.25/bin/jvisualvm

A fatal error has been detected by the Java Runtime Environment:
SIGSEGV (0xb) at pc=0xf36d0777, pid=18217, tid=4090493856
JRE version: 6.0_25-b06
Java VM: Java HotSpot(TM) Client VM (20.0-b11 mixed mode, sharing linux-x86 )
Problematic frame:
C  [libsaproc.so+0x1777]  void+0x1777

An error report file with more information is saved as:
/tmp/root/feeder_wa/coho_idc/logs/hs_err_pid18217.log

If you would like to submit a bug report, please visit:
http://java.sun.com/webapps/bugreport/crash.jsp
The crash happened outside the Java Virtual Machine in native code.
See problematic frame for where to report the bug.

/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//platform/lib/nbexec: 539 行目: 18217 中止された "/usr/pkgs/java/1.6.0.25/bin/java" -Djdk .home="/usr/pkgs/java/1.6.0.25" -classpath "/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/boot.jar:/usr/pkgs/java/1.6. 0.25/lib/visualvm/platform/lib/org-openide-modules.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/org-openide-util-lookup.jar:/usr/ pkgs/java/1.6.0.25/lib/visualvm/platform/lib/org-openide-util.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/boot_ja.jar:/ usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/boot_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-modules_ja .jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-modules_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util-lookup_ja.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util-lookup_zh_CN .jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib/locale/org-openide-util_ja.jar:/usr/pkgs/java/1.6.0.25/lib/visualvm/platform/lib /locale/org-openide-util_zh_CN.jar:/usr/pkgs/java/1.6.0.25/lib/dt.jar:/usr/pkgs/java/1.6.0.25/lib/tools.jar" -Dnetbeans.dirs= "/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//visualvm:/usr/pkgs/java/1.6.0.25/bin/../lib/visualvm//profiler:" -Dnetbeans .home="/usr/pkgs/java/1.6.0.25/lib/visualvm/platform" '-client' '-Xms24m' '-Xmx256m' '-Dsun.jvmstat.perdata.syncWaitMs=10000' '-Dsun.java2d .noddraw=true' '-Dsun.java2d.d3d=false' -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath="/root/.visualvm/6u23/var/log/heapdump.hprof" org.netbeans.Main --userdir "/root/.visualvm/6u23" "--branding" "visualvm" 0<&0

4

2 に答える 2

2

VisuamVMを試してみてください。バージョン 6 以降のすべての JDK にありjdkInstallDir/bin/visualvmます。

于 2011-06-27T09:29:43.597 に答える
1

あなたは運が悪いと思います。アプリケーションは、kill、jstack、jvisualvm のいずれによってもスレッド ダンプできないデッド状態になることがあります。

これが定期的に発生する場合は、スケジュール スレッド ダンプを設定し、場合によっては jmap -histo:live を設定します。アプリケーションが応答しなくなる前に、スレッド ダンプとメモリ ダンプを収集する必要があります。私はテキスト ファイルよりもダンプを好みます。スクリプトを一晩中 30 分ごとに実行したままにしておくことができ、表示を必要とせず、grep などで簡単に処理できるからです。Jvisualvm は、メモリ リークの根本原因を見つけるのに優れていますが、アプリケーションに負荷をかけ、クラッシュを引き起こす可能性があるため、最初にメモリ リークがあることを確認してください。

于 2011-11-01T11:42:13.647 に答える