我在Java应用程序中使用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 ),[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初始标记: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并发标记:0.039 / 0.039秒] [时间:用户= 0.21 sys = 0.01,真实= 0.03秒]
- 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秒] [时间:用户= 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秒] [时间:用户= 6.44 sys = 0.35,实际= 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:[重新扫描(平行),0.0268070秒] 2017-02-21T08:27:19.891 + 0000:27096.695:[弱引用处理,0.0005040秒] 2017-02-21T08:27:19.891 + 0000:27096.696:[清理字符串表,0.0005510秒] [1 CMS备注: 699151K(1398144K)] 916806K(2027264K),0.0281100秒] [时间:用户= 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] [时间:用户= 1.48 sys = 0.08,真实= 1.13秒]
- 2017-02-21T08:27:21.014 + 0000:27097.818:[CMS-并发重置开始]
在这里,主要的gc(mark-remark)只清理旧的内存,不进行压缩,而Full gc的清理和压缩使用权的内存对吗?
然后,我看到一篇文章说Full gc意味着同时清洗年轻一代和老一代。但是,Log仅显示旧内存和堆内存详细信息。
谢谢(对不起,如果有语法错误)