Signals used by the JVM

The types of signals are Exceptions, Errors, Interrupts, and Controls.

Table 1 shows the signals that are used by the JVM. The signals are grouped in the table by type or use, as follows:
Exceptions
The operating system synchronously raises an appropriate exception signal whenever an unrecoverable condition occurs.
Errors
The JVM raises a SIGABRT if it detects a condition from which it cannot recover.
Interrupts
Interrupt signals are raised asynchronously, from outside a JVM process, to request shut down.
Controls
Other signals that are used by the JVM for control purposes.
Table 1. Signals used by the JVM
Signal Name Signal type Description Disabled by -Xrs Disabled by -Xrs:sync
SIGBUS (7) Exception Incorrect access to memory (data misalignment) Yes Yes
SIGSEGV (11) Exception Incorrect access to memory (write to inaccessible memory) Yes Yes
SIGILL (4) Exception Illegal instruction (attempt to call an unknown machine instruction) Yes Yes
SIGFPE (8) Exception Floating point exception (divide by zero) Yes Yes
SIGABRT (6) Error Abnormal termination. The JVM raises this signal whenever it detects a JVM fault. Yes Yes
SIGINT (2) Interrupt Interactive attention (CTRL-C). JVM exits normally. Yes No
SIGTERM (15) Interrupt Termination request. JVM will exit normally. Yes No
SIGHUP (1) Interrupt Hang up. JVM exits normally. Yes No
SIGQUIT (3) Control A quit signal for a terminal. By default, this triggers a Javadump. Yes No
SIGTRAP (5) Control Used by the JIT. Yes Yes
SIGRTMIN (32) Control Used by the JVM for internal control purposes. No No
SIGRTMAX (64) Control Used by the SDK. No No
SIGCHLD (17) Control Used by the SDK for internal control. No No
Note: A number supplied after the signal name is the standard numeric value for that signal.

Use the -Xrs (reduce signal usage) option to prevent the JVM from handling most signals. For more information, see Oracle's Java™ application launcher page.

Signals 1 (SIGHUP), 2 (SIGINT), 4 (SIGILL), 7 (SIGBUS), 8 (SIGFPE), 11 (SIGSEGV), and 15 (SIGTERM) on JVM threads cause the JVM to shut down; therefore, an application signal handler should not attempt to recover from these unless it no longer requires the JVM.