首页 > 编程语言 >java不打印异常堆栈

java不打印异常堆栈

时间:2023-06-09 16:26:25浏览次数:45  
标签:java 打印 OmitStackTraceInFastThrow jvm 堆栈 异常

背景:

生产环境抛异常,但却没有将堆栈信息输出到日志,只有简单的java.lang.NullPointerException错误信息。

原因分析

JVM在默认启动的时候会加上OmitStackTraceInFastThrow参数,含义是当大量抛出同样的异常的后,后面的异常输出将不打印堆栈。原因是打印堆栈的时候底层会调用到Throwable.getOurStackTrace()方法,而这个方法是synchronized的,对性能有比较明显对影响。所以这个参数设置是合理的。正常情况下,如果打印了几万条异常堆栈是很容易发现问题的。

现象复现

 public static void main(String[] args) {
        String test = null;
        int i = 0;
        while (true) {
            try {
                test.length();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
1.执行优化选项

不需要对jvm参数进行设置,因为默认就是-XX:+OmitStackTraceInFastThrow这么配置的

2.取消jvm的优化

在测试启动类里面配置上jvm的参数,去掉优化,如下图

解决办法

JVM启动参数加上-XX:-OmitStackTraceInFastThrow,意思就是去掉堆栈打印的优化选项,如果想加上就把OmitStackTraceInFastThrow前面的“-”号改为“+”即可。

原文链接:https://blog.csdn.net/tengdazhang770960436/article/details/91838820

标签:java,打印,OmitStackTraceInFastThrow,jvm,堆栈,异常
From: https://www.cnblogs.com/xudong5273/p/17469499.html

相关文章

  • 使用JAVA开发微信公众平台(一)——环境搭建与开发接入
    一、初始微信公众平台微信公众平台,即我们平时所说的“公众号”,曾用名“官方平台”、“媒体平台”,但最终命名为“公众平台”。从微信的命名我可以发现,公众平台不只是官方、媒体使用的平台,而是对所有公众都开放的统一平台。喜欢本文,请点击下方喜欢按钮呗!❤️微信公众平台地址:http......
  • Java面试题精华集-Java 工程师进阶知识完全扫盲
    在GitHub/Gitee编辑消息队列面试场景面试官:你好。候选人:你好。(面试官在你的简历上面看到了,呦,有个亮点,你在项目里用过MQ,比如说你用过ActiveMQ)面试官:你在系统里用过消息队列吗?(面试官在随和的语气中展开了面试)候选人:用过的(此时感觉没啥)面试官:那你说一下你们在项目里是......
  • 全网八股文面试高频题目--JAVA基础
    八股文--JAVA基础目录八股文--JAVA基础1.JDK、JRE、JVM有什么区别1.1Java为什么被称为平台无关性语言?2.常用数字类型的区别3.Float在JVM的表达方式及使用陷阱4.面向对象三个特性是什么4.1重载和重写的区别?4.2Java中是否可以重写一个private或者static方法?4.3构造方法有哪些......
  • Java并发编程 interrupt()方法
    interrupt()用法打断正常运行的线程interrrupt()方法可以用来打断正在运行的线程,也可以打断sleep()、wait()、join()情况下的线程,但是这些情况下被打断线程的打断标记不同。importlombok.extern.slf4j.Slf4j;importjava.util.concurrent.TimeUnit;@Slf4jpublicclassIn......
  • JavaScript中的模块化编程
    JavaScript中的模块化编程模块化编程是一种将程序拆分为独立模块的开发方法,每个模块具有明确定义的功能和接口。JavaScript中的模块化编程能够提高代码的可维护性、可重用性和可测试性。本文将详细介绍JavaScript中的模块化概念、几种常见的模块化方案,并提供更多的代码示例。1.......
  • [Java SE] 彻底搞懂Java程序的三大参数配置途径:系统变量与JVM参数(VM Option)/环境变
    0序言一次没搞懂,处处受影响。这个问题属于基础问题,但又经常踩坑,不得不重视一下了。1Java程序动态参数的配置途径:系统变量与JVM参数(VMOption)vs环境变量vs启动程序参数argsIDEA中的配置位置参数使用方式示例代码获取方式系统属性由操作系统、JVM、应用......
  • java(springboot)实现将一个pdf按页码转成多张图片
    以下是一个将PDF转换成JPG格式图片的SpringBoot接口代码:importorg.apache.pdfbox.pdmodel.PDDocument;importorg.apache.pdfbox.rendering.PDFRenderer;importorg.springframework.http.MediaType;importorg.springframework.scheduling.annotation.Async;import......
  • #Vue-cli 5 怎么打印代理地址 #Vue-cli 5 怎么查看真是请求地址 ?
    proxy:{'/api':{target:'http://192.168.3.47:1228',changeOrigin:true,onProxyReq:function(proxyReq,req,res){console.log('[proxy]:'+proxyReq.getHeader('origin')+proxyReq.p......
  • java-基础安装-基础
    1.基本须知jdk我们的java源码程序是只能放在src的蓝色文件夹中,放在别的文件不起作用javac.exe文件javac是jdk中专门用来编译源码的文件java.exe文件启动jvm虚拟机*.class是编译后的字节码文件,一般放在idea项目中橘色的out文件夹中*.java是源码文件是源码文件......
  • java代码输出控制台输出菱形
    privatestaticvoidrhombFuncation(){introw=3;for(inti=1;i<=row;i++){for(introw1=row;row1>i;row1--){System.out.print("-");}for(intj=0;j<i;j++){Syste......