垃圾收集

时间:2009-07-28 08:56:22

标签: java

有助于调整堆大小或诊断任何其他内存问题的垃圾收集(GC)信息的日志记录选项是由什么来完成的?

5 个答案:

答案 0 :(得分:4)

-verbose:gc就是你想要的。

请查看GCPortal以获取更多相关信息。

JConsole可用于以图形方式监控垃圾收集,有时可用于识别趋势等。

答案 1 :(得分:2)

简而言之

  • -XX:PrintGCDetails - 每个GC阶段的时间和空间大小
  • -XX:+PrintGCDateStamps - 向gC日志添加时间戳
  • -XX:+PrintReferenceGC - 帮助查找参考滥用行为
  • -XX:+PrintPromotionFailure
  • -XX:+PrintGCApplicationStoppedTime - 报告所有安全点,而不仅仅是GC

More comprehensive list of GC options

答案 2 :(得分:1)

垃圾收集日志记录取决于您使用的JVM类型。根据所使用的JVM,有不同的参数可以启用GC日志记录。以下是为了启用GC日志记录而需要包含的参数:

SUN JVM :   -XX:+ PrintGCDetails   -XX:+ PrintGCDateStamps(它将打印时间和日期)   -verbose:GC   -Xloggc:/path/gc.log

注意 - -XX:+ PrintGCTimeStamps(它将以秒为单位打印JVM重启后的时间,而不是hh:mm:ss格式的时间戳。这有点难以解释,因此建议使用PrintGCDateStamps)

<强> JRockit的 -Xverbose -XverboseTimeStamp -Xverboselog:/path/gc.log

<强> IBMJ9 -verbose:GC

答案 3 :(得分:1)

您可能需要查看Java Flight Recorder,它可以以极低的开销为您提供完整的GC统计信息。您可以在应用程序运行时启动JFR录制。生成的输出文件将包含有关GC统计信息的详细信息。您必须使用Java Mission Control打开输出jfr文件。

答案 4 :(得分:0)

我曾经使用这些选项来分析Sun / OpenJDK JVM的GC性能:

#printétailsGC信息

-XX:+PrintGCDetails

#在GC事件中打印日期戳,以便将它们与应用程序问题相关联

-XX:+PrintGCDateStamps

#print HEAP Usage(GC之前,GC之后,Young Gen,Old Gen,......)。

-XX:+PrintHeapAtGC

#STW暂停期间的打印参考处理时间

-XX:+PrintReferenceGC

#打印由JVM制作的YoungGendécision。如果您没有为New Gen选项设置Young Gen的大小,则会很有帮助

-XX:+PrintAdaptiveSizePolicy

#add GC导致日志(System.gc,促销失败,并发模式失败,......)

-XX:+PrintGCCause

#添加促销失败的详细信息

-XX:+PrintPromotionFailure

#打印基于年龄填充Youn Gen的java对象的分布。有助于了解你的伊甸园和幸存者空间是否合适

-XX:+PrintTenuringDistribution