用户工具


性能差的主要原因

以前总听人说java异常处理性能很差。然后自己测试了一把。确实挺差的。是什么原因呢?

  • 填充异常栈时性能差。(如下图:去掉填充异常栈,性能提升30倍)
  • 每次new 一个对象。(如下图:相比于返回一个单例的对象,性能提升10倍)
    • 我们大多数的异常其实都可以返回单例异常。如超时

原理

虚拟机层面处理普通代码,和处理异常由什么不同???

  • 下面是源代码,和编译之后的class文件
  • 可见异常处理跟普通代码处理还是不同。class文件中专门有个异常表。用来判断异常的时候跳转到哪里去。
  • 异常处理的底层也只是一些跳转指令,跟return的跳转其实一样。所以性能上也不会有太大差别。