这是Jboss AS 7 / EAP 6的jvm设置
java version "1.6.0_35"
Java(TM) SE Runtime Environment (build 1.6.0_35-b10)
Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01, mixed mode)
VM Arguments: -XX:+UseCompressedOops -Dprogram.name=standalone.bat
-XX:-TieredCompilation -XX:+PrintGCDetails -Xloggc:E:\serverLog\jvm.log
-Xms1303M -Xmx1303M -XX:MaxPermSize=256M
-Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000
-Djava.net.preferIPv4Stack=true -Dorg.jboss.resolver.warning=true
-Djboss.modules.system.pkgs=org.jboss.byteman
-Djboss.server.default.config=standalone.xml -Dorg.jboss.boot.log.file=E:\JAVA
\JBOSS\EAP-6.0.0.GA\jboss-eap-6.0\standalone\log\boot.log
-Dlogging.configuration=file:E:\JAVA\JBOSS\EAP-6.0.0.GA\jboss-eap-6.0
\standalone/configuration/logging.properties
我每30秒刷新一次重载页面,然后我发现在gc log中,逐渐发生了完全垃圾收集,每个完整的GC发布部分老一代但它越来越小,最后只是开销,here是jvm日志
我想知道这是否表示内存泄漏或jvm调整问题以及如何让每次gc恢复大部分内存?
感谢大家的指导,在检索堆转储并使用Eclipse MAT进行分析后,它看起来所有泄漏来自 org.jboss.as.web.deployment.WebInjectionContainer
这里是结果的截图
800 + m内存泄漏
我不知道它是否是同一个问题,但我尝试从另一个thread应用相同的更改,我可以看到应用程序使用更少的内存,但泄漏仍然存在。完整的GC只能恢复少量的终身生成因此(年轻时生成泄漏)所以经过几个完整的gc服务器得到了它的开销......