第十一章晚期(运行期)优化。

寻机设计团队几乎把对代码的所有优化措施都集中在了即时编译器之中。
hotspot 虚拟机中内置了两个 即时编译器:
C1编译器 client compiler
C2编译器 server compiler

编译器优化技术
公共子表达式消除
数组边界检查消除
方法内联
逃逸分析

逃逸分析的基本行为就是分析对象动态作用域:当一个对象在方法中被定义后,他可能被外部方法所应用,例如作为调用参数传递到其它方法中,称为方法逃逸。甚至还有可能被外部线程访问到,比如复制给类变量,或可以在其他线程中访问到的实例变量,称为线程逃逸

如何使得对象不会逃逸到方法或线程之外?
使用栈上分配
使用同步消除
使用标量替换

备注:逃逸分析技术目前尚未足够成熟,仍有很大的改进余地,不成熟的原因是不能保证逃逸分析的性能收益必定高于它的消耗。


Boy-20180722

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容