【发布时间】:2011-07-27 10:23:56
【问题描述】:
我正在 Glassfish 3.1 上运行 GWT+Hibernate 应用程序。几个小时后,我的 Permgen 空间用完了。这没有任何 webapp 重新加载。我正在使用–XX:MaxPermSize=256m –XmX1024m。
我听取了this page 的建议,发现我泄露了大量的类——我所有的 Hibernate 模型和我所有的 GWT RequestFactory 代理。
上面引用的指南说“检查链,找到意外引用并修复代码”。说起来容易做起来难。
类加载器总是指向org.glassfish.web.loader.WebappClassLoader 的实例。进一步挖掘,我发现了很多来自 $Proxy135 和类似名称对象的引用。但我不知道还有什么办法可以通过。
【问题讨论】:
-
尝试使用这个参数:
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m
标签: java memory-leaks classloader glassfish-3 permgen