在Java早期阶段,存在两种类型的JIT(即时编译)编译器,分别是Client(客户端)和Server(服务器)。根据所需的JIT编译器类型,需要下载并安装相应的JDK。例如,如果您正在构建桌面应用程序,则需要下载具有“客户端”JIT编译器的JDK;如果是构建服务器应用程序,则需要下载具有“服务器”JIT编译器的JDK。
一旦应用程序启动,客户端JIT编译器就会开始对代码进行编译。而服务器JIT编译器则会观察代码执行相当长的一段时间。根据其获取的执行知识,服务器JIT编译器将开始进行JIT编译。尽管服务器JIT编译速度较慢,但生成的代码将比客户端JIT编译器生成的代码更优化,性能更出色。
然而,现代的JDK现在内置了客户端和服务器JIT编译器。这两个编译器都尝试对应用程序代码进行优化。在应用程序启动阶段,会使用客户端JIT编译器对代码进行编译。随着程序执行知识的积累,随后会采用服务器JIT编译器对代码进行编译。这种方法在JVM中被称为分层编译。
JDK开发人员通常将这两种编译器称为客户端和服务器JIT编译器,而内部则分别称为c1和c2编译器。因此,客户端JIT编译器所使用的线程被称为C1编译器线程,而服务器JIT编译器所使用的线程被称为C2编译器线程。
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!