2017-03-22 43 views
0

我在Java中使用application.I CMS GC弄糊塗是完整的GC

  • 2017-02-21T00:55:45.882 + 0000: 2.686:[完整的 GC2017-02-21T00:55:45.882 + 0000:2.687:[CMS:0K-> 7878K(1398144K), 0.0691810秒] 111848K-> 7878K(2027264K),[CMSPerm:9947K-> 9942K (16384K)],0.0693460秒] [時間:用戶= 0.06 sys = 0.02, 實際= 0.07秒]
  • 2017-02-21T08:27:14.733 + 0000:27091.537:[GC [1 CMS-初始標記: 699151K(1398144K)] 716604K(2027264K),0.0117710秒] [次數: 用戶= 0.01 SYS = 0.00,真= 0.02秒]
  • 2017-02-21T08:27:14.745 + 0000:27091.549:[CMS-併發標記開始]
  • 2017-02-21T08:27: 14.784 + 0000:27091.588:[CMS-concurrent-mark: 0.039/0.039 secs] [Times:user = 0.21 sys = 0.01,real = 0.03 secs]
  • 2017-02-21T08:27:14.784 + 0000:27091.588 : [CMS-concurrent-preclean-start]
  • 2017-02-21T08:27:14.787 + 0000:27091.591:[CMS-concurrent-preclean: 0.003/0.003 secs] [Times:user = 0.01 sys = 0.00 ,實際= 0.01秒]
  • 2017-02-21T08:27:14.787 + 0000: 27091.592: [CMS-concurrent-abortable-preclean-start] CMS:由於 時間2017-02-21T08:27:19.863 + 0000:27096.668: [CMS-concurrent-abortable-preclean:5.070/5.076secs ] [時間: user = 6.44 sys = 0.35,real = 5.07秒]
  • 2017-02-21T08:27:19.864 + 0000:27096.668:[GC [YG佔有率:217654 K (629120 K)] 2017- 02-21T08:27:19.864 + 0000:27096.668:[Rescan (平行),0.0268070秒] 2017-02-21T08:27:19.891 + 0000:27096.695: [弱參考處理,0.0005040秒] 2017-02-21T08 :27:19.891 + 0000: 27096.696:[scrub string table,0.0005510 secs] [1 CMS-remark:699151K(1398144K)] 916806K(2027264K),0.0281100 secs] [Times: user = 0.42 sys = 0.00,實際= 0.03秒]
  • 2017-02-21T08:27:19.892 + 0000:27096.696:[CMS-concurrent-sweep-start]
  • 2017-02-21T08:27:21.014 + 0000:27097.818 :[CMS-concurrent-sweep: 1.121/1.122 secs] [Times:user = 1.48 sys = 0.08,real = 1.13 secs]
  • 2017-02-21T08:27:21.014 + 0000:27097.818:[CMS-concurrent -reset-start]

這裏主要的gc(mark-remark)只是在清理舊內存,沒有壓縮和Full gc正在做清理和緊湊型的固定內存嗎?

然後,我看到一篇文章說,Full gc意味着清潔年輕一代和老一代。但是,Log僅顯示舊內存和堆內存細節。

感謝(抱歉,如果任何語法錯誤)

回答

0

在CMS完整的GC將所有活動對象到老空間。 Full GC後,年輕的空間將永遠是空的。

其他GC的行爲不同。即如果活體對象數量大於舊空間容量,則ParallOldGC將填充年輕空間。