【问题标题】:OUtOfMemoryError: define PermGen space properly in Tomcat 7 and LinuxOUTOfMemoryError:在 Tomcat 7 和 Linux 中正确定义 PermGen 空间
【发布时间】:2014-10-14 22:47:39
【问题描述】:
我们有一个部署 2 个 Web 应用程序的 Tomcat7 实例。这些 webapp 依赖很多,目前内存空间好像不够用。
我们已经在启动文件中配置了所需的环境变量。特别是,我们设置 JAVA_OPTS=-Xmx8192
我和我的伙伴讨论了缺少更多配置参数的问题,因为在另一个配置中我看到了 -Xms、MaxPermSize 等
为了避免 PermGen 异常而缺少哪些参数,它们的作用是什么?
提前致谢
【问题讨论】:
标签:
linux
tomcat7
virtual-machine
permgen
【解决方案1】:
-Xms256m -Xmx1024m -XX:+DisableExplicitGC -Dcom.sun.management.jmxremote
-XX:PermSize=256m -XX:MaxPermSize=512m
在你的虚拟机参数中添加上面的代码行我相信它对你有用
如果你使用 eclipse IDE 而不是使用它,你可以更改 VM 参数
double click on the server > open Lunch Configuration > Arguments > VM Arguments
并在上面添加两行
【解决方案2】:
分配给 Java 进程的内存量是在启动时指定的。为了让事情变得更复杂,内存被划分为不同的区域,堆和永久根是最熟悉的子区域。
当您通过 -Xmx 指定此特定进程允许的最大堆大小时,permgen 的相应参数是 -XX:MaxPermSize。 90% 的 Java 应用程序似乎需要 64 到 512 MB 的 permgen 才能正常工作。为了找到你的极限,尝试一下。