【发布时间】:2014-03-20 10:12:54
【问题描述】:
我知道在JVM中,permgen区是用来存放类定义的。在我的 Tomcat 中,我看到 permgen 的当前内存使用量接近 100MB,似乎它只是随着时间的推移而增长,即使没有人使用 Tomcat 中的应用程序 我的问题是:
permgen 真的不会被垃圾回收吗,我的意思是那里使用的内存不断增长和增长?
permgem 何时被垃圾回收?
“CMSPermGenSweepingEnabled”和“CMSClassUnloadingEnabled”是什么意思?
我的 permgem 的最大大小是 256,我不希望下周出现 OutMemoryException。
请仅提供准确且记录在案的答案。
我使用 Tomcat 7、Java 7,我使用了很多并行部署技术,我每周进行几次取消部署、重新部署。 我从不使用Strings的方法intern()
【问题讨论】:
-
你用的是什么版本的tomcat?
-
可能值得检查列出的内容in this document
-
我也曾经遇到过永久泄漏。我在使用 xpath 查询 Java 应用程序中的 XML 对象时。文档构建器在将 XML 解析到 permagen 时添加了它创建的类。每次更改时,它都会解析此 XML。泄漏缓慢,但确实会引起问题。
-
应用程序是否经常{un,re}部署?
-
你是否内化了太多的 String 对象?
标签: java garbage-collection permgen