【问题标题】:JVM Runtime Compiler 32-bit on 64-bit platform [duplicate]64位平台上的JVM运行时编译器32位[重复]
【发布时间】:2013-12-31 19:06:01
【问题描述】:

我们知道 Java 编译器生成的字节码是中间的和平台无关的。

我正在运行 64 位 Windows Server 2008 R2 平台,我想告诉 Java 虚拟机将字节码编译为 32 位而不是 64 位(其默认行为)。

我这样做是为了与另一个 32 位应用程序的兼容性问题。

请帮忙!

P.S:最好我知道它是如何通过 JNI 完成的。

【问题讨论】:

  • 这个答案可能有用吗? stackoverflow.com/questions/9757456/…
  • 您使用的是 32 位 JRE 吗?
  • 产生字节码的 javac 编译器不知道 32 位和 64 位的每两周 furlong。它完全与机器字长无关。当然,JITC 依赖于机器,但如果您运行 32 位 JRE,您应该会获得 32 位行为。

标签: java jvm


【解决方案1】:

我们知道 Java 编译器生成的字节码是中间的和平台无关的。

正确。

我正在运行 64 位 Windows Server 2008 R2 平台,我想告诉 Java 虚拟机将字节码编译为 32 位而不是 64 位(其默认行为)。

你只是自相矛盾。您首先正确地说字节码是平台无关的。现在你说错了,它是特定于平台的,32 位或 64 位。它不是。它与平台无关。你第一次是对的。没有“将字节码编译成 32 位”或“而不是 64(其默认行为)”之类的东西。

我最好知道它是如何通过 JNI 完成的

编译不是通过 JNI 完成的。

【讨论】:

    【解决方案2】:

    好的,这就是交易。

    字节码是一种平台中立的方式,表示“Java 代码被编译为可执行文件,就像我们在 C/C++ 中所做的那样”。字节码是一种中间格式,由 JVM 解释以执行指令。

    现在 32 位或 64 位不是字节码,而是用于生成或运行该字节码的 JVM 或 JRE 或 JDK。我不知道你是否知道,但实际上是 JVM 给了我们 Java 平台中立功能的错觉。它是您可以在任何地方运行的类文件/jars,但您仍然需要依赖于平台或符合标准的 JVM 或 JRE 来运行您的类文件或 jars。

    【讨论】:

      猜你喜欢
      • 2012-10-22
      • 1970-01-01
      • 2011-03-30
      • 2011-05-13
      • 2011-05-30
      • 2013-10-20
      • 2013-04-15
      • 2012-11-03
      • 2012-03-12
      相关资源
      最近更新 更多