Как получить более подробную информацию о «Внутренних исключениях» в выходных данных `jcmd <pid>VM.info" - PullRequest
1 голос
/ 05 апреля 2019

Я выполнил jcmd <pid> VM.info диагностическую команду для моего приложения Clojure, работающего в контейнере Docker - вот базовая информация о системе:

# JRE version: OpenJDK Runtime Environment (11.0.1+13) (build 
11.0.1+13-Ubuntu-3ubuntu3.18.10.1)
# Java VM: OpenJDK 64-Bit Server VM (11.0.1+13-Ubuntu-3ubuntu3.18.10.1, 
mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)

Одна вещь, которую я заметил, это раздел Internal exceptions (10 events), в котором я нашел несколько примеров следующих исключений:

Classes redefined (0 events):
No events

Internal exceptions (10 events):
Event: 4103.838 Thread 0x00007f800400c800 Exception <a 'java/lang/ClassCastException'{0x00000000c78ba0b0}: class clojure.lang.Keyword cannot be cast to class java.lang.CharSequence (clojure.lang.Keyword is in unnamed module of loader 'app'; java.lang.CharSequence is in module java.base of loader
...

Теперь мне интересно, что на самом деле представляют собой эти «Внутренние исключения». Это что-то добавлено в мой код приложения и, возможно, молча игнорируется? Могу ли я получить больше информации (возможно, трассировку стека) о них?

Я попытался покопаться в исходном коде JDK, но не смог найти столько подробностей о «Внутренних исключениях». Единственное, что я нашел, - это метод VMError :: print_vm_info и соответствующее поле _exceptions в events.cpp

...