2021年4月

今天线上出了一个 bug,看日志是空指针异常:

java.lang.NullPointerException: null

但日志里只有这么多,没有详细的栈信息,也就是说,看起来像是人为抛了一个空的 NullPointerException,但看代码确实没有问题,确实打印了详细信息。

搜了一下,原因如下:

JVM 虚拟机会对异常信息进行优化,当相同异常出现很多次,会认为它是热点异常,忽略掉异常堆栈信息;
通过增加 JVM 参数:-XX:-OmitStackTraceInFastThrow 可解决。

于是搜索所有的这个异常的信息,找到第一条,终于发现了详细的栈信息。

顺利定位到了代码位置,修复了问题。