如何减少Grails中PermGen空间的使用

时间:2012-12-20 13:15:19

标签: grails memory-management groovy spring-security grails-plugin

在我的Grails应用程序中使用Spring Security Core插件进行身份验证。我面临一个严重的问题,因为我的应用程序需要21秒才能解除Tomcat在安装后携带43/2。

到目前为止这么好,但是开始出现错误'PermGen Error'内存错误Tomcat服务器。在64之前和8月是256之前,错误不会经常崩溃我的应用程序。

我想知道你是否知道一些插件配置以减少此错误的发生率或某些方法来影响此缓存的释放,因为用户数量正在增加,如果你无法解决它,不幸的是必须离开插件我似乎是应用程序安全性的绝佳选择。

有人可以告诉我,应用程序干扰中使用的插件数量是否具有此内存?

2 个答案:

答案 0 :(得分:4)

PermGen是存储应用程序静态组件的内存的一部分,主要是类。从字面上看,它不会受到与用户活动相关的用户数量或日志的影响,这会占用堆空间。

要减少PermGen存储,您必须检查代码,重新设计包含不必要/冗余对象和操作的算法,并尽可能合并变量和函数。一般来说,简化代码会产生较小的可执行文件。这就是你保存PermGen空间的方式。

答案 1 :(得分:1)

某些版本的Tomcat permgen比其他版本更多。在6行中有一个次要版本,我无法让每个人都能可靠地保持运行。即使使用最新版本,您仍需要调整内存设置。我使用以下内容,它最适合我。我仍然不时地得到它们,特别是如果我正在进行大量的运行时编译。在生产中,这不是问题,因为grails的所有开发开销都不存在。

  

-XX:MaxPermSize = 512m -XX:PermSize = 512m -Xms256m -Xmx1024m