Java itself is a very large program which approaches an operating system in its complexity.
While it is usually quite stable, like any program it occasionally has problems like crashes, freezes, etc.
When a Java application process freezes, it can be difficult to detect and recover from.
Because the Java process itself still exists in memory, many external monitoring applications will think
it is alive even though it has stopped responding.
When a JVM freeze occurs, it is usually noticed by users or other systems failing to interact with the application.
Once notified of the problem, often via a complaint from a user, a system administrator then must connect to the server,
kill the frozen JVM, and restart the application.
All of this can potentially take a couple hours if the person who needs to do the work is out at dinner.