我有EJB的企业应用程序。该应用程序的总大小为34兆。 当我部署我的应用程序时一切都很好但是当我重新部署它时,总加载类的数量增加。我正在使用visualVM查看此信息。 它应该是它应该是什么,或者它是一个内存泄漏。如何解决这个问题呢? 感谢
答案 0 :(得分:6)
你有一个classloader泄漏!
您通常会发现,当您在任何 JavaEE应用程序服务器(包括Glassfish)上部署应用程序时,应用程序服务器将专门为您的应用程序创建一个新的类加载器。初始化应用程序时,并且在运行时,该类加载器将加载新类,这些类将被置于永久内存中,称为PermGen
区域。
当取消部署应用程序时,该类加载器应该被垃圾收集,但有时这种情况不会发生,因为某些东西导致引用持久存在。当您重新部署您的应用程序时,应用程序服务器将执行与以前相同的操作,但现在可用的内存更少。
有关此问题的详情,请查看Frank Kieviet的Classloader Leaks博客帖子以及How to Fix Classloader Leaks的后续内容。
答案 1 :(得分:0)
Visual VM只是Netbeans中“profiler”工具的独立版本。
因此,为了检测您的内存泄漏,您应该阅读文档 Netbeans分析器。
以下是一些可以帮助您入门的链接