我正在Glassfish 3.1上运行一个GWT+Hibernate应用程序。几个小时后,我就会耗尽Permgen空间,即使没有任何webapp重新加载。我使用
我采纳了来自这个页面的建议,并发现我正在泄漏大量类-我的所有Hibernate模型和所有GWT RequestFactory代理。
上述指南说:“检查链条,找到意外引用并修复代码”。说起来容易做起来难。
类加载器始终指向
–XX:MaxPermSize=256m –XmX1024m
运行。我采纳了来自这个页面的建议,并发现我正在泄漏大量类-我的所有Hibernate模型和所有GWT RequestFactory代理。
上述指南说:“检查链条,找到意外引用并修复代码”。说起来容易做起来难。
类加载器始终指向
org.glassfish.web.loader.WebappClassLoader
的实例。进一步挖掘,我发现有很多来自$Proxy135
和类似命名的对象的引用。但我不知道该如何继续跟进。
-XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256m
。这些参数可以改善垃圾回收的性能。 - Harry Joy