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

Posted

技术标签:

【中文标题】如何减少 Grails 中 PermGen 空间的使用【英文标题】:How to reduce the use of PermGen space in Grails 【发布时间】:2012-12-08 00:33:25 【问题描述】:

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

到目前为止一切顺利,但Tomcat服务器开始出现错误'PermGen Error'内存错误。之前是 64,而 Aug 是 256,因此该错误不会经常让我的应用崩溃。

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

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

【问题讨论】:

为什么你认为是因为 Spring Security Core?即使使用基本的 Spring MVC 应用程序,我也总是遇到同样的问题。 对,这个和Spring Security没有关系。 安装后延迟时间,我认为是Core Security,但不知道是什么原因导致过度使用此内存。有谁知道减少它的使用的任何方法?登录系统的用户数影响permgen? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

你好 Gregg,我想知道的是如何减少应用程序中 PermGen 的使用,而不必进一步增加数量。但是感谢您愿意帮助我!

以上是关于如何减少 Grails 中 PermGen 空间的使用的主要内容,如果未能解决你的问题,请参考以下文章

Grails/Groovy 内存泄漏故障排除?

内存不足:Permgen 空间 [重复]

如何在 Tomcat 中部署之前监控 PermGen 空间使用情况

如何清除tomcat中的PermGen空间错误

我出现内存不足错误,如何解决?Permgen 空间区域是啥意思?是啥原因造成的? [复制]

java.lang.OutOfMemoryError: PermGen 空间异常