论坛首页 Java企业应用论坛

jdk(32bit)的高级安装---client模式与server模式

浏览 10103 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-01-02   最后修改:2011-01-02
1.这个问题讨论起来其实挺简单,但笔者也是最近才恍然大悟.受益匪浅.刚开始,笔者误认为openJDK的性能强于sun的HotSpot,后来发现,openJDK的默认运行模式是server,而HotSpot的默认模式client,所以拿出来心得,与朋友们分享,如果大家觉得这篇文章有用,请跟帖讨论,本人以后还会拿出更多的心得与大家交流学习.
到http://www.oracle.com/technetwork/java/javase/downloads/index.html
下载jdk-6u23-windows-i586.exe
安装到C:\Java,安装的时候,javaDB和jre笔者认为,没有安装的必要,只安装JDK.

2.设定环境变量,一般不推荐变量的引用,有些环境下会出问题,例如eclipse下的javadoc,所以PATH,CLASSPATH尽量写全,不要引用%JAVA_HOME%
JAVA_HOME    C:\Java\jdk1.6.0_23
PATH    %JAVA_HOME%\bin
CLASSPATH    .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

3.虚拟机版本与模式查看
java -version //查看JVM默认的环境
java -client -version //查看JVM的客户端环境,针对GUI优化,启动速度快,运行速度不如server
java -server -version //查看JVM的服务器端环境,针对生产环境优化,运行速度快,启动速度慢

4.虚拟机模式切换
目录JAVA_HOME/jre/bin下,会有2个目录,server与client.这个就是他们的运行环境的动态库.那么怎么切换呢?找到JAVA_HOME/jre/lib/i386/jvm.cfg,这就是JVM默认的查找顺序,内容如下
-client KNOWN
-server KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
只需要把-server和-clent换个位置就行了.如下
-server KNOWN
-client KNOWN
-hotspot ALIASED_TO -client
-classic WARN
-native ERROR
-green ERROR
这个时候在输入java -version看看吧,是不是默认的使用服务器端了呢,一般开发环境是使用client,而生产环境会使用server.有什么问题大家留言吧,我们一起交流.^-^
   发表时间:2011-01-04   最后修改:2011-01-04
如果装了公共JRE,运行 “java -server -version”会报“Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll'.”这个错
而且公共JRE下没有server这个目录
只有JDK自带的jre的目录下有server这个目录
那是不是生产环境不能安装公共JRE,还是有什么办法可以让系统自动使用JDK自带的JRE
0 请登录后投票
   发表时间:2011-01-04  
superxgz 写道
如果装了公共JRE,运行 “java -server -version”会报“Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll'.”这个错
而且公共JRE下没有server这个目录
只有JDK自带的jre的目录下有server这个目录
那是不是生产环境不能安装公共JRE,还是有什么办法可以让系统自动使用JDK自带的JRE

只要生产环境下,不安装公共JRE就可以了
0 请登录后投票
   发表时间:2011-01-04  
只要有JDK下的JRE,就没必要在安装的时候,再选择独立的JRE了
0 请登录后投票
   发表时间:2011-01-07  
OpenJDK如果在Windows上build出来的话,默认的运行模式也是-client吧 =_=
只不过OpenJDK官网并没有直接提供Windows上build好的安装包,所以这个对很多人来说变得难以验证。

在这个网站有OpenJDK在Windows/Linux/Mac OS X上build好的安装包:http://www.openscg.com/se/

见到用OpenJDK的有许多是在Linux上的。从Java 5开始,HotSpot就自带了ergonomics,可以根据环境选择一些启动参数。
引用
In the J2SE platform version 5.0 a class of machine referred to as a server-class machine has been defined as a machine with
2 or more physical processors
2 or more Gbytes of physical memory

于是在比较现代的PC上,要满足这里的“服务器级别”的判定标准一点也不困难,满足该标准就会使HotSpot自动选择使用server模式来启动。这在OpenJDK和Oracle/Sun版JDK里都是一样的。

只不过这ergonomics在32位Windows上没开启,所以在这种环境下默认还是用-client而已。
0 请登录后投票
   发表时间:2011-01-07  
RednaxelaFX 写道
OpenJDK如果在Windows上build出来的话,默认的运行模式也是-client吧 =_=
只不过OpenJDK官网并没有直接提供Windows上build好的安装包,所以这个对很多人来说变得难以验证。

在这个网站有OpenJDK在Windows/Linux/Mac OS X上build好的安装包:http://www.openscg.com/se/

见到用OpenJDK的有许多是在Linux上的。从Java 5开始,HotSpot就自带了ergonomics,可以根据环境选择一些启动参数。
引用
In the J2SE platform version 5.0 a class of machine referred to as a server-class machine has been defined as a machine with
2 or more physical processors
2 or more Gbytes of physical memory

于是在比较现代的PC上,要满足这里的“服务器级别”的判定标准一点也不困难,满足该标准就会使HotSpot自动选择使用server模式来启动。这在OpenJDK和Oracle/Sun版JDK里都是一样的。

只不过这ergonomics在32位Windows上没开启,所以在这种环境下默认还是用-client而已。

恩,感谢楼上的恢复,受益匪浅了。我这就是试一下windows版本的openjdk
0 请登录后投票
   发表时间:2011-01-07  
前面提到的OpenJDK在Windows XP SP3 32位上默认的:
D:\sdk\OpenJDK\openjdk-6.20.1\bin>java -version
openjdk version "1.6.0-OpenSCG-Build-20"
OpenJDK Runtime Environment (build 1.6.0-OpenSCG-Build-20-b1)
OpenJDK Client VM (build 17.0-b16, mixed mode)
0 请登录后投票
   发表时间:2011-01-07  
那icetea怎么安装呢?有win32的吗
0 请登录后投票
   发表时间:2011-01-07  
85977328 写道
那icetea怎么安装呢?有win32的吗

呃…没见到过IcedTea的预先build好的Windows版安装包。有能力的话自己build呗~ 在Windows上的部分其实没怎么变吧,跟OpenJDK相比。变化的点主要在别的地方,像是Zero/Shark啊、Linux上一些库和bug的更新啊啥的。
0 请登录后投票
   发表时间:2011-01-08  
client 和 server的本质区别是他们内部使用的jit compiler是不一样的,在hotspot内部分别称作 c1 和 c2 (有人知道c3吗 ,sun一直想将这两个jit compiler合并,即TieredCompilation,已经说了好多年了,现在看来已经有实际进展了,如果build最新的hotspot server jvm的话,可以看到c1的代码也会被编译,以前是忽略的,在jdk7中应该能看到这个feature
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics