编辑--所以看看Cache#15和JVisualVM中的MemoryStore#9。结果是查询缓存。希望删除conf中将查询缓存限制为小于10k项(默认值)的缓存配置将解决此问题.
我们在tomcat 6x上部署了一个Grails应用程序(v1.2.0)。经历了一次OOM事故。得到堆转储,并开始在JVisualVM中分析它。这就是我所看到的

还有这个

所以有很多ehcache东西,当然还有很多字节和char数组。我已经尝试过搜索“grails内存泄漏ehcache”,但是没有任何明确的消息出现。有没有人见过像这样的问题,或者对造成这种情况的原因有任何见解?它是否是配置错误的ehcache?
我们正在使用各种插件(acegi,石英,邮件,后台线程),所有最新版本的grails版本1.2.0。
编辑-更多信息
使用以下内容启动tomcat
-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xms1024m -Xmx2048m -XX:MaxPermSize=256m -d64 -server -XX:+HeapDumpOnOutOfMemoryError -XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled -XX:+UseConcMarkSweepGC而错误是
java.lang.OutOfMemoryError: Java heap space有趣的是,我们过去常常得到与perm gen空间相关的错误,但是当我更新到上面显示的Java配置时,permgen空间错误就消失了。
发布于 2011-01-12 19:21:13
拥有大量的字符串和char[]是正常的。我会尝试纠正ehcache配置.很明显,您可以缓存到很多。有一些选项可以将缓存转储到磁盘,也许这是您的解决方案。
编辑: PermGen的消失是因为-XX:MaxPermSize=256m,这基本上就是。
发布于 2011-01-12 19:18:48
你可能会用光烫发空间,而不是堆。
将GC记录到一个文件并进行链接,并回发JVM args。
发布于 2011-01-12 20:18:18
您使用的是Grails 1.2.0还是1.2.5 (最新的1.2.x)?最新的马厩是1.3.6。不过,我认为问题是ehcache配置错误。
https://stackoverflow.com/questions/4672899
复制相似问题