性能差的主要原因
以前总听人说java异常处理性能很差。然后自己测试了一把。确实挺差的。是什么原因呢?
填充异常栈时性能差。(如下图:去掉填充异常栈,性能提升30倍)
每次new 一个对象。(如下图:相比于返回一个单例的对象,性能提升10倍)
我们大多数的异常其实都可以返回单例异常。如超时
原理
虚拟机层面处理普通代码,和处理异常由什么不同???
下面是源代码,和编译之后的class文件
可见异常处理跟普通代码处理还是不同。class文件中专门有个异常表。用来判断异常的时候跳转到哪里去。
异常处理的底层也只是一些跳转指令,跟return的跳转其实一样。所以性能上也不会有太大差别。