我想分配3个X 20485700字节(总计:〜600MB)。 如果我正在用C++编写程序,我可以运行它没有错误, 但是相同的程序(用java编写) - 我得到: java.lang.OutOfMemoryError:java堆空间。为什么我得到java.lang.OutOfMemoryError?
我使用Eclipse(Juno) - 所以我认为eclipse不是问题。 (Xms700m Xmx1024m)
我该怎么办?是什么问题?
谢谢
我想分配3个X 20485700字节(总计:〜600MB)。 如果我正在用C++编写程序,我可以运行它没有错误, 但是相同的程序(用java编写) - 我得到: java.lang.OutOfMemoryError:java堆空间。为什么我得到java.lang.OutOfMemoryError?
我使用Eclipse(Juno) - 所以我认为eclipse不是问题。 (Xms700m Xmx1024m)
我该怎么办?是什么问题?
谢谢
允许Java应用程序使用有限的内存量。此限制是在应用程序启动时指定的。 Java内存分为两个不同的区域:堆空间和permgen。
The size of those regions is set during the Java Virtual Machine (JVM) launch by specifying parameters such as -Xmx and -XX:MaxPermSize. If you do not explicitly set the sizes, platform-specific defaults will be used.
我做到了: 中openFile -vmargs -Dosgi.requiredJavaVersion = 1.5 -XX:MaxPermSize参数=256米 -Xms700m -Xmx1024m 它没有工作 – user3668129
尝试将其更改为-Xmx2048m – Abhishek
我tryied,同样的问题.. 。 – user3668129
将您的VM配置参数-Xms700m -Xmx1024m放入程序的运行配置中。
右键单击你的程序文件(包含main()),选择“Run As”,选择“Run Configurations”。在此向导上,选择标签“JRE”。有一个textarea作为“VM参数”。把你的VM参数放在这个textarea中。
我做到了: 中openFile -vmargs -Dosgi.requiredJavaVersion = 1.5 -XX:MaxPermSize参数=256米 -Xms700m -Xmx1024m 它没有工作 – user3668129
@ user3668129这是Eclipse的配置,而不是程序你在Eclipse中运行。 – Seelenvirtuose
如何设置程序的配置? – user3668129
C++不限制分配的内存空间当Java堆在内存上受限时,它将-Xmx和-Xms作为参数,并为应用程序使用分配Java堆。如果分配的内存空间被占用,并且如果没有更多的空间可用于分配,那么即使在GC之后如果Java堆没有足够空间用于对象分配,GC也会启动清除死对象,然后JVM抛出OutOfMemory错误以通知用户/应用程序开发人员那么当前的Xmx不足以用于对象分配,因此它可以帮助开发人员根据当前使用情况和应用程序需要增加Xmx。
可能的重复[在java中增加堆大小](http://stackoverflow.com/questions/1565388/increase-heap-size-in-java) – weston
那些用来运行Eclipse本身的内存参数,或那些在程序的运行配置中指定? –
具体请参阅http://stackoverflow.com/a/15517960/1341535关于运行配置。 –