GC日志 - VM操作事件 - 如何跟踪它们

时间:2016-01-14 12:10:57

标签: java garbage-collection jvm

我正在使用GCViewer检查一些GC日志。 (请查看下面的截图)

我得到了很多高暂停(红色矩形),似乎与“vm操作事件(应用程序停止...)”有关。这些似乎与常规GC和完整GC停止不同。

  • 如何知道触发停止事件的操作是哪些? (这是否有JVM标志?)

  • 它们与垃圾收集不同吗?至于GCViewer完全GC暂停+ GC暂停!=完全暂停

enter image description here

2 个答案:

答案 0 :(得分:3)

添加-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1将提供有关触发停止事件的操作的信息。

来自:this link

  

何时使用安全点?

     

以下是HotSpot JVM启动安全点的几个原因:

     
      
  • 垃圾收集暂停
  •   
  • Code deoptimization
  •   
  • 刷新代码缓存
  •   
  • 类重新定义(例如热插拔或仪表)
  •   
  • 偏向锁撤销
  •   
  • 各种调试操作(例如死锁检查或堆栈跟踪转储)
  •   

要将日志写入文件,它取决于您使用的是哪个VM版本。

适用于所有Java版本: Java 8 Docs

  

<强> -Xloggc:文件名

     

设置应将重定向的GC事件信息重定向到的文件以进行日志记录。写入此文件的信息类似于-verbose:gc的输出,其中包含自每个记录事件之前的第一个GC事件以来经过的时间。如果两者都使用相同的-Xloggc命令,则-verbose:gc选项会覆盖java

来自Java版本8:

  

<强> -XX:日志文件=路径

     

设置写入日志数据的路径和文件名。默认情况下,该文件在当前工作目录中创建,名为hotspot.log

答案 1 :(得分:0)

-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1添加到您的VM选项中,该选项应将有关非GC安全点的信息添加到日志中。

-XX:LogFile=/path/to/file -XX:+LogVMOutput用于记录到文件。