убить -3 вернуть пустым

У меня есть приложение 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/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


person oshai    schedule 27.06.2011    source источник
comment
Попробуйте выполнить отладку в Eclipse, чтобы увидеть, в каком потоке программа застряла.   -  person Giann    schedule 27.06.2011
comment
У меня нет порта отладки для него. это производственная система.   -  person oshai    schedule 27.06.2011


Ответы (2)


Попробуйте VisuamVM, вы можете найти его в каждом JDK после версии 6 в jdkInstallDir/bin/visualvm.

person Simeon    schedule 27.06.2011
comment
каждое действие, которое я пытаюсь выполнить с visualvm (например, дамп потока), приводит к сбою - person oshai; 27.06.2011
comment
см. ответ в вопросе (здесь недостаточно места) - person oshai; 29.06.2011
comment
@ohadshai, не могли бы вы опубликовать этот /tmp/root/feeder_wa/coho_idc/logs/hs_err_pid18217.log, пожалуйста. - person Simeon; 29.06.2011

Я думаю, вам не повезло. Иногда приложение переходит в мертвое состояние, которое не может быть сброшено ничем, например kill, jstack или jvisualvm.

Если это происходит регулярно, настройте дамп потока по расписанию и, возможно, jmap -histo:live. Вам необходимо собрать дампы потоков и памяти, прежде чем приложение перестанет отвечать на запросы. Я предпочитаю дампы текстовым файлам, потому что вы можете оставить скрипт работать на ночь каждые полчаса, он не требует отображения и может быть легко обработан такими вещами, как grep. Jvisualvm отлично подходит для поиска основной причины утечек памяти, но сначала определите, что она у вас есть, так как это может привести к перегрузке вашего приложения и вызвать сбой.

person KaizenSoze    schedule 01.11.2011