Currently UIMA AS process doesnt handle uncaught exceptions. Specifically, it should catch OOM Error and exit the process. When the OOM happens now, the jvm dumps an error (stack trace) and the UIMA AS process just hangs. Since JDK 1.5, java supports per thread as well a system wide (for all threads) custom UncaughtExceptionHandler. The application implements this interface and injects the handler to a specific thread via:
Alternatively, one can set a global error handler via:
The latter is the approach that I will implement. When OOM Error happens (and perhaps for all errors), the UIMA AS process should exit. For all other exceptions (not caught in a executing thread), the custom exception handler will simply log the exception at WARNING level.