2011年5月28日星期六

JVM_028:最简单的方法判断JDK是32位的,还是64位的?

最近遇到一个问题,需要判断JDK是32位的,还是64位的?
问了一个Java专家,说可以使用命令:ps -ef | grep -d32 和 ps -ef | grep -d64。
但是在Windows上如何判断呢?

使用java -version,有些可以看出来,有些则不一定能看出来。比如:
(1) HotSpot 32位
java version 1.6.0_24
Java(TM) SE Runtime Environment (build 1.6.0_24-b50)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode)
(2) HotSpot 64位
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)
(3) JRockit 64位
java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Oracle JRockit(R) (build R28.1.3-11-141760-1.6.0_24-20110301-1430-windows-x86_64, compiled mode)

于是,我想了一个“很土”的办法:运行一个Java程序,设置Xmx最大值,如果能够超过4096m,则是64位的,否则不是。脚本如下:
set JAVA_HOME=C:\Oracle\Java\jdk1.6.0_25
set PATH=%JAVA_HOME%\bin;%PATH%
java -version
javac *.java
java -verbose:gc -Xms1024m -Xmx4096m DemoLeak

没有评论: