第十一章 晚期(运行期)优化
1、HotSpot同时包含解释器和编译器,HotSpot中内置了两个即时编译器Client Compiler 和 Server Compiler或简称C1和C2编译器(也叫Opto编译器)。用户可以使用-client或-server参数支强制指定虚拟机运行在Client模式还是Server模式。解释器与编译器搭配使用的方式在虚拟机中被称为“混合模式”(Mixed Mode),用户可以使用-Xint强制虚拟机运行于“解释模式”(Interpreted Mode),这时候编译器完全不介入工作,全部代码都使用解释方式执行。另外也可以使用参数-Xcomp强制虚拟机运行于“编译模式”(Compiled Mode),这时候将优先彩编译方式执行程序,但是解释器仍然要在编译无法进行的情况下介入执行过程,可能通过虚拟机的-version命令的输出结果显示出这三种模式。
2、为了在程序启动响应速度与运行效率之间达到最佳地平衡,HotSpot虚拟机将会逐渐雇用分层编译(Tiered Compilation)的策略。分层编译根据编译器编译、优化的规模与耗时,划分出不同的编译层次,其中包括:
第0层:程序解释执行,解释器不开启性能监控功能(profiling),可触发第1层编译。
第1层:也称为C1编译,将字节码编译为本地代码,进行简单可靠的优化,如有必要将加入性能监控的逻辑。
第2层:也称为C2编译,也是将字节码编译为本地代码,但是会启用一些编译耗时较长的优化,甚至会根据性能监控信息进行一些不可靠的激进优化。
Tiered Compilation 的概念在JDK1.6时期出现,但JDK1.7之前需要使用-XX:+TieredCompilation参数来手动开启,如果不开启分层编译策略,而虚拟机又运行在Server模式,Server Compiler需要性能监控发售提供编译依据,则可以由解释器收集性能监控信息供Server Compiler使用。
分享到:
相关推荐
深入理解Java虚拟机学习笔记借鉴.pdf
java 虚拟机
虚拟机学习笔记--周志明老师第三版
Java虚拟机----类的加载过程.docx
虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种...Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。
作者以易于理解的方式深入揭示了java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益! 本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行...
马士兵jvm调优参考资源
深入理解java虚拟机视频教程,jvm原理,java虚拟机,jvm性能调优,内存模型,gc工作原理,内存分配,类的加载等等视频教程
深入理解Java虚拟机笔记(带目录).docx
前言Java是目前用户最多、使用范围最广的软件开发技术之一。Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java API、Ja
深入理解Java虚拟机(第二版)
诸葛_BAT面试之深入理解Java虚拟机_9
30+个视频+深入理解Java虚拟机(jvm优化+内存模型+虚拟机原理)
深入理解JAVA虚拟机.xmind
深入Java虚拟机英文版第二版,很清晰,包含目录,只是不能点击标题跳转
了解jvm的pdf,高清pdf,希望大家下载
自己看《深入理解Java虚拟机》(第二版)所做的一些笔记。因为个人水平有限,能够理解的也只有前面几章的内容,后面的内容觉得看了也不是很理解,就没有记在里面。希望能对大家有所帮助,也希望能和大家一起进步。
深入Java虚拟机——本地方法栈.pdf
Java虚拟机详解04----GC算法和种类【重要】,有助于更深入理解记忆,文字配图片,10分钟让你记住gc工作机制。
它能干什么,文章从作者得角度带大家深入Java虚拟机相关内容,希望对大家有帮助。这里我们使用举例来说明为什么要学习Java虚拟机,其实这个问题就和为什么要学习数据结构和算法是一个道理,工欲善其事,必先利其器。...