java - 监控tomcat permgen

标签 java tomcat7 out-of-memory permgen

有没有一种工具/方法可以监控 tomcat 内存使用情况,即 permgen 以避免出现如下问题。是的,我们可以增加内存并调整 GC,但仍然进行一些监控会更好。当达到某些关键内存消耗时,还希望发送警告电子邮件。

java.lang.OutOfMemoryError: PermGen space
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:1815)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:872)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1325)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1204)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297)
    at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1064)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4238)
    at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3083)
    at org.apache.catalina.loader.WebappLoader.backgroundProcess(WebappLoader.java:404)
    at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1279)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1571)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1580)
    at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1560)
    at java.lang.Thread.run(Thread.java:662)

最佳答案

您可以使用这些监控系统之一

VisualVM - http://visualvm.java.net/

JConsole - http://docs.oracle.com/javase/1.5.0/docs/guide/management/jconsole.html

关于java - 监控tomcat permgen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20100137/

相关文章:

java - 自定义 servlet 在 Tomcat 6 上给出 404,在 7 上工作正常

java - 如何在不出现内存不足错误的情况下将应用程序 Assets 文件夹中的大文件写入 SD 卡?

java Swing : how to keep one component left aligned with another component centered with respect to parent

java - Tomcat 7.0.43 "INFO: Error parsing HTTP request header"

java - Android 运行 doInBackground 后 AsyncTask 未完成

ubuntu - AWS ubuntu环境下如何安装Tomee?

c++ - 为什么 BFS 算法并不总能找到魔方的解?

java - 8拼图java.lang.OutOfMemoryError : GC overhead limit exceeded

java - Gradle:MessageIOException:无法将消息 [EndOfStream] 写入 127.0.0.1(防火墙)?

java - 如何从模式创建 Java 时间瞬间?