详细的Java GC日志

时间:2011-09-02 22:24:48

标签: java garbage-collection

当使用以下args时,sun JVM会将详细的GC日志输出到StdOut。

 -verbose:gc
 -XX:+PrintGCTimeStamps
 -XX:+PrintGCDetails

但是,我不希望StdOut中的输出,我真的不需要每个GC的细节。是否可以以编程方式访问用于这些日志的数据?我希望能够记录我自己的日志文件分配/收集的内存量,理想情况下是平均对象大小。

2 个答案:

答案 0 :(得分:4)

您需要添加

-Xloggc:log_file_name

每次JVM启动时都会重新初始化此文件,因此如果您想将其保留以供分析,请不要忘记将其移至安全位置。

Java 6可以找到Java {1}}的许多命令行选项的完整列表。

答案 1 :(得分:0)

您可以使用JMX Bean for Memory Pools和GC。它们的优势在于您可以获得免费计划的计数器。缺点是,它们因各种VM供应商,版本和GC设置而不同。

例如

java.lang:type=GarbageCollector,name=Copy
  CollectionCount, ColletionTime, LastGCInfo[1].duration,memoryUSageBefore/After
java.lang:type=GarbageCollector,name=MarkSweepCompact
  CollectionCount, CollectionTime, LastGCInfo[1].duration,memoryUSageBefore/After
java.lang:type=Memory
  HeapMemoryUsage[1].commited,init,max,used