目录
2、调优入门:选择编译器类型(client、server或者两者同时使用)
3)、逃逸分析(默认开启,-XX:DoEscapeAnalysis)
四、即时编译器(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支持不同的编译器;
不同的操作系统和架构所支持的编译器也不相同;
程序不必指定编译器,而是仰仗平台所支持的编译器;