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

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

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

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

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

总结


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

相关推荐
金銀銅鐵1 小时前
[Java] 展示增删元素时 LinkedList 的内部变化
java·后端·ai编程
武子康2 小时前
Vercel Cache Reason:相同 MISS,怎样决定下一步查什么
人工智能·后端·agent
杨文说AI与数字化3 小时前
把模型依赖做成可替换的组件:三层适配 + 一套回归评估
后端
IT_陈寒3 小时前
Vue的这个响应式陷阱我居然现在才发现
前端·人工智能·后端
WL学习笔记4 小时前
使用string类
c++·后端·string类
飞鸟真人4 小时前
IM网关系列(九)单账号流量统计:滑动窗口桶方案设计与Go实现
后端·golang
武子康5 小时前
Embedding 替换怎么评测:把索引成本算进成功任务
人工智能·后端·agent
大哥43097 小时前
on-failure 不扛重启:一次 Docker restart 策略的反直觉排查
后端
房西杭7 小时前
GM指令:仓库扩容、清空仓库(行会仓库 + 个人仓库,Lua + proto + GMMgr注册)
后端
大哥43097 小时前
不报错 ≠ 生效:三类"静默失效"缺陷与它们的共同指纹
后端