首先,我有一个8GB内存的盒子,所以我怀疑总内存是问题。 这个应用程序在6GB或以下的机器上运行良好。
我试图在Eclipse的Run Configurations中使用-Xmx3G下的"VM Arguments"保留3GB的空间。
每次我试图保留超过1500MB的空间时,我都会得到这个错误。 "在初始化虚拟机时发生错误;无法为对象堆保留足够的空间",使用 -Xmx3G
这到底是怎么回事?
这实际上不是一个Eclipse特有的问题;它是一个一般的 Java在Windows上的问题。这是因为JVM在Windows上分配内存的方式。 它坚持分配一个连续的内存块,而这一点 往往Windows不能提供,即使有足够的独立块来满足 即使有足够的独立块来满足分配请求。 有一些工具会试图帮助Windows整理其内存。 理论上,这将有助于这种情况;但我没有真正试过 但我没有真正尝试过,所以不能说它们的有效性。 我有时听说一件事可能会有帮助,那就是重新启动Windows 并在启动任何其他应用程序之前,启动需要大块内存的Java应用程序。 大块的内存。如果你运气好的话,Windows还没有把它的内存空间分割成碎片。 内存空间,Java就会得到它所要求的连续块。
在互联网上的某个地方,对这个问题有更多的技术解释和分析。 分析这个问题,但我手头没有任何参考资料。
不过我确实找到了这个,看起来很有帮助:https://stackoverflow.com/a/497757/639520
确保Eclipse实际上运行的是你认为的那个JVM。如果你在你的网络浏览器中使用java,你很可能也有一个32位的版本,如果它最近安装或更新了,可能会被优先考虑。
为了完全确定,我建议在你的eclipse.ini
文件顶部添加这两行。
-vm
C:/Java/jdk1.6.0_27/bin
...在我的机器上C:/Java/jdk1.6.0_27/bin
,我知道是64位的JVM就在那里。请确保bin
文件夹在那里。
(作为奖励,在Windows 7上,这也允许你实际钉住标签,这就是为什么我必须为自己的使用做这件事)