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

目录
相关文章
|
8月前
|
C++
C++ 捕获所有异常并拿到错误原因的方法
C++ 捕获所有异常并拿到错误原因的方法
237 0
|
8月前
|
Java C++ Spring
解决NoUniqueBeanDefinitionException异常的方法
了解Spring框架中`NoUniqueBeanDefinitionException`异常的原因和解决方案。此异常发生在容器内有多个相同类型的bean时,Spring无法决定注入哪个bean。解决方法包括:使用`@Primary`注解标记首选bean,利用`@Qualifier`注解配合`@Autowired`、`@Resource`、`@Inject`或`@Value`指定bean名称。选择哪种方法取决于业务需求和具体场景,预防措施是避免创建多个同类型bean或使用`@Primary`注解。
268 0
打印全部异常堆栈、ExceptionUtils.getFullStackTrace这样最快
打印全部异常堆栈、ExceptionUtils.getFullStackTrace这样最快
356 0
|
4月前
|
Python
自定义异常堆栈信息
自定义异常堆栈信息
54 0
|
4月前
|
缓存 Linux C++
map异常崩溃分析汇总
文章讨论了std::map和std::set在某些情况下崩溃的原因,包括结构体字节对齐问题、多线程资源同步问题、以及比较器的实现问题,并提供了相应的解决方案。
|
8月前
|
C语言 C++
C++异常
C++异常
58 0
|
Java
强制要求JVM始终抛出含堆栈的异常(-XX:-OmitStackTraceInFastThrow)
强制要求JVM始终抛出含堆栈的异常(-XX:-OmitStackTraceInFastThrow)
192 0
|
存储 Go
当map在不提前分配内存的时候为什么会抛异常?
当map在不提前分配内存的时候为什么会抛异常?
Logger.error方法之打印错误异常的详细堆栈信息
Logger.error方法之打印错误异常的详细堆栈信息
753 0
|
监控 Java Android开发
RxJava 异常时堆栈显示不正确?解决方法都在这里
RxJava 异常时堆栈显示不正确?解决方法都在这里
153 0
RxJava 异常时堆栈显示不正确?解决方法都在这里

热门文章

最新文章