`
lanhuidong
  • 浏览: 224018 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

异常没有打印栈信息

    博客分类:
  • Java
阅读更多

最近上的项目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详细打印启动时异常堆栈信息的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring Boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

    SpringBoot打印启动时异常堆栈信息详解

    在本篇文章里小编给大家整理的是关于SpringBoot打印启动时异常堆栈信息,有需要的朋友们可以学习下。

    浅谈log4j 不打印异常堆栈

    主要介绍了浅谈log4j 不打印异常堆栈,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

    【09-异常处理】

    •异常对象的printStackTrace方法用于打印异常的跟踪栈信息,根据printStackTrace方法的输出 结果,我们可以找到异常的源头,并跟踪到异常一路触发的过程。 •面向对象的应用程序运行时,经常会发生一系列方法...

    解析Java异常的栈轨迹及其相关方法

    主要介绍了解析Java异常的栈轨迹及其相关方法,包括栈轨迹的打印和fillInStackTrace方法等,需要的朋友可以参考下

    空指针异常堆栈图.png

    关于空指针异常的简述图

    Win32 异常处理DEMO

    Win32 异常处理DEMO 支持栈打印,调试符号输出

    VC 记录程序崩溃堆栈

    VC 记录程序崩溃堆栈

    搞清楚 Python traceback的具体使用方法

    之前在做Java的时候,异常对象默认就包含stacktrace相关的信息,通过异常对象的相关方法printStackTrace()和getStackTrace()等方法就可以取到异常栈信息,能打印到log辅助调试或者做一些别的事情。但是到了Python,...

    基于SpringBoot2+Jpa+SpringSecurity+redis+Vue的前后端分离系统

    系统日志 记录用户访问监控异常信息 系统缓存管理 将redis的操作可视化,提供对redis的基本操作 Sql监控 采用 druid 监控数据库访问性能 技术栈 基础框架:Spring Boot 2.1.0.RELEASE 持久层框架:Spring boot Jpa ...

    Visual.C#.编程精彩百例

    实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 实例21 简单角色类游戏的...

    疯狂JAVA讲义

    学生提问:为什么要我记住这些异常信息? 91 4.5.5 JDK1.5提供了foreach循环 91 4.6 深入数组 93 4.6.1 内存中的数组 93 学生提问:为什么有栈内存和堆内存之分? 93 4.6.2 基本类型数组的初始化 95 4.6.3 ...

    QUALCOMM平台BUIW开发文档

     不要频繁打印调试信息 91  使用中文 91  内容准确不罗嗦 92 全局变量和__inline函数 92  全局变量 92  慎用全局变量 92  命名全局变量 92  修改全局变量 92  __inline函数 92  优缺点 92  哪些...

    BaseProject:android基础项目

    基础项目:EasyPermissions (v1.2.0)BaseActivity、BaseFragmentActivity栈管理异常信息收集日志打印Android6.0权限管理通用适配器 Gradle依赖dependencies { implementation 'com.classic.android:core:1.6'}基于...

    智能云:基于springcloud的脚手架,支持服务合并部署与扩展部署,接口加解密签名,数据脱敏,接口数据模拟,接口文档自动生成,请求幂等校正,接口日志,切面打印,分表分库分布式事务等

    业务无关代码自动生成业务无关功能(如日志打印,公共配置,常用工具类等)抽象为启动器支持多语言(国际化)敏感配置信息支持加密单体服务开发接阶段测试不依赖其他服务(拦截测试,关闭eureka,sentinel等)技术栈...

    Delphi5开发人员指南

    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_传统链表和非传统链表 ...

    《Visual.C#.编程精彩百例》配套光盘.part2

    实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 ...

    《Visual.C#.编程精彩百例》配套光盘part1

    实例14 调用栈记录异常点 实例15 使用C#异常的栈跟踪 实例16 运行期间检测变量类型 实例17 常用值类型的原型定义 实例18 打印杨辉三角形 实例19 比较学生信息 实例20 获取车辆信息 ...

Global site tag (gtag.js) - Google Analytics