我如何制作32位或64位应用程序?

时间:2012-08-07 09:28:13

标签: java 32bit-64bit bytecode

在制作程序时,如何确保特定应用程序是64位应用程序或32位应用程序。

是否有可能硬编码应用程序将分别为64位或32位,如果可能,64位应用程序是否需要占用比通常的32位应用程序更多的内存?

我知道32位应用程序/硬件的内存限制。

5 个答案:

答案 0 :(得分:4)

Java与平台无关。因此,你不应该为此烦恼。 32和64之间的唯一区别在于使用的jdk。

如果您使用的是64位jdk,那么您的应用程序是64位兼容的

如果您使用的是32位jdk,那么您的应用程序是32位兼容的

  

如果我在32位JDK上编译程序并在64位JVM上运行它会   工作?

是的,因为你实际上没有编译它,你只是创建一个字节码。

当JVM加载你的类时,那时它会检查jdk是64位还是32位,并使你的jvm分别为64位或32位。

答案 1 :(得分:2)

无论是用于32位还是64位,都有一个字节代码。

这意味着您可以使用在64位JVM上有任何64位JVM之前在32位计算机上编译的库。

64位JVM可以使用更多内存,但不像您认为的那样,现代64位JVM使用Compressed Oops,因此您可以使用32位引用来处理最多32 GB的堆。 (你也可以使用更多的堆内存)

32位操作系统上的许多32位JVM限制为1.2到1.5 GB的内存。在64位操作系统上,此限制可能为2.5到3.5 GB,具体取决于操作系统。 64位操作系统上的64位JVM实际上仅限于大约1 TB的内存,但此限制可能会在将来解除(并取决于操作系统)

唯一的区别就是你使用的是JNI。 JNI共享库依赖于32位或64位库,您可能只有一个(在这种情况下,您只能将它加载到具有相同位的JVM上),或者它可能表现不同。

答案 2 :(得分:1)

Java字节码与平台无关。除非你开始调用JNI或类似的东西,否则你不必担心。

您可以告诉JVM是以32位还是64位模式运行。

答案 3 :(得分:0)

没有32位/ 64位java程序这样的东西。

JVM本身是在不同的体系结构上开发的,但Java规范是持久的,并且不会随底层硬件而改变。

答案 4 :(得分:0)

创建java应用程序后,构建并获取最终的.jar文件(如果该应用程序包含第三方jar,也可以获取jar个文件。

  •   

    然后使用 exe4j 应用程序,您可以轻松创建自己的应用程序   .exe x64x32

    input个文件
  •   

    您可以从this链接下载exe4j。