Java 任何只使用64位JDK编译的示例代码

Java 任何只使用64位JDK编译的示例代码,java,64-bit,32-bit,Java,64 Bit,32 Bit,是否有任何Java代码构造只有在使用64位JDK时才会编译,或者在Java世界中是否可能 绝对不是在编译级别。Java编译器不知道它将在什么类型的JVM中运行,并且在.class文件中没有特定于JVM的内容。您可能体验到的唯一区别是在运行时,但再一次,没有Java构造能够识别它。您可以阅读architecture system属性,但我很确定这不是您的目标 至于评论中的“下一个问题”,JDK提供了完整的Java堆栈,包括源代码、编译字节码和JVM。您已经猜到,32位和64位JDK的区别在于JVM

是否有任何Java代码构造只有在使用64位JDK时才会编译,或者在Java世界中是否可能

绝对不是在编译级别。Java编译器不知道它将在什么类型的JVM中运行,并且在.class文件中没有特定于JVM的内容。您可能体验到的唯一区别是在运行时,但再一次,没有Java构造能够识别它。您可以阅读architecture system属性,但我很确定这不是您的目标


至于评论中的“下一个问题”,JDK提供了完整的Java堆栈,包括源代码、编译字节码和JVM。您已经猜到,32位和64位JDK的区别在于JVM部分。

Java编译器不知道底层硬件

Java源代码---->Java编译器---->字节码(独立于硬件)

字节码------->Java运行时------->机器级代码(依赖于平台/硬件)

因此,在一个硬件上运行的Java代码不可能在另一个硬件上不工作

第二个问题的答案是,要为字节码创建机器级代码,运行时必须知道底层硬件支持哪些操作


32位和64位机器的指令是不同的。

Java专门设计用于保护it用户免受诸如平台字长(32位或64位)之类的影响。一般来说,不可能用对这一点敏感的语言构造任何东西

因此,所有用Java编写的代码都应该在任何平台上编译

此外,编译器应该能够在任何平台上运行,但由于它们可以用本机代码编写,因此在技术上可能存在一个bug,阻止其中一个在特定平台上运行


使用JNI(Java Native Interface)可能会有一些问题,但这通常会出现在C/C++代码调用和从Java调用中。

我认为这在Java中是不可能的,因为为代码生成的字节码在64位和32位机器上是相同的。干杯,这将是我的下一个问题。我所做的是使用64位JDK编译我的项目,但我错误地将它部署在32位JVM上,但它仍然有效。这是你所期望的吗?如果生成的字节码之间没有差异,为什么要使用32位和64位JDK?好的,所以我的代码可以使用这两种JDK进行编译,但在运行时内存有问题。当通过ANT将单元测试指向64位JDK时,我会遇到内存不足的堆错误,但使用32位JDK时运行良好。这是一个典型的问题,你可能会看到两者之间的?嗯,这不一定是一个问题,我希望看到,但64位软件通常使用更多的内存比32位。所以,这是完全可行的。这是一个通用的64位问题,不是Java特有的。尝试在vm中使用-Xmx选项来增加Java可用的内存。它的内存有一个固定的限制,默认值是最多四分之一个gig。干杯,小伙子,雾开始消散了。那么,在我的64位JDK中,只有JRE会有所不同?我在64位PC上开发,但这与我在开发中使用64位JDK的位置无关。只是当我想运行我的代码时,我的电脑上会安装一个64位JVM?这个对吗?事实上,甚至不是那样。您编译的唯一目标类型是Java版本,没有底层平台的任何细节。Java 7的任何JAR都可以与任何Java 7 JRE一起使用。