黑马程序员技术交流社区

标题: 毕向东老师java基础视频中的疑问 [打印本页]

作者: 段波    时间: 2011-12-2 19:51
标题: 毕向东老师java基础视频中的疑问
本帖最后由 段波 于 2011-12-3 19:07 编辑

在system类的实验中:
    Properties props=System.getProperties();
    for(Object obj:props.keySet()){
            String value=(String) props.get(obj);
            System.out.println(value);
     }
控制台会打印出现 Java HotSpot(TM) Client VM
       请教一下Client VM 和server VM 的区别?
    谢谢!
作者: 常登凯    时间: 2011-12-2 21:03
在Sun的HotSpot VM里,client VM与server VM是共用一套解释器的,“照理说”无论是在client还是server模式,纯解释执行的性能应该是一样的。但实际上,解释器虽然是同一个,但它却可以根据启动参数的不同而变得不同。HotSpot VM的解释器是在启动的时候才动态生成的,其中好处之一就是它会根据启动参数来生成最小量必要的代码(理论上…)。这样生成出来的解释器就可以在当时的环境中最合适。
在client模式中,VM参数ProfileInterpreter默认是false,而在server模式中这个参数默认为true。
client模式默认是用UseSerialGC,是单线程串行执行的;而server模式默认是用UseParallelGC,是多线程并行执行的,所以server模式的会快一些(按单位回收的空间大小来算,不要按单次停机时间来算因为堆大小可能不同)。另外堆大小的默认选择也不同,server模式默认会用更大的GC堆,所以GC次数会比较少。
作者: 刘国辉    时间: 2011-12-2 22:15
JVM运行模式分server和client2种

他们对字节码优化的策略不同:  
Client主要优化对用户交互的响应速度,Client Mode的装载速度和消耗内存方面都是比较有优势,Server主要优化后台运行的代码。

使用server模式可以提高性能,启动比client模式慢,长期运行则比client模式快。当该参数不指定时,虚拟机启动检测主机是否为服务器,如果是则以server模式启动,否则以client模式启动。
作者: 文茜    时间: 2012-4-28 21:20
晕!!!!!!!!
作者: 赵倩倩    时间: 2012-6-13 17:03
刚才也在疑问这个问题  查了些资料有个解释不错   主要区别就是client和server模式 在启动时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默认工作在什么模式。(-Xmx是java的一个选项,用来设置你的应用程序能够使用的最大内存数)(Xms是另一个设置内存的参数,用它来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。不过同样有前面的限制,以及受到xmx的限制。)


作者: 北极£莜蓝    时间: 2014-6-1 17:32
赞.........
作者: 高哲    时间: 2014-6-12 10:27
学习了一下
作者: iWilliam    时间: 2014-6-19 00:54
额,看来要学的还有很多~
作者: 李宗玛    时间: 2014-6-27 11:50
答案都已经给出了
作者: ffx    时间: 2016-4-30 15:37
哈sssssssssssssssssssssssssssssssssssss




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2