我有一个基于SpringMVC 3.2构建并在Tomcat上运行的Web应用程序。我使用VisualVM监视permgen空间并发现它不断增加:
我拿了三个堆转储并运行“ClassLoader Loaded Classes Histo”分析并找到了这些结果:
9:44 pm转储:
loader:org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader#1,
count:3285
9:55 pm转储:
loader:org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader#1,
count:3286
上午7:40转储:
loader:org.springframework.instrument.classloading.tomcat.TomcatInstrumentableClassLoader#1,
count:3855
我的应用程序在此期间非常完美。然而,看起来加载的类数量不断增加。我想了解这些堆转储中新加载的类。运行“ClassLoader Loaded Classes”并没有给我太多信息,因为我被埋没在这些信息中:
任何人都有分析这类问题的经验吗?
使用JVM信息进行更新
JVM: Java HotSpot(TM) 64-Bit Server VM (20.45-b01, mixed mode)
Java: version 1.6.0_45, vendor Sun Microsystems Inc.
JVM args:
-Dvisualvm.id=4226015013703
-Xdebug
-Xrunjdwp:transport=dt_shmem,address=javadebug,suspend=y,server=n
-Dvisualvm.id=4214057282541
-Denv=dev-no-mas
-Dorg.slf4j.simpleLogger.defaultLogLevel=debug
-Dssgateway.disabled=true
-Dcom.sun.management.jmxremote=
-Dcom.sun.management.jmxremote.port=1299
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=127.0.0.1
-Djava.util.logging.config.file=C:\Users\luog.IKARI\.IntelliJIdea13\system\tomcat\Unnamed_rythm_2\conf\logging.properties
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.endorsed.dirs=C:\l\j\apache-tomcat-6.0.29\endorsed
-Dcatalina.base=C:\Users\luog.IKARI\.IntelliJIdea13\system\tomcat\Unnamed_rythm_2
-Dcatalina.home=C:\l\j\apache-tomcat-6.0.29
-Djava.io.tmpdir=C:\l\j\apache-tomcat-6.0.29\temp
答案 0 :(得分:4)
一般问题是每个类都持有对Class定义的引用以及创建他的每个类加载器,并且每个类加载器都包含对他创建的所有类的引用。所以当垃圾收集器移动所有对象时,因为它们总是引用它们继续增长...并且GC不会释放它们。在他们使用的示例中:
$ {JAVA_HOME} / bin中/ jvisualvm
哪个工具可以帮助你,解决方案很长,链接提供图像帮助..这个工具可以帮助你找到导致泄漏的类加载器(类加载器是服务器下的每个应用程序,以便ley几个应用程序在同一服务器下运行)
你会去找问题类..一旦你知道是什么原因引起了问题你将能够治愈它..
这是一个链接,它将揭示为什么会发生这种情况以及如何处理:
cdivilly.wordpress.com/2012/04/23/permgen-memory-leak /
您可以阅读这篇精彩的演示文稿..从第11页开始,您可以看到如何识别泄漏和解决方案......非常有用http://people.apache.org/~markt/presentations/2010-11-04-Memory-Leaks-60mins.pdf
希望更有帮助