异常日志不完整,NullPointException,ClassCastException无详细堆栈输出

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

异常日志不完整,NullPointException,ClassCastException无详细堆栈输出

问题描述:

问题排查中遇到这样的问题:

只有一个ClassCastException, 没有详细的日志输出,无法定位具体产生该异常的位置,此类问题如何定位?


解决方案:

产生原因:

jdk 1.6开始,默认server模式下当jvm检测到程序在重复抛一个异常,在执行若干次后会将异常吞掉,这里的若干次在jdk1.7测得是20707。即执行20707次后,stackTrace 长度会为0。(各类参考资料不一样,有些说明是10000,有些说明是3000)

当系统大量出现空指针、类型转换、数组越界之后,JVM会自动清空异常中的stackTrace 


JDK源码:

以上可看到,当判断满足的情况下,会对NullPointerException\ArithmeticException\ClassCastException等等进行舍弃异常堆栈的处理


解决方式

服务的启动参数里增加: -XX:-OmitStackTraceInFastThrow   重启服务


已出现问题的环境在重启服务时如何排查?

尝试在沙箱、UAT环境重现问题, 在低频使用环境不会触发这个特性;

由于异常是在若干次后才吃掉,尝试寻找生产环境服务启动后早期的日志,这部分日志仍会输出完整堆栈


参考文献:
https://www.cnblogs.com/share-duke/p/12323576.html


异常日志不完整,NullPointException,ClassCastException无详细堆栈输出

问题描述:问题排查中遇到这样的问题:只有一个ClassCastException, 没有详细的日志输出,无法定位具体产生该异常的位置,此类问题如何定...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息