JVM的client模式和Server模式(不要随便搞)


昨天朋友问了我一个问题,JVM client模式和Server模式之间的区别,对于这个问题之前并不知道,后来经过了一番查阅大致了解了一下,在这里简单做一下记录。

一、如何查看JVM当前的模式

想要查看JVM当前所处的模式很简单,只需要我们安装jdk时候的java -version命令就可以看到
在这里插入图片描述
当然我们说的是Hot Spot虚拟机

二、启动上的差别

  • Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升
  • Client模式启动时,启动较快,占用内存少,针对客户端进行优化

二、修改启动的方式

在路径JAVA_HOME/jre/lib/amd64/jvm.cfg 修改-server和-client的配置即可完成更改。

在这里插入图片描述

PS. 64位的虚拟机只支持server模式,不存在client目录。32位的才存在client目录,笔者做测试使用的是64位的jdk,在修改为cliet之后提示了如下错误,再次修改回初始状态仍然提示错误,故如果没有硬性需求不建议盲目修改(好像client都要被摒弃了,本身java就不适合用来写客户端)!!!!有经验的大佬麻烦一起探讨产生这种问题的原因~

三、空间大小的差异

JVM在client模式默认-Xms是1M,-Xmx是64M
JVM在Server模式默认-Xms是128M,-Xmx是1024M;

四、本质

其实说Server和Client是JVM的两种工作模式是不准确的,因为它们就是不同的虚拟机,因此应该说有两种类型的JVM,在配置之后进行切换。

当虚拟机运行在-client模式的时候,使用的是一个代号为C1的轻量级编译器, 而-server模式启动的虚拟机采用相对重量级,代号为C2的编译器. C2比C1编译器编译的相对彻底,服务起来之后,性能更高。

  • Server启动慢,编译更完全,编译器是自适应编译器,效率高,针对服务端应用优化,在服务器环境中最大化程序执行速度而设计
  • Client启动快速,内存占用少,编译快,针对桌面应用程序优化,为在客户端环境中减少启动时间而优化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值