作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有带有 EJB 的企业应用程序。该应用程序的总大小为 34 兆。当我部署应用程序时,一切都很好,但是当我重新部署它时,加载的类总数会增加。我正在使用 VisualVM 来查看此信息。是应该这样还是内存泄漏。如何解决这个问题呢?谢谢
最佳答案
你有一个类加载器泄漏!
您通常会发现,当您在任何 JavaEE 应用服务器(包括 Glassfish)上部署应用程序时,应用程序服务器都会专门为您的应用程序创建一个新的类加载器。当您的应用程序初始化并运行时,该类加载器将加载新类,这些新类将被放置到永久内存中,称为PermGen
区域。
当应用程序被取消部署时,该类加载器应该被垃圾收集,但有时这种情况不会发生,因为某些东西导致引用持续存在。当您重新部署应用程序时,应用程序服务器将执行与以前相同的操作,但现在可用内存更少。
有关这方面的更多信息,请查看 Frank Kieviet的博客文章名为 Classloader Leaks以及 How to Fix Classloader Leaks 的后续行动.
关于java - Glassfish 中加载的类总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/533545/
我是一名优秀的程序员,十分优秀!