Beendet kill -3 tatsächlich einen Java-Prozess? Oder wird nur ein Thread-Dump generiert?

Beendet kill -3 tatsächlich einen Java-Prozess? Oder wird nur ein Thread-Dump generiert?

CentOS 5.9

kill -3 <java process pid>Was passiert eigentlich, wenn ich laufe ?dieser Red Hat-Artikel, ich verstehe, dass ein Java Thread Dump generiert wird, aber wird der Prozess beendet? Basierend auf meinen Tests scheint dies nicht der Fall zu sein:

[root@foobox ~]# kill -3 14559

[root@foobox ~]# service foo status
foo (pid 14559) is running...

Mit anderen Worten: Könnte ich auf diese Weise einen Thread-Dump sammeln, ohne den Dienst zu beeinträchtigen?

Antwort1

Hoffentlich kill -3wird der JVM-Prozess nicht beendet.

Ein Thread-Dump beeinträchtigt den Dienst während der Stacktrace-Sammlung geringfügig, insbesondere wenn Tausende von Threads ausgeführt werden.

-XrsBeachten Sie, dass die JVM das Signal nicht spezieller verarbeitet, wenn das Flag verwendet wird SIGQUIT. Dann wird das Signal wahrscheinlich den Prozess beenden, sofern nicht in einem nativen Code ein alternativer Handler vorhanden ist.

Antwort2

https://superuser.com/questions/352147/was-bedeutet-kill-3kann Ihnen weitere Informationen geben.

Es liegt am Prozess, zu bestimmen, wie genau er reagieren wird, wenn erSIGQUIT

Da dieses Signal vom Prozess abgefangen, ignoriert oder blockiert werden kann, wird es möglicherweise nicht beachtet kill. Wenn Sie noch genauer hinschauen möchten, empfehle ich, den PID mit zu stapeln, stracewährend Sie ihn SIGQUITmit kill senden.

verwandte Informationen