NullPointerException异常丢失堆栈信息

简介: 问题描述手下一个项目,日志中存在以下没有任何堆栈信息的异常:这是Hotspot虚拟机的fast throw机制对抛出异常的优化导致。当nullpointer、除零等异常在相同位置抛出一定多次后,优化机制会去掉堆栈信息缩短抛出流程的时间。

问题描述

手下一个项目,日志中存在以下没有任何堆栈信息的异常:


img_222df3fcd80a5e495526f01c614e3f84.png

这是Hotspot虚拟机的fast throw机制对抛出异常的优化导致。当nullpointer、除零等异常在相同位置抛出一定多次后,优化机制会去掉堆栈信息缩短抛出流程的时间。

solution

增加启动参数:-XX:-OmitStackTraceInFastThrow。例:

  • 命令行方式
java -XX:-OmitStackTraceInFastThrow -classpath . NpeThief
  • tomcat启动参数
Environment='CATALINA_OPTS=-Xms512M -Xmx2048M -server -XX:+UseParallelGC -XX:-OmitStackTraceInFastThrow'

参考

1.http://jawspeak.com/2010/05/26/hotspot-caused-exceptions-to-lose-their-stack-traces-in-production-and-the-fix/
2.https://stackoverflow.com/questions/16568253/difference-between-jvm-and-hotspot

目录
相关文章
|
9月前
|
C++
C++ 捕获所有异常并拿到错误原因的方法
C++ 捕获所有异常并拿到错误原因的方法
259 0
|
9月前
|
Java C++ Spring
解决NoUniqueBeanDefinitionException异常的方法
了解Spring框架中`NoUniqueBeanDefinitionException`异常的原因和解决方案。此异常发生在容器内有多个相同类型的bean时,Spring无法决定注入哪个bean。解决方法包括:使用`@Primary`注解标记首选bean,利用`@Qualifier`注解配合`@Autowired`、`@Resource`、`@Inject`或`@Value`指定bean名称。选择哪种方法取决于业务需求和具体场景,预防措施是避免创建多个同类型bean或使用`@Primary`注解。
289 0
打印全部异常堆栈、ExceptionUtils.getFullStackTrace这样最快
打印全部异常堆栈、ExceptionUtils.getFullStackTrace这样最快
370 0
|
4月前
|
监控 Java
捕获线程执行异常的多种方法
【10月更文挑战第15天】捕获线程执行异常的方法多种多样,每种方法都有其特点和适用场景。在实际开发中,需要根据具体情况选择合适的方法或结合多种方法来实现全面有效的线程异常捕获。这有助于提高程序的健壮性和稳定性,减少因线程异常带来的潜在风险。
53 1
|
5月前
|
缓存 Linux C++
map异常崩溃分析汇总
文章讨论了std::map和std::set在某些情况下崩溃的原因,包括结构体字节对齐问题、多线程资源同步问题、以及比较器的实现问题,并提供了相应的解决方案。
125 0
|
5月前
|
Python
自定义异常堆栈信息
自定义异常堆栈信息
66 0
|
8月前
|
Java
JavaSE——异常(2/2)-异常的处理(记录异常并提示 、尝试重新修复)
JavaSE——异常(2/2)-异常的处理(记录异常并提示 、尝试重新修复)
64 1
|
8月前
|
Java 测试技术
解决NullReferenceException异常的方法分析
解决NullReferenceException异常的方法分析
|
前端开发 rax Linux
【CSAPP】异常控制流 | 异常表 | 异常类别 | 同步异常 | 异步异常
【CSAPP】异常控制流 | 异常表 | 异常类别 | 同步异常 | 异步异常
160 0
|
存储 JSON 数据格式