详解JVM Client和Server端有什么区别

本文基于HotSpot虚拟机,探讨了Java虚拟机的Client和Server端的区别。Client VM采用C1编译器,启动快,适用于桌面应用程序;而Server VM使用C2编译器,启动慢但性能更高,适合服务端应用。两者在编译策略、内存分配和垃圾回收上有显著差异。默认情况下,HotSpot虚拟机会根据系统配置选择启动模式,也可通过命令行参数手动切换。
摘要由CSDN通过智能技术生成

java -version 命令大家都用过,大部分就是看下jdk版本或检查下环境变量的设置,但最后一行的信息也挺重要,如下图所示:

Server VM表示我们的虚拟机类型,mixed mode表示虚拟机以混合模式工作。

一. 虚拟机

先说下本篇文章的内容都是基于HotSpot虚拟机。

我们熟知的Java虚拟机是一种规范标准,有多种实现,比如HotSpot虚拟机就是JVM的一种实现,也是目前使用范围最广的Java虚拟机。其实HotSpot最早也不是Sun开发的,是他早期收购的一家公司开发的,后来Sun把JDK开源后,OpenJDK诞生了,所以HotSpot成了这两个JDK共用的虚拟机。

除了HotSpot虚拟机,Oracle原来的JRockit VM也是Java虚拟机的实现(后面会把HotSpot和JRockit整合),还有IBM也有对应的VM实现。

为什么叫HotSpot虚拟机?

如同它的名字,它的特点就是热点代码探测技术,这个技术可以通过执行计数器找出最具有编译价值的代码,然后通过JIT即时编译成机器码并缓存起来,提高执行效率。

而JIT编译只是一种概念,HotSpot内置C1,C2这两种编译器实现:

C1:编译时间短,优化策略简单C2:编译时间长,优化策略复杂

C1,C2都属于JIT编译技术,是JIT的不同实现

二. 虚拟机类型client s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值