几个问题:):
如何识别当前安装的JVM? (64位/ 32位)
在为64位JVM目标平台编程时,是否需要做一些考虑?
我的Java代码可以在32位以及64位JVM上运行吗?
如何在64位JVM上运行我的Java应用程序?
如何识别我的Java App使用的JVM?
答案 0 :(得分:10)
通常情况下,64位的jvm会识别自己。
32/64位注意事项我见过:
是的,相同的代码将在两个JVM上运行。
系统属性“sun.arch.data.model”我认为有32/64标志。
这里有一些有用的信息:http://www.oracle.com/technetwork/java/hotspotfaq-138619.html
答案 1 :(得分:4)
在您自己的Java代码中,您不必对32位或64位执行任何特殊操作。与示例C和C ++不同,Java中的int
始终为32位,long
始终为64位(在C和C ++中,这些类型的大小取决于系统)。
没有单独的32位和64位版本的Java字节码;字节码完全相同,无论您运行它的JVM是32位还是64位。您不必为32位或64位不同地编译Java源代码。关于功能,如果Java应用程序在32位或64位JVM上运行,则无关紧要。
jowierun可能已经提到了一些技术差异。可能还存在性能差异;例如,Oracle的64位JVM for Windows调整方式与32位JVM不同,它还进行其他JIT优化。我自己注意到了我最近编写的计算密集型应用程序;在64位JVM上,它运行速度比在32位JVM上快得多。 (但这只是一个例子,不要将此作为任何程序在64位JVM上运行得更快的证据)。
答案 2 :(得分:2)
如果您计划使用Java Native Interface(JNI)编写本机代码,则必须格外小心编写将在64位和32位计算机上运行的正确C代码。确保在向/从java代码传递参数时使用正确的Java类型(JNI为java类型提供了一组typedef),尤其是在转换数组时。在测试本机代码时,使用不同的JVM测试两种体系结构(-m32将强制GNU gcc上的32位arch)。
答案 3 :(得分:1)
你有这些问题回到最前面。