码迷,mamicode.com
首页 > 其他好文 > 详细

JVM读书笔记PART3

时间:2016-08-17 22:35:27      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

一、早期(编译器)优化

语法糖

c#和java的泛型截然不同看似相同,c#是真实的泛型 编译运行一直存在 List<string> 和List<int> 就完全是两个类

而Java中 是伪泛型采用类型擦除的方法实现泛型    List<Integer> List<String> 运行期就是同一个类

 技术分享

编译期错误,无法识别两个方法。

 

语法糖:自动拆箱、装箱 可变参数 遍历循环

技术分享

技术分享

条件编译

技术分享

 

二、晚期(运行期)优化

技术分享

二者各有优势:

技术分享

技术分享

 

分层编译策略:

技术分享

技术分享

有两种进行热点探测的方式:

1.基于采样的热点探测 不精准容易受到线程阻塞影响判断

2.基于计数器的热点探测 较为精准但是有些麻烦  一般采用这种

技术分享

技术分享

 

回边计数器

技术分享

 

达到阙值之后 会在后台编译代码

 

C1简单快速三段式编译

C2会执行所有的经典优化

 

ps

技术分享

栈溢出错误 递归调用方法 

 

技术分享

 

1.公共子表达式

技术分享

优化后

技术分享

2.数组范围检查消除

技术分享

3.方法内联

技术分享

 技术分享

 技术分享

很多情况下虚拟机的内联都是一种激进优化

 

4.逃逸分析

技术分享

技术分享

技术分享

 

三、JAVA与C++编译器的对比

技术分享

技术分享

技术分享

 

JVM读书笔记PART3

标签:

原文地址:http://www.cnblogs.com/luyu1993/p/5781892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!