(Why bother? These are arcane details seldom discussed under the spotlight, but practically important in most java/c++ integrations.)
Most JVM exits happen with some uncaught exception or explicit System.exit(). These are
soft-landings — you always know what actually killed it.
In contrast, the
hard-landing exits result in a hs_err_pid.log file, which gives cryptic clues to the cause of death. For example, this message in the hs_err file is a null pointer in JNI —
siginfo: ExceptionCode=0xc0000005, reading address 0x00000000
Note this hs_err file is produced by a fatal error handler. However, if you pull the power plug, the FEH may not have a chance to run, and you get what I call an “
unmanaged exit“. Unmanaged exit is rare. I have yet to see one.
People often ask what bad things could cause a hard landing? P79 [[javaPerformance]] mentions that FEH can fire due to
* fault in application JNI code
* fault in OS native code
* fault in JRE native code
* fault in the VM itself