java性能优化权威指南---即时编译器(Just-in-time,JIT)

目录

1、JIT编译器概览

2、调优入门:选择编译器类型(client、server或者两者同时使用)

1)、优化启动

2)、优化批处理

3)、优化长时间运行的应用

3、java和JIT编译器版本

4、编译器中级调优

1)、调优代码缓存

2)、编译阈值

3)、检测编译过程

5、高级编译器调优

1)、编译线程

2)、内联(默认开启,-XX:+PrintInling)

3)、逃逸分析(默认开启,-XX:DoEscapeAnalysis)

6、逆优化

7、分层编译级别


四、即时编译器(Just-in-time,JIT    page58---80page)

1、JIT编译器概览

热点编译(频繁执行的代码段)
java文件被编译成中间语言(java字节码)。然后再运行时被jvm进一步编译成汇编语言(在有些情况下,比如只执行一次的代码,可以不进行编译,直接解释器执行???)
字节码编译成汇编语言的过程中有大量的优化,极大地改善了性能;
总结:有些情况下字节码可以不进行编译而直接执行(解释模式运行),有些情况下回编译成汇编然后执行(编译模式运行)

2、调优入门:选择编译器类型(client、server或者两者同时使用)

分层编译:代码先由client编译器编译,随着代码变热,由server编译器重新编译
使用分层编译需要知道server编译器并且保证java命令行包括标志-XX:TieredCompilation,默认是关闭的。在java8中,分层编译默认是开启的。

1)、优化启动

总结:
如果应用的启动时间是首要的性能考量,那client编译器就是最有用的;
分层编译的启动时间可以非常接近于client编译器所获的启动时间;

2)、优化批处理

分层编译器是批处理任务合理的默认选择

3)、优化长时间运行的应用

对于长时间运行的应用来说,应该一直使用server编译器,最好配合分层编译

3、java和JIT编译器版本

不同的java支持不同的编译器;
不同的操作系统和架构所支持的编译器也不相同;
程序不必指定编译器,而是仰仗平台所支持的编译器;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值