最近上的项目bug很多,服务器经常爆java.lang.NullPointerException,但是却没有打印在哪行抛出这个异常。原来这是JVM在server模式下做的性能优化。可以通过加参数-XX:-OmitStackTraceInFastThrow来禁止这种优化。
测试代码:
package com.nexusy.test;
public class Test {
public static void main(String[] args) {
int num = 0;
for (int i = 0; i < 20000; i++) {
try {
String o = null;
o.toString();
} catch (Exception e) {
if(e.getStackTrace().length == 0){
e.printStackTrace();
num++;
}
}
}
System.err.println(num++);
}
}
如果不是在服务器上,需指定JVM为服务器模式:java -server com.nexusy.test.Test
当代码中第九行类型为Object以及自定义类型,JVM不会进行优化,当为String,Long,Integer等类型,则会进行优化。根据参考资料,所有”cold” built-in exceptions会进行优化,但是什么是”cold” built-in exceptions?
参考资料:http://java.sun.com/j2se/1.5.0/relnotes.html#hotspot
分享到:
相关推荐
主要给大家介绍了关于Spring Boot详细打印启动时异常堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
在本篇文章里小编给大家整理的是关于SpringBoot打印启动时异常堆栈信息,有需要的朋友们可以学习下。
主要介绍了浅谈log4j 不打印异常堆栈,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
•异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出 结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。 •面向对象的应用程序运行时,经常会发生一系列方法...
主要介绍了解析Java异常的栈轨迹及其相关方法,包括栈轨迹的打印和fillInStackTrace方法等,需要的朋友可以参考下
关于空指针异常的简述图
Win32 异常处理DEMO 支持栈打印,调试符号输出
VC 记录程序崩溃堆栈
之前在做Java的时候,异常对象默认就包含stacktrace相关的信息,通过异常对象的相关方法printStackTrace()和getStackTrace()等方法就可以取到异常栈信息,能打印到log辅助调试或者做一些别的事情。但是到了Python,...
系统日志 记录用户访问监控异常信息 系统缓存管理 将redis的操作可视化,提供对redis的基本操作 Sql监控 采用 druid 监控数据库访问性能 技术栈 基础框架:Spring Boot 2.1.0.RELEASE 持久层框架:Spring boot Jpa ...
实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 实例21 简单角色类游戏的...
学生提问:为什么要我记住这些异常信息? 91 4.5.5 JDK1.5提供了foreach循环 91 4.6 深入数组 93 4.6.1 内存中的数组 93 学生提问:为什么有栈内存和堆内存之分? 93 4.6.2 基本类型数组的初始化 95 4.6.3 ...
不要频繁打印调试信息 91 使用中文 91 内容准确不罗嗦 92 全局变量和__inline函数 92 全局变量 92 慎用全局变量 92 命名全局变量 92 修改全局变量 92 __inline函数 92 优缺点 92 哪些...
基础项目:EasyPermissions (v1.2.0)BaseActivity、BaseFragmentActivity栈管理异常信息收集日志打印Android6.0权限管理通用适配器 Gradle依赖dependencies { implementation 'com.classic.android:core:1.6'}基于...
业务无关代码自动生成业务无关功能(如日志打印,公共配置,常用工具类等)抽象为启动器支持多语言(国际化)敏感配置信息支持加密单体服务开发接阶段测试不依赖其他服务(拦截测试,关闭eureka,sentinel等)技术栈...
4.6.8 运行没有窗体的项目 111 4.6.9 退出Windows 112 4.6.10 防止关闭Windows 113 4.7 总结 113 第5章 理解Windows消息 114 5.1 什么是消息 114 5.2 消息的类型 115 5.3 Windows消息系统是如何工作的 115 5.4 ...
07_链表的创建和打印 08_链表的插入操作和辅助指针变量分析_传智扫地僧 09_链表的删除和销毁 10_链表的逆置_传智扫地僧 11_链表的逆置_课堂答疑 12_课堂答疑pheadnextnext 13_中午课程回顾 14_传统链表和非传统链表 ...
实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 ...
实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 ...