我已将堆大小发送到-Xmx512m -XX:MaxPermSize = 14336m但仍然出现内存不足错误。 你能帮我解释一下我们在windows8机器上设置多少堆内存(Ram大小16GB)
答案 0 :(得分:0)
与物理ram +虚拟内存一样多。请参阅下面的虚拟内存。 不要忘记所有这些内存都在您的进程之间共享,因此您应该在内存耗尽的进程工作时关闭所有不必要的应用程序。
查看您的虚拟内存信息。 系统 - >高级系统设置 - >高级选项卡 有关详细信息,请参阅以下Microsoft帮助。 Change the size of virtual memory
答案 1 :(得分:0)
正如This question here中所讨论的, MaxPermSize 参数是
永久生成堆的最大大小,一个保存类的字节代码并与包含实际实例的对象堆保持分离的堆
标志 Xmx 负责创建实例的内存。现在我不明白你的应用程序,但我个人认为你不需要~14GB的字节码缓存在里面。尝试可能更改最大堆大小( Xmx )而不是perm大小,看看结果如何,因为最可能的原因是你创建的实例太多了你分配的记忆。
答案 2 :(得分:0)
你似乎误解了什么堆和permgen空间真正做了什么: Perm space vs Heap space
您需要增加堆大小:例如的 -Xmx1g 即可。 MaxPermSize 应限制在300米左右。您使用的价值如14G太高,恕我直言,没有实际用途。
注意您的Java VM。 32Bit JavaVM只能解决大约1.2G(堆和perm gen的总和),而64Bit Java可以处理更大的堆,例如8克。
如果你正在查看声纳文件:http://docs.codehaus.org/display/SONAR/Analyzing+with+SonarQube+Runner你看,他们提到了128米的烫发尺寸。