当使用以下参数时,Sun JVM将详细输出GC日志到StdOut。
-verbose:gc
-XX:+PrintGCTimeStamps
-XX:+PrintGCDetails
然而,我不希望在标准输出中获得输出,我也不需要每个GC的详细信息。是否可以以编程方式访问用于这些日志的数据?我想能够记录到自己的日志文件中分配/收集的内存量,并且理想情况下还能随时间记录平均对象大小。
jconsole
并查看JVM公开的不同MBean。在SO上有几个关于JMX和GC的问题。如果您懂德语,这篇文章和相关代码包含一些有趣的想法http://www.torsten-horn.de/techdocs/jmx-gc.htm。 - fvu-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=<文件数量> -XX:GCLogFileSize=<大小>
请注意,这三个选项都是必需的。其他提示请参见此处: http://jyates.github.io/2012/11/05/rolling-java-gc-logs.html - Dan Pritts