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

Java 在尝试增加jvm内存时,是否有一个可以将Xmx设置为的最大值?,java,eclipse,jvm,Java,Eclipse,Jvm,是否有可以将Xmx设置为的最大尺寸?我将其设置为1024m,eclipse打开正常。当我将其设置为1024以上时,eclipse不会打开,我得到错误“jvm终止。退出代码=-1” 我这样做是因为我不断得到一个“java.lang.OutOfMemoryError:java堆空间”。我正在读取一个35.5Mb.txt文件,当它使用“while((line=reader.readLine())!=null)”循环读取文件时,会发生此错误。我本以为1024mb就足够了。有人能帮我吗?我认为32位JVM

是否有可以将Xmx设置为的最大尺寸?我将其设置为1024m,eclipse打开正常。当我将其设置为1024以上时,eclipse不会打开,我得到错误“jvm终止。退出代码=-1”


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

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

编辑:您要求的详细信息。 在Eclipse3.4中

  • 运行->运行配置

  • 如果您的类未列在“Java应用程序”子树左侧的列表中,请单击左上角的“新启动配置”

  • 在右边的“Main”选项卡上,确保项目和类是正确的

  • 选择右侧的“参数”选项卡。 这个有两个文本区域。一个是用于进入提供给main方法的args[]数组的程序参数。另一个用于VM参数。将以下内容放入具有VM参数的参数(低一个iirc)中:
    -Xmx2048m

    我认为10.24亿美元足以满足您的需求

  • 单击应用,然后单击运行

  • 应该有效:)

  • 查看设置java堆时的一些常见错误。您可能已将堆大小设置为大于计算机物理内存的值


    您应该通过增加堆大小来避免解决此问题。相反,您应该分析您的应用程序,看看您在哪里花费了这么大的内存。

    是的,有一个最大值,但它取决于系统。试试看,加倍直到达到极限,然后向下搜索。至少在linux上使用Sun JRE 1.6时,您会收到有趣的错误消息(peregrino是一款运行32位ubuntu、2G RAM且无需交换的上网本):


    大多数都是不言自明的,除了-Xmx4095M(可能是有符号/无符号比较?)之外,它还声称在2GB机器上保留26.86亿内存,而不进行交换。但它确实暗示,如果操作系统允许您解决这么多问题,32位虚拟机的最大容量是4G而不是2G。

    我认为大约是2GB。虽然Pete Kirkham的答案非常有趣,并且可能是正确的,但我已经分配了超过3GB的内存,没有错误,但是实际上它并没有使用3GB。这也许可以解释为什么您能够在2GB RAM上分配2.5 GB,而不需要交换空间。实际上,它没有使用2.5GB。

    您可以发布文件读取方法的代码吗?您一定做错了;)nickolai提出了一个很好的建议(运行配置)以及Richie_W(一定是做错了什么-文件是否>1G?)。请尝试这些设置(),并尝试使用JConsole跟踪应用程序。文件只有35.5Mb。
    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)