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

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

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

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

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

总结


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

相关推荐
不知更鸟2 小时前
Django 项目设置流程
后端·python·django
黄昏恋慕黎明3 小时前
spring MVC了解
java·后端·spring·mvc
G探险者5 小时前
为什么 VARCHAR(1000) 存不了 1000 个汉字? —— 详解主流数据库“字段长度”的底层差异
数据库·后端·mysql
百锦再5 小时前
第18章 高级特征
android·java·开发语言·后端·python·rust·django
Tony Bai5 小时前
Go 在 Web3 的统治力:2025 年架构与生态综述
开发语言·后端·架构·golang·web3
程序猿20236 小时前
项目结构深度解析:理解Spring Boot项目的标准布局和约定
java·spring boot·后端
RainbowSea6 小时前
内网穿透配置和使用
java·后端
掘金码甲哥7 小时前
网关上的限流器
后端
q***06297 小时前
搭建Golang gRPC环境:protoc、protoc-gen-go 和 protoc-gen-go-grpc 工具安装教程
开发语言·后端·golang
GOTXX8 小时前
用Rust实现一个简易的rsync(远程文件同步)工具
开发语言·后端·rust