Java 在尝试增加jvm内存时,是否有一个可以将Xmx设置为的最大值?
是否有可以将Xmx设置为的最大尺寸?我将其设置为1024m,eclipse打开正常。当我将其设置为1024以上时,eclipse不会打开,我得到错误“jvm终止。退出代码=-1”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
我这样做是因为我不断得到一个“java.lang.OutOfMemoryError:java堆空间”。我正在读取一个35.5Mb.txt文件,当它使用“
while((line=reader.readLine())!=null)
”循环读取文件时,会发生此错误。我本以为1024mb就足够了。有人能帮我吗?我认为32位JVM的最大内存为2GB。不过这可能已经过时了。如果我理解正确,您可以在Eclipse启动器上设置-Xmx。如果您想增加从Eclipse运行的程序的内存,应该在“运行->运行配置…”(选择您的类并打开参数选项卡,将其放入VM参数区域)菜单中定义-Xmx,而不是在Eclipse启动时
编辑:您要求的详细信息。
在Eclipse3.4中
-Xmx2048m 我认为10.24亿美元足以满足您的需求
您应该通过增加堆大小来避免解决此问题。相反,您应该分析您的应用程序,看看您在哪里花费了这么大的内存。是的,有一个最大值,但它取决于系统。试试看,加倍直到达到极限,然后向下搜索。至少在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)