簡體   English   中英

Java的mark-preclean-sweep-reset GC線的定義?

[英]Definition of Java's mark-preclean-sweep-reset GC lines?

有人可以在啟用CMS GC的Java運行時上提供一些有關以下verbosegc行的信息嗎? 特別:

  1. 29.490的事件是否表明高水位的堆積位置用於標記?
  2. 什么是preclean階段,它與標記有什么不同?
  3. 什么是reset階段? 如果不僅僅是掃描的結束,為什么需要時間來完成?
  4. 最后,什么是Rescangreyroot重新掃描和remark區域和29.653事件的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]

謝謝,

閱讀Sun網站上的“了解並發標記掃描垃圾收集器日志”一文。 我認為這回答了大部分關於日志的問題。 有關Java的Concurrent GC的更多背景信息,請參閱“Java SE 6 HotSpot [tm]虛擬機垃圾收集調整”頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM