博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JVM读书笔记PART3
阅读量:4315 次
发布时间:2019-06-06

本文共 480 字,大约阅读时间需要 1 分钟。

一、早期(编译器)优化

语法糖

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

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

 

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

 

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

条件编译

 

二、晚期(运行期)优化

二者各有优势:

 

分层编译策略:

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

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

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

 

回边计数器

 

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

 

C1简单快速三段式编译

C2会执行所有的经典优化

 

ps

栈溢出错误 递归调用方法 

 

 

1.公共子表达式

优化后

2.数组范围检查消除

3.方法内联

 

 

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

 

4.逃逸分析

 

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

 

转载于:https://www.cnblogs.com/luyu1993/p/5781892.html

你可能感兴趣的文章
<Using parquet with impala>
查看>>
OpenGL渲染流程
查看>>
委托异步回调
查看>>
扩展欧几里得算法
查看>>
いつでもどこでも本格的に麻雀&チュートリアルが充実!iPhone/iPod touch/iPad向け「雀龍門Mobile」をiPadで遊んでみました...
查看>>
如何重置mysql中的root密码
查看>>
bzoj 3171: [Tjoi2013]循环格 最小费用最大流
查看>>
关于IO的一些数字
查看>>
高放的c++学习笔记之模板与泛型编程
查看>>
bzoj 1089: [SCOI2003]严格n元树
查看>>
mybatis 日期比较
查看>>
更新jdk
查看>>
string与StringBuilder之性能比较
查看>>
python3----练习题(购物车)
查看>>
IOS不错的学习资源特别是图片效果的处理上
查看>>
HDU 2072(字符串的流式操作,学习了)
查看>>
win10 vs2015源码编译opencv、opencv_contrib、Tesseract
查看>>
css取消a标签在移动端点击时的背景颜色
查看>>
Annotation(注解)
查看>>
MySQL(四)--练习题
查看>>