Windows XP上Java的最大内存限制

105

我一直都能够为在32位Windows XP上运行的Java SE分配1400兆字节的内存(Java 1.4、1.5和1.6)。

java -Xmx1400m ...

今天我在一台新的Windows XP机器上尝试了相同的选项,使用了Java 1.5_16和1.6.0_07,并得到了以下错误:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

经过试错,似乎在这台机器上我可以分配最多1200兆字节。

有什么想法为什么一台机器可以允许1400,而另一台只能允许1200?

编辑:该机器有4GB的RAM,大约有3.5GB可以被Windows识别。


在我的经验中,你会注意到在32位壳或64位壳中运行应用程序的最大差异,尽管64位WindowsXP系统很少见。 - djangofan
http://wiki.eclipse.org/Eclipse.ini - http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#generation_sizing - Andrew
13个回答

0

更改堆大小的方法有很多种,例如:

  1. 文件->设置->构建、执行、部署->编译器,在这里您可以找到堆大小。
  2. 文件->设置->构建、执行、部署->编译器->安卓,在这里您也可以找到堆大小。如果您遇到相同的问题,可以参考此选项来处理安卓项目。

对我有效的方法是:

  1. 如果您的Java已更新,请设置适当的JAVA_HOME路径。

  2. 创建新的系统变量:计算机->属性->高级设置->创建新的系统变量

名称:_JAVA_OPTION 值:-Xmx750m

提示: 您可以在Intellij中找到默认的VMoption。 帮助->编辑自定义VM选项,在此文件中,您可以看到堆的最小和最大大小。


0

以下是如何增加页面大小的步骤:

  1. 右键单击“我的电脑”--->属性--->高级
  2. 在性能部分点击设置
  3. 点击高级选项卡
  4. 在虚拟内存部分,点击更改。它将显示您当前的页面大小。
  5. 选择有可用硬盘空间的驱动器。
  6. 提供初始大小和最大大小...例如,初始大小为0 MB,最大大小为4000 MB。(根据您的需求)

-1

首先,当你拥有4GB的RAM时,使用页面文件是无用的。Windows无法访问超过4GB(实际上由于内存空洞而更少),因此不使用页面文件。

其次,地址空间分为两半,一半用于内核,一半用于用户模式。如果您需要更多的RAM来运行应用程序,请在boot.ini中使用/3GB选项(确保java.exe被标记为“大地址可寻”(搜索更多信息)。

第三,我认为你无法分配完整的2GB地址空间,因为Java会在内部浪费一些内存(用于线程、JIT编译器、VM初始化等)。使用/3GB开关可以获得更多的内存。


1
认为在拥有4GB内存的情况下,页面文件是无用的这一想法是错误的。没有页面文件,操作系统无法将未使用的进程数据(未使用服务的堆栈空间等)从物理内存中清除,从而降低可用于实际工作的内存量。拥有页面文件可以释放内存。 - nobody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接