在制作程序时,如何确保特定应用程序是64位应用程序或32位应用程序。
是否有可能硬编码应用程序将分别为64位或32位,如果可能,64位应用程序是否需要占用比通常的32位应用程序更多的内存?
我知道32位应用程序/硬件的内存限制。
答案 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
x64
或x32
input
个文件
您可以从this链接下载exe4j。