异常恢复,付出的代价能不能少一点?

从 Java 异常的性能基准测试结果看,我们知道,生成异常的调用堆栈是异常处理影响性能的最主要因素。如果不需要生成调用堆栈,那么 Java 异常的处理性能就会有成百上千倍的提升。

调用堆栈对于不可恢复异常来说至关重要,因为我们可以从异常调用堆栈的打印信息里,快速定位到出问题的代码。毫无疑问,这加快了问题排查,降低了运维的成本。由于不可恢复异常中断了程序的运行,所以它的性能开销是一次性的。因此,不可恢复异常对于性能的影响,其实我们不用太在意。

共用错误码本身,并没有携带调试信息。为了能够快速定位出问题,我们需要为共用错误码的方案补上调试信息。

使用调试信息带来的性能损失,并不比使用异常性能的损失小多少。不过好在,日志记录既可以开启,又可以关闭。如果我们关闭了日志,就不用再生成调试信息了,当然它的性能影响也就消失了。当需要我们定位问题的时候,再启动日志。这时候,我们就能够把性能的影响控制到一个极小的范围内了。

总结


此文章为9月Day11学习笔记,内容来源于极客时间《深入剖析 Java 新特性》

相关推荐
逃逸线LOF2 分钟前
Spring的AOP简介
java·后端·spring
yume_sibai32 分钟前
02-Rust 所有权与借用深入解析(底层原理 + 借用检查器 + 生命周期 + 内部可变性)
开发语言·后端·rust
卷无止境35 分钟前
从脚本到程序:Windows平台上的Python打包全景图
后端·python
骇客野人37 分钟前
Springboot 的 配置文件 application.yml 和 bootrap.yml 的由来和作用
java·spring boot·后端
岁月宁静1 小时前
三、《从零手撸 Agent》 · system prompt 与核心参数:调好你的旋钮
后端·python·agent
bcbnb1 小时前
Flutter-Notebook代码混淆:Android与iOS平台安全配置
后端·ios
泡海椒1 小时前
SpringBoot 集成 JQuick-Curl:Spring 环境完整接入教程,第三方接口调用别再到处手写模板类
后端
落木萧萧8251 小时前
MyBatis 关联查询的四种写法,为什么最后都变回了手写 XML
java·数据库·后端
cui_hao_nan1 小时前
Spring AOP 自调用、代理与 private 方法引发的诡异 NPE
java·后端·spring·ai开发
IT_陈寒2 小时前
JavaScript的隐式转换太坑了,我的==比较怎么就炸了?
前端·人工智能·后端