我已经在运行于Docker容器中的Clojure应用程序上运行了jcmd <pid> VM.info
诊断命令-这是基本的系统信息:
# 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方法中的events.cpp方法和相关的_exceptions
字段