在制作程序时,我如何确保特定应用程序是 64 位应用程序或 32 位应用程序。
是否可以对应用程序分别为 64 位或 32 位进行硬编码,如果可能的话,64 位应用程序是否需要比通常的 32 位应用程序占用更多内存?
我知道 32 位应用程序/硬件的内存限制。
在制作程序时,我如何确保特定应用程序是 64 位应用程序或 32 位应用程序。
是否可以对应用程序分别为 64 位或 32 位进行硬编码,如果可能的话,64 位应用程序是否需要比通常的 32 位应用程序占用更多内存?
我知道 32 位应用程序/硬件的内存限制。
Java 是独立于平台的。因此,您不应该为此烦恼。32 和 64 之间的唯一区别在于使用的 jdk。
如果您使用 64 位 jdk,则您的应用程序是 64 位兼容的
如果您使用 32 位 jdk,则您的应用程序是 32 位兼容的
如果我在 32 位 JDK 上编译一个程序并在 64 位 JVM 上运行它会工作吗?
是的,因为你实际上并没有编译它,你只是在创建一个字节码。
当 JVM 将加载您的类时,它会检查 jdk 是 64 位还是 32 位,并分别使您的 jvm 成为 64 位或 32 位。
无论是用于 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 上)或者它的行为可能不同。
Java 字节码与平台无关。除非您开始调用 JNI 或类似的东西,否则您不必担心。
您可以告诉 JVM 是以 32 位还是 64 位模式运行。
没有 32 位 / 64 位 Java 程序之类的东西。
就是JVM本身是在不同的架构上开发的,但是Java规范是不变的,不会随着底层硬件而改变。
创建java
应用程序后,构建并获取最终.jar
文件(如果该应用程序包含 3rd 方 jar,jar
也获取该文件)。
然后使用应用程序,您可以使用或
exe4j
轻松创建自己的.exe
文件x64
x32
您可以从此链接下载 exe4j 。