java如何监控垃圾收集,以查看什么是GC?
我有一个巨大的Java应用程序(运行Jdk7 64位,Weblogic 12)。在没有人调用的情况下运行应用程序——也就是说只是在闲置。我可以看到每3-4分钟就有一个300Mb的峰值,然后使用VisualVM进行垃圾收集
我做了几次堆栈跟踪,拍摄时没有任何东西在忙。我们还利用EHCache并添加日志来记录结果。一旦应用程序启动并运行,我在日志中看不到任何东西(当它处于空闲状态时),但仍然会发生300mb的垃圾收集
使用eclipse memory Analyzer时,当使用的空间较低且之后为300mb时,进行堆转储不会显示出太大的差异,而内存分配看起来是相同的:
有没有办法查看垃圾收集的内容?我知道会有持续的收集,但300mb行吗
# 1 楼答案
您看到的是监控对应用程序的影响,因为它是用Java实现的。我建议你在命令行中添加
-XX:+PrintGCDetails
,并检查有无监控的GCs发生频率是的,这种垃圾率(300MB/5min)对于JMX来说是正常的。另外,你的应用程序有多大?超过32 GB内存