我在java应用程序中使用cms gc。当我在GC log中看到以下行时,我感到困惑。这些是
- 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),[CMS Perm:9947K-> 9942K(16384K)],0.0693460秒] [时间:用户= 0.06 sys = 0.02,
真实= 0.07秒]
- 2017-02-21T08:27:14.733 + 0000:27091.537:[GC [1 CMS-initial-mark:
699151K(1398144K)] 716604K(2027264K),0.0117710秒] [时间:
user = 0.01 sys = 0.00,real = 0.02 secs]
- 2017-02-21T08:27:14.745 + 0000:27091.549:[CMS-concurrent-mark-start]
- 2017-02-21T08:27:14.784 + 0000:27091.588:[CMS-concurrent-mark:
0.039 / 0.039秒] [时间:用户= 0.21 sys = 0.01,实际= 0.03秒]
- 2017-02-21T08:27:14.784 + 0000:27091.588:
[CMS-并发预清洗开始]
- 2017-02-21T08:27:14.787 + 0000:27091.591:[CMS-concurrent-preclean:
0.003 / 0.003秒] [时间:用户= 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.076 secs] [时间:
user = 6.44 sys = 0.35,real = 5.07 secs]
- 2017-02-21T08:27:19.864 + 0000:27096.668:[GC [YG占用率:217654 K]
(629120 K)] 2017-02-21T08:27:19.864 + 0000:27096.668:[重新扫描
(平行),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] [次:
user = 0.42 sys = 0.00,real = 0.03 secs]
- 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秒] [时间:用户= 1.48 sys = 0.08,真实= 1.13秒]
- 2017-02-21T08:27:21.014 + 0000:27097.818:[CMS-concurrent-reset-start]
这里主要的gc(mark-remark)只是清理旧内存,没有压缩和Full gc正在进行清理和紧凑的终身内存吗?
然后,我看到一篇文章说Full gc意味着要清理年轻一代和老一代。但是,Log只显示旧内存和堆内存细节。
谢谢(抱歉,如果有任何语法错误)