如何查找java.exe是32位还是64位?

时间:2017-04-17 15:48:44

标签: java windows jvm 64-bit 32-bit

我有一台装有Windows 7 Professional 64位操作系统的笔记本电脑。

它有一个C:\ProgramData\Oracle\Java\javapath文件夹,其中包含java.exe。我怎么知道这个JVM是32位还是64位?

我右键点击它并打开Properties窗口,在Detail标签下,File version 8.0.1210.13 。但如果它是32位或64位,则没有信息。

3 个答案:

答案 0 :(得分:6)

您可以运行null。在打印出的细节中,您应该看到它是32位还是64位版本。

32位版本将返回“客户端虚拟机”或“服务器虚拟机”的内容,64位版本将明确说明。

,例如,我的机器的输出(诚然,Fedora 25,但原则应该成立):

put

答案 1 :(得分:3)

您可以查看os.arch

System.out.println(System.getProperty("os.arch"));

32位架构通常由x86_32x86表示,64位架构由x86_64表示

答案 2 :(得分:0)

要可靠地确定可执行映像的位数,您需要工具支持。这可以像十六进制编辑器一样简单,可以检查PE Image的内容。您可以按照以下步骤确定二进制文件的机器类型:

  1. 移动到位置0x3c,并注意那里4个字节的值(小端顺序)。这些是从文件开头到PE签名的偏移量。
  2. 移动到步骤1中指出的位置,并验证4个字节的值分别为0x50 0x45 0x00 0x00PE\0\0)。那就是PE图像的签名。如果值不同,则这不是可执行映像。
  3. 移动经过签名并记下接下来的2个字节(小尾数顺序)。此值表示二进制映像的机器类型。
  4. 将值与支持的Machine Types进行比较:
    • 0x014c对应于x86(32位)。
    • 0x8664对应于x64(64位)。

虽然简单可靠,但需要一定的照顾。有使用其他工具的简便方法。如果已安装Visual Studio,则可以通过在命令提示符处执行以下命令来使用DUMPBIN使其报告计算机类型:

dumpbin.exe /HEADERS <path\to\executable\image> | findstr machine

这将产生以下输出(分别为x86和x64):

         14C machine (x86)
     

        8664 machine (x64)

如果您没有Visual Studio或不想安装它,则可以使用Process Explorer来确定正在运行的进程的位数。为此,请在 Process 树视图中右键单击相应的进程,然后选择 Properties ... 。在图片标签上,您会看到该流程的具体含义。