1

这是一个 32 位的 Ubuntu 操作系统

rob@laptop:~$ uname -a
Linux laptop 3.5.0-37-generic #58~precise1-Ubuntu SMP Wed Jul 
10 17:51:56 UTC 2013 i686 i686 i386 GNU/Linux


rob@laptop:~$ java -version
java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.10) (7u25-2.3.10-1ubuntu0.12.04.2)
OpenJDK Server VM (build 23.7-b01, mixed mode)


rob@laptop:~$ sudo update-alternatives --config java
There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path                                           Priority   Status
0            /usr/lib/j2re1.6-ibm/jre/bin/java               1200      auto mode
1            /home/rob/Downloads/jre1.7.0_25/bin/java        1         manual mode
2            /usr/lib/j2re1.6-ibm/jre/bin/java               1200      manual mode
* 3            /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java   1051      manual mode

我希望能够运行超过 2g 的堆

rob@laptop:~$ java -Xmx3g -jar tool.jar 
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

rob@laptop:~$ free -g
             total       used       free     shared    buffers     cached
Mem:            15          2         12          0          0          1
4

2 回答 2

5

不可以。32 位内核(也可能是 32 位 CPU)无法在您选择的操作系统和内核的情况下为 JVM(或任何其他 64 位可执行文件/ELF)运行 64 位可执行文件。

于 2013-08-15T23:08:58.503 回答
0

据我所知,你没有提到这是什么硬件。

32 位/64 位问题是关于硬件的基本字长是多少,处理器有使用该字长的指令。因此,为 64 位构建的软件将使用这些指令,如果你以某种方式让它在 32 位机器上运行,它会崩溃。

做你想做的,如果你的机器是 64 位的,那么你可以安装一个 64 位的 linux,然后是 64 位的 JVM。

于 2013-08-15T23:15:59.890 回答