当前位置: 首页 > article >正文

【jvm】C1编译器和C2编译器的区别

目录

          • 1. 说明
          • 2. 主要特点
            • 2.1 C1编译器
            • 2.2 C2编译器
          • 3. 编译过程与优化策略
            • 3.1 C1编译器
            • 3.3 C2编译器
          • 4. 分层编译与协作机制
          • 5. 性能影响与选择

1. 说明
  • 1.JVM(Java虚拟机)中的C1编译器和C2编译器是两种不同的即时编译器(JIT Compiler),它们各自具有独特的特点和适用场景。
2. 主要特点
2.1 C1编译器
  • 1.Client Compiler。
  • 2.编译速度较快。
  • 3.优化程度较低,注重局部优化。
  • 4.生成代码质量一般。
  • 5.适用于执行时间较短或启动性能要求高的程序。
2.2 C2编译器
  • 1.Server Compiler。
  • 2.编译速度较慢。
  • 3.优化程度较高,注重全局优化。
  • 4.生成代码质量较高,执行效率更高。
  • 5.适用于执行时间较长或峰值性能要求高的程序。
3. 编译过程与优化策略
3.1 C1编译器
  • 1.编译速度快,生成的代码速度也相对较快。
  • 2.主要进行简单的、可靠的优化,如方法内联、类型检查消除等。
  • 3.适用于对启动性能有较高要求的程序,如GUI应用等。
3.3 C2编译器
  • 1.编译速度慢,但生成的代码质量高,执行效率高。
  • 2.进行更深入的优化,包括基于性能监控信息的激进优化。
  • 3.适用于长时间运行的服务器端应用程序,以提供稳定的高性能。
4. 分层编译与协作机制
  • 1.从Java 7开始,JVM引入了分层编译机制,使得C1和C2编译器能够协同工作。
  • 2.在分层编译中,整个优化过程被划分为多个层次,每个层次对应不同的编译策略和优化级别。
  • 3.C1编译器通常负责前几个层次的编译任务,进行简单的优化。
  • 4.当代码执行次数达到一定阈值时,C2编译器会接手进行更深层次的优化。
5. 性能影响与选择
  • 1.C1编译器:由于编译速度快且生成的代码相对较小,因此启动性能较好。但长期运行时的性能可能不如C2编译器。
  • 2.C2编译器:虽然编译速度慢且生成的代码较大,但长期运行时的性能优越。适用于需要高性能和稳定性的场景。

http://www.kler.cn/a/420286.html

相关文章:

  • Spark常问面试题---项目总结
  • Nginx学习-安装以及基本的使用
  • Springboot入门教程系列HelloWorld
  • 开源ISP介绍(1)——开源ISP的Vivado框架搭建
  • 前端通用Axios 请求拦截配置
  • 使用Apache HttpClient上传文件
  • 解决maya渲染慢、渲染卡顿等问题
  • Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌入式/国产OS等
  • 详解Qt pdf 之QPdfSelection 选择文本类
  • debian 11 虚拟机环境搭建过坑记录
  • 机器学习7-AdaBoost算法
  • Springboot聚合工程实现不同module使用不同的数据库配置操作数据库,实现自由切库
  • CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(不会)
  • 《Serverless 架构:引领未来软件开发的新趋势》
  • 【Vue3】弹窗添加鼠标hover上边缘左、下的的拉伸宽度高度操作
  • atcoder abc 382 lazy_tag线段树
  • 关于Nginx前后端分离部署spring boot和vue工程以及反向代理的配置说明
  • 学习ASP.NET Core的身份认证(基于Session的身份认证2)
  • 域名解析系统 DNS
  • vue和react的diff算法区别?
  • Git 使用总结
  • 【前端面试】数据结构与set和map
  • ETSI EN 300328 标准的一些笔记
  • Qt | TCP客户端简单实现+TCP助手测试
  • Unity Ads的常见问题:投放、变现、安装等注意事项
  • 洛谷P1075