JavaClientVM与JavaServerVM区别
2016-03-01 02:04
399 查看
JVM client模式和Server模式两者的区别和联系,JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。JVM client模式和Server模式JVM Server模式与client模式启动,最主要的差别在于:-Server模式启动时,速度较慢,但是一旦运行起来后,性能将会有很大的提升。JVM如果不显式指定是-Server模式还是-client模式,JVM能够根据下列原则进行自动判断(适用于Java5版本或者Java以上版本)。前段时间有个同事给我发了个java跟c++性能比较的文章,其中有个对比图引起了我的兴趣,意外的是,我感兴趣的不是java和c++的对比,而是java -Server模式和java -client模式的对比。从来没想到两者间的性能有如此巨大的差别。而在后来自己的亲身测试中发现确实如此。下面是我看到的那个对比图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/591b81f6bd45c1da7ed6266cc47f2706.png)
在进行散列(杂凑)计算和方法调用时候,server vm 性能比client vm要好的多。(程序性能可以理解为时间性能与空间性能,时间性能主要指执行这段程序所耗费cpu时间,空间性能指占用内存------对应算法时间复杂度和空间复杂度,因为图中大部分是算法)。图中最显著的就是JVM client模式和Server模式关于method call的对比,那个差别不是一般的大,在后来的测试中发现,相差至少有10倍。下面是另外两个对比图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/8ae96819d4c7f5bd59f1345808727821.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/11e4bfab25b6597b0adaa981c8a2f73f.jpg)
JVM工作在Server模式可以大大提高性能,但应用的启动会比client模式慢大概10%。当该参数不指定时,虚拟机启动检测主机是否为服务器,如果是,则以Server模式启动,否则以client模式启动,J2SE5.0检测的根据是至少2个CPU和最低2GB内存。当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。
JVM在client模式默认-Xms是1M,-Xmx是64M;JVM在Server模式默认-Xms是128M,-Xmx是1024M。我们可以通过运行:java -version来查看jvm默认工作在什么模式。 java -version:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/d1b794940ceb700f60d4fc8da4768984.png)
java -X:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/de8aeb7f3a68b3b64fe750b869554432.png)
java -Xms -Xmx 涉及到对堆内存大小的设定,这部分知识牵扯到jvm调优问题,还有jvm的内存模型和垃圾回收机制,这部分还没有学习,所以有待日后继续学习。
转载自:http://blog.csdn.net/tang_123_/archive/2010/11/18/6018219.aspx
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/591b81f6bd45c1da7ed6266cc47f2706.png)
在进行散列(杂凑)计算和方法调用时候,server vm 性能比client vm要好的多。(程序性能可以理解为时间性能与空间性能,时间性能主要指执行这段程序所耗费cpu时间,空间性能指占用内存------对应算法时间复杂度和空间复杂度,因为图中大部分是算法)。图中最显著的就是JVM client模式和Server模式关于method call的对比,那个差别不是一般的大,在后来的测试中发现,相差至少有10倍。下面是另外两个对比图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/8ae96819d4c7f5bd59f1345808727821.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/11e4bfab25b6597b0adaa981c8a2f73f.jpg)
JVM工作在Server模式可以大大提高性能,但应用的启动会比client模式慢大概10%。当该参数不指定时,虚拟机启动检测主机是否为服务器,如果是,则以Server模式启动,否则以client模式启动,J2SE5.0检测的根据是至少2个CPU和最低2GB内存。当JVM用于启动GUI界面的交互应用时适合于使用client模式,当JVM用于运行服务器后台程序时建议用Server模式。
JVM在client模式默认-Xms是1M,-Xmx是64M;JVM在Server模式默认-Xms是128M,-Xmx是1024M。我们可以通过运行:java -version来查看jvm默认工作在什么模式。 java -version:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/d1b794940ceb700f60d4fc8da4768984.png)
java -X:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201911/27/de8aeb7f3a68b3b64fe750b869554432.png)
java -Xms -Xmx 涉及到对堆内存大小的设定,这部分知识牵扯到jvm调优问题,还有jvm的内存模型和垃圾回收机制,这部分还没有学习,所以有待日后继续学习。
转载自:http://blog.csdn.net/tang_123_/archive/2010/11/18/6018219.aspx
相关文章推荐
- .net与Java的WebService互调
- 在 Java 7 中体会 NIO.2 异步执行的快乐
- 关于Eclipse上使用可视化设计界面(Java EE 使用可视化界面设计)
- 碰到的Spring 事务无效
- 自学 java 笔记 day4 (语言语法基础组成3)
- MyEclipse2014/2015 安装Activiti插件
- java开发利器-lombok
- Java提升-责任链模式(四)
- Java提升-观察者模式(五)
- Java六大必须理解的问题
- elasticsearch java调用范例
- JAVA和JVM(java虚拟机)运行原理揭秘
- JAVA定时任务之-Quartz使用篇 | quartz 时间配置规则
- Spring 下载
- struts2配置加载顺序及struts.properties属性详解
- java四种线程池使用
- Java中List 去掉重复的值,并保持原先List顺序
- java enum
- IntelliJ IDEA import class和Eclipse一致
- 解决Struts2 与 hibernate 中 javassist 冲突问题