在尝试增加jvm内存时,是否可以将Xmx设置为最大值?

有最大的 大小你可以设置Xmx? 我把它设置为1024米和日食开放确定。 当我把它设置为1024以上,eclipse不打开,我得到错误“jvm终止。退出代码= -1”…

我这样做是因为我不断收到“java.lang.OutOfMemoryError:Java堆空间”。 我正在阅读一个35.5Mb .txt文件,并且在使用“ while((line = reader.readLine()) != null) ”循环读取文件时发生此错误。 我本以为1024MB就足够了。 谁能帮我?

是的,有一个最大值,但它是依赖于系统的。 尝试一下,看看,加倍,直到你达到极限,然后search下来。 至less在Linux上的Sun JRE 1.6中,如果不是总是提供有用的错误信息(peregrino是上网本运行32位ubuntu,2G内存且不交换)

 peregrino:$ java -Xmx4096M -cp bin WheelPrimes Invalid maximum heap size: -Xmx4096M The specified size exceeds the maximum representable size. Could not create the Java virtual machine. peregrino:$ java -Xmx4095M -cp bin WheelPrimes Error occurred during initialization of VM Incompatible minimum and maximum heap sizes specified peregrino:$ java -Xmx4092M -cp bin WheelPrimes Error occurred during initialization of VM The size of the object heap + VM data exceeds the maximum representable size peregrino:$ java -Xmx4000M -cp bin WheelPrimes Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine. (experiment reducing from 4000M until) peregrino:$ java -Xmx2686M -cp bin WheelPrimes (normal execution) 

除了-Xmx4095M这个比较奇怪(可能是签名/未签名的比较?),大部分都是自我解释的,它宣称在一个没有交换的2GB机器上保留2686M。 但是,如果操作系统允许你解决这个问题,那么它的确提示最大尺寸是4G而不是2G,对于一个32位的虚拟机来说。

我认为一个32位的JVM最多有2GB的内存。但这可能已经过时了。 如果我理解正确的话,可以在Eclipse启动器上设置-Xmx。 如果要增加从Eclipse运行的程序的内存,应该在“运行 – >运行configuration…”中select-Xmx(select您的类并打开“参数”选项卡,将其放入VM参数区域)菜单,而不是在Eclipse启动

编辑:你要求的细节。 在Eclipse 3.4中

  1. 运行 – >运行configuration…

  2. 如果您的类没有列在“Java应用程序”子树左侧的列表中,请单击左上angular的“新启动configuration”

  3. 在右边的“主”标签确保项目和课程是正确的

  4. select右侧的“参数”选项卡。 这个有两个文本区域。 一个是获取提供给主方法的args []数组的程序参数。 另一个是VM的参数。 用VM参数(下一个iirc)放入下面这个:
    -Xmx2048m

    我认为1024m应该足够用于你所需要的东西!

  5. 点击应用,然后点击运行

  6. 应该pipe用 :)

看看这个在设置java堆的一些常见错误。 您可能将堆大小设置为比计算机的物理内存更大的值。

你应该避免通过增加堆大小来解决这个问题。 相反,您应该对应用程序进行configuration,以查看您在哪里花费如此大的内存。

我认为它是2GB左右。 虽然Pete Kirkham的回答非常有趣,可能是真实的,但是我已经分配了3GB以上,但实际上并没有使用3GB。 这也许可以解释为什么你能够在没有交换空间的情况下在2GB RAM上分配2.5GB。 实际上,它并没有使用2.5GB。