我如何知道我的应用程序运行的JVM是32位还是64位?具体来说,我可以在程序中使用哪些函数或属性来检测这一点?
当前回答
在Windows 7的“控制面板”下的“程序|程序和功能”中,64位的JRE和JDK变体被列出,括号中有“64位”(例如:“Java SE Development Kit 7 Update 65(64位)”),而对于32位的变体,括号中没有提到该变体(例如,只是“Java SE Development Kit 8 Update 60”)。
其他回答
我安装了32位JVM,并再次重试,看起来以下确实告诉你JVM位,而不是OS arch:
System.getProperty("os.arch");
#
# on a 64-bit Linux box:
# "x86" when using 32-bit JVM
# "amd64" when using 64-bit JVM
这在SUN和IBM JVM(32和64位)上进行了测试。显然,系统属性不仅仅是操作系统拱门。
对于某些版本的Java,您可以使用标记-d32和-d64从命令行检查JVM的位。
$ java -help
...
-d32 use a 32-bit data model if available
-d64 use a 64-bit data model if available
要检查64位JVM,运行:
$ java -d64 -version
如果它不是一个64位JVM,你会得到这个:
Error: This Java instance does not support a 64-bit JVM.
Please install the desired version.
类似地,要检查32位JVM,运行:
$ java -d32 -version
如果它不是一个32位JVM,你会得到这个:
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
这些标志是在Java 7中添加的,在Java 9中已弃用,在Java 10中被删除,并且在Java的现代版本中不再可用。
在Linux上,您可以使用以下两个命令之一来获取ELF头信息:
file {YOUR_JRE_LOCATION_HERE}/bin/java
o / p: ELF 64位LSB可执行文件,AMD x86-64,版本1 (SYSV),适用于GNU/Linux 2.4.0,动态链接(使用共享库),适用于GNU/Linux 2.4.0,未剥离
or
readelf -h {YOUR_JRE_LOCATION_HERE}/bin/java | grep 'Class'
o / p: 类 : ELF64
如果你正在使用JNA,你可以使用thisPlatform.is64Bit()。
在Windows 7的“控制面板”下的“程序|程序和功能”中,64位的JRE和JDK变体被列出,括号中有“64位”(例如:“Java SE Development Kit 7 Update 65(64位)”),而对于32位的变体,括号中没有提到该变体(例如,只是“Java SE Development Kit 8 Update 60”)。
推荐文章
- 到底是什么导致了堆栈溢出错误?
- 为什么Android工作室说“等待调试器”如果我不调试?
- Java:路径vs文件
- ExecutorService,如何等待所有任务完成
- Maven依赖Servlet 3.0 API?
- 如何在IntelliJ IDEA中添加目录到应用程序运行概要文件中的类路径?
- getter和setter是糟糕的设计吗?相互矛盾的建议
- Android room persistent: AppDatabase_Impl不存在
- Java的String[]在Kotlin中等价于什么?
- Intellij IDEA上的System.out.println()快捷方式
- 使用Spring RestTemplate获取JSON对象列表
- Spring JPA选择特定的列
- URLEncoder不能翻译空格字符
- Java中的super()
- 如何转换JSON字符串映射<字符串,字符串>与杰克逊JSON