JIT优化策略摘录

来源:互联网 发布:thinkpad 知乎 编辑:程序博客网 时间:2024/04/27 20:37
以上内容摘自《Java Program in Action》(Kris Mok)
一。选择性的优化
    择要优化的代码
    其中,择要优化癿代码路径择优化癿程度.
       追求交互性的时候只选用效费比高的优化算法。
    追求顶峰性能时选择合适的代码进行高度优化。
    传统的编译器优化算法都可以有选择性得到应用

二。为常见情况而优化
    避开非常见情况,留下“逃生门”。
三。固有函数(intrinsics)
    有些Java方法在HotSpot中直接用硬件的特殊指令来实现。
    如Math.sin()、Unsafe.compareAndSwapInt()之类。
    调用这些方法,在解释模式有可能还是调用了本地方法,而在被JIT编译的代码中则直接把其中的操作内联进来。
四。由解释转为编译
    由计数器触发JIT编译。
    方法调用读数器,回边读数器,OSR编译,读数器衰减,profiling。
五。隐式异常处理
    对空指针、栈溢出等异常情况不显式检查,而是直接生成不检查错误的代码。
    1.在正常执行时不会因为要检查异常条件而带来任何开销
    2.在异常发生时速度比显式检查异常条件慢
    3.若检测到异常经常发生则重新编译,生成显式检查异常条件代码。
 
六。逃逸分析(escape analysis)
    检查某个对象的使用是否只在某个受限范围内(方法内/线程内)。
    可以为其它优化提供机会。
    1.标量替换
    2.栈上分配
    3.锁削除
原创粉丝点击