代码之家  ›  专栏  ›  技术社区  ›  YoK

64位JVM的Java编程

  •  5
  • YoK  · 技术社区  · 15 年前

    如何识别当前安装的JVM(64位/32位)

    在为64位JVM目标平台编程时是否需要考虑一些问题?

    我的Java代码能在32位和64位JVM上工作吗?

    如何在64位JVM上运行Java应用程序?

    4 回复  |  直到 15 年前
        1
  •  10
  •   Paul Jowett    15 年前

    通常,64位jvm会将自己标识为这样。

    32/64位注意事项:

    1. 地址空间-如果您不希望地址超过1.3Gb的内存,那么您将看不到区别
    2. 本机库-如果您正在加载任何JNI库,那么它们将需要与您的VM体系结构匹配。例如,不要尝试从64位vm加载32位本机库(没有-d32类型的标志)

    是的,相同的代码将在两个JVM上运行。

    我认为系统属性“sun.arch.data.model”有32/64标志。

    http://www.oracle.com/technetwork/java/hotspotfaq-138619.html

        2
  •  4
  •   Jesper    15 年前

    int 在Java中总是32位和一个 long 总是64位(在C和C++中,这些类型的大小是系统依赖的)。

    没有单独的32位和64位版本的Java字节码;字节码是完全相同的,不管您运行它的JVM是32位还是64位。您不必为32位或64位编译不同的Java源代码。就功能而言,Java应用程序在32位或64位JVM上运行并不重要。

    jowierun可能已经提到了一些技术上的差异。也可能存在绩效差异;例如,Oracle的Windows 64位JVM与32位JVM的调优不同,它进行了其他JIT优化。我在最近编写的一个计算密集型应用程序中注意到了这一点;在64位JVM上,它的运行速度比在32位JVM上快得多(但这只是一个例子,不要把它当作任何程序在64位JVM上运行得更快的证据。

        3
  •  2
  •   user207421    15 年前

    你把这些问题背对背。

    1. 您不必在Java代码中执行任何操作,它将同时在32位和64位上运行。
    2. 因此,您不需要知道它是否是64位JVM。
        4
  •  2
  •   Laurent Grégoire    15 年前

    如果您计划使用javanativeinterface(JNI)编写本机代码,那么在编写将在64位和32位机器上运行的正确C代码时必须格外小心。确保在向Java代码传递参数或从Java代码传递参数时使用正确的Java类型(JNI为Java类型提供了一组typedef),尤其是在转换数组时。在测试本机代码时,在两种体系结构上测试(m32将强制在GNU gcc上使用32位arch)和不同的jvm。

    推荐文章