我有一个GC日志文件,它在堆为空时显示频繁的完整GC (最初是每30分钟,然后是20、10、5,直到每分钟发生几个事件。但是,在某些时候,我可以看到堆使用率突然增加(我可以想象当用户开始连接到我的应用程序时),完整的GC事件开始不那么频繁地发生。我想不出为什么会发生这种情况。
我使用的是Oracle Vm 1.6,我的启动脚本是:
java -XX:+HeapDumpOnOutOfMemoryError \
-Xmx7500m \
-XX:HeapDumpPath=../logs \
-verbose:gc \
-XX:+PrintGCDetails \
-XX:+PrintGCTimeStamps \
-Xloggc:/app/diffusion/Logs/gc.log \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.port=2000 \
-cp ../lib/diffusion.jar:../etc:../data com.pushtechnology.diffusion.Diffusion $1发布于 2013-03-15 11:53:03
尝试禁用显式GC,看看是否有帮助:-XX:+DisableExplicitGC。
然后,当堆为空时,您可以几个线程转储,以确认应用程序中没有任何真正运行的东西。
https://stackoverflow.com/questions/15422352
复制相似问题