在Tomcat / Glassfish / JBoss / etc中重新部署应用程序时,通过保留对先前类加载器中的实例的引用,很容易导致类加载器泄漏。 Jevgeni Kabanov在这里讨论了这个问题......
http://www.zeroturnaround.com/blog/reloading-objects-classes-classloaders/
是否有人找到了利用自动化测试(即:通过junit)来测试重新部署Web应用程序不会导致内存泄漏的好方法?我一直想知道是否使用嵌入式Jetty可以很容易地编写一个junit测试,一遍又一遍地重新部署你的应用程序。
答案 0 :(得分:1)
我会考虑查看Jetty实例的自定义类加载器,使用终结器告诉您它正在被垃圾收集,然后显式地 - 通过visualvm左右 - 告诉HotSpot进行垃圾收集,这样终结器将是如果没有泄漏则运行。
答案 1 :(得分:1)
您可以查看memory leak detection features of Tomcat,尤其是从版本7开始。