0

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

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

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

4

5 回答 5

4

Java 是独立于平台的。因此,您不应该为此烦恼。32 和 64 之间的唯一区别在于使用的 jdk。

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

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

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

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

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

于 2012-08-07T09:59:15.597 回答
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 上)或者它的行为可能不同。

于 2012-08-07T10:17:56.227 回答
1

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

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

于 2012-08-07T09:58:13.317 回答
0

没有 32 位 / 64 位 Java 程序之类的东西。

就是JVM本身是在不同的架构上开发的,但是Java规范是不变的,不会随着底层硬件而改变。

于 2012-08-07T09:58:47.627 回答
0

创建java应用程序后,构建并获取最终.jar文件(如果该应用程序包含 3rd 方 jar,jar也获取该文件)。

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

  • 您可以从此链接下载 exe4j 。

于 2017-11-23T11:56:39.823 回答