【Java 技术之旅】彻底你明白什么是 JIT 编译器(Just In Time 编译器

服务器端编译器

对于长时间运行的应用程序(例如服务器端企业 Java 应用程序),客户端编译器可能不够。可以使用类似 C2 的服务器端编译器。通常通过将 JVM 启动选项添加-server 到启动命令行来启用 C2 。由于大多数服务器端程序预计将运行很长时间,因此启用 C2 意味着您将能够比使用运行时间短的轻量级客户端应用程序收集更多的性能分析数据。因此,您将能够应用更高级的优化技术和算法。

分层编译

为什么要进行分层编译

这是由于编译器编译本机代码须要占用程序运行时间,要编译出优化程度更高的代码锁花费的时间可能更长,并且想要编译出优化程度更高的代码,解释器可能还要替编译器收集性能监控信息。这对解释运行的速度也有影响。为了在程序启动响应速度和运行效率之间寻找平衡点。因此採用分层编译的策略。

  • 分层编译结合了客户端和服务器端编译。分层编译利用了 JVM 中客户端和服务器编译器的优势

  • 客户端编译器在应用程序启动期间最活跃,并处理由较低的性能计数器阈值触发的优化

  • 客户端编译器还会插入性能计数器,并为更高级的优化准备指令集,服务器端编译器将在稍后阶段解决这些问题。

分层编译是一种非常节省资源的性能分析方法,因为编译器能够在影响较小的编译器活动期间收集数据,以后可以将其用于更高级的优化。与仅使用解释的代码配置文件计数器所获得的信息相比,这种方法还可以产生更多的信息。

分层策略例如以下所看到的:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值