代码之家  ›  专栏  ›  技术社区  ›  Jé Queue

Java的标记预清理扫描重置GC行的定义?

  •  3
  • Jé Queue  · 技术社区  · 15 年前

    是否有人可以在启用CMS GC的Java运行时提供以下verbosegc行的一些细节?明确地:

    1. 这项活动在哪里举行 29.490 指示用于标记的高水位堆位置?
    2. 问题是什么 preclean
    3. 问题是什么 reset 阶段?如果这不仅仅是扫荡的结束,为什么还要花时间来完成呢?
    4. Rescan , grey root remark 活动的区域和指标 29.653 ? 我们是否应该假设这些只是后续扫描的报告堆度量?如果是这样,他们为什么要浪费时间?

    verbosegc日志摘录:

    29.490: [GC [1 CMS-initial-mark: 16225K(17684K)] 16737K(22420K), 0.0030839 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
    29.494: [CMS-concurrent-mark-start]
    29.652: [CMS-concurrent-mark: 0.158/0.158 secs] [Times: user=0.16 sys=0.00, real=0.16 secs]
    29.652: [CMS-concurrent-preclean-start]
    29.652: [CMS-concurrent-preclean: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
    29.653: [GC[YG occupancy: 512 K (4736 K)]29.653: [Rescan (non-parallel) 29.654: [grey object rescan, 0.0001517 secs]29.654: [root rescan, 0.0030887 secs], 0.0033817 secs]29.657: [weak refs processing, 0.0000271 secs] [1 CMS-remark: 16225K(17684K)] 16737K(22420K), 0.0035183 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
    29.658: [CMS-concurrent-sweep-start]
    29.679: [CMS-concurrent-sweep: 0.022/0.022 secs] [Times: user=0.03 sys=0.00, real=0.03 secs]
    29.680: [CMS-concurrent-reset-start]
    29.703: [CMS-concurrent-reset: 0.022/0.022 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
    29.797: [GC 29.797: [DefNew: 4736K->512K(4736K), 0.0207183 secs] 20800K->17172K(31512K), 0.0209119 secs] [Times: user=0.01 sys=0.02, real=0.03 secs]
    

    1 回复  |  直到 15 年前
        1
  •  2
  •   Adam Lear    13 年前

    阅读 "Understanding Concurrent Mark Sweep Garbage Collector Logs" 太阳报网站上的文章。我想这回答了你关于日志的大部分问题。有关Java并发GC的更多背景信息,请参阅 "Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning"