Minor GC
ä»å¹´è½»ä»£ç©ºé´ï¼å
æ¬ Eden å Survivor åºåï¼åæ¶å
å被称为 Minor GCãè¿ä¸å®ä¹æ¢æ¸
æ°åæäºç解ãä½æ¯ï¼å½åçMinor GCäºä»¶çæ¶åï¼æä¸äºæ趣çå°æ¹éè¦æ³¨æå°ï¼
å½ JVM æ æ³ä¸ºä¸ä¸ªæ°ç对象åé
空é´æ¶ä¼è§¦å Minor GCï¼æ¯å¦å½ Eden åºæ»¡äºãæ以åé
çè¶é«ï¼è¶é¢ç¹æ§è¡ Minor GCã
å
åæ± è¢«å¡«æ»¡çæ¶åï¼å
¶ä¸çå
容å
¨é¨ä¼è¢«å¤å¶ï¼æéä¼ä»0å¼å§è·è¸ªç©ºé²å
åãEden å Survivor
åºè¿è¡äºæ è®°åå¤å¶æä½ï¼å代äºç»å
¸çæ è®°ãæ«æãå缩ãæ¸
çæä½ãæ以 Eden å Survivor
åºä¸åå¨å
åç¢çãåæéæ»æ¯åçå¨æ使ç¨å
åæ± ç顶é¨ã
æ§è¡ Minor GC æä½æ¶ï¼ä¸ä¼å½±åå°æ°¸ä¹
代ãä»æ°¸ä¹
代å°å¹´è½»ä»£çå¼ç¨è¢«å½æ GC rootsï¼ä»å¹´è½»ä»£å°æ°¸ä¹
代çå¼ç¨å¨æ è®°é¶æ®µè¢«ç´æ¥å¿½ç¥æã
è´¨ç常è§ç认ç¥ï¼ææç Minor GC é½ä¼è§¦åâå
¨ä¸ççæåï¼stop-the-worldï¼âï¼åæ¢åºç¨ç¨åºç线ç¨ã对äºå¤§é¨ååºç¨ç¨åºï¼å顿导è´ç延è¿é½æ¯å¯ä»¥å¿½ç¥ä¸è®¡çãå
¶ä¸ççç¸å°±
æ¯ï¼å¤§é¨å Eden åºä¸ç对象é½è½è¢«è®¤ä¸ºæ¯åå¾ï¼æ°¸è¿ä¹ä¸ä¼è¢«å¤å¶å° Survivor åºæè
è年代空é´ãå¦ææ£å¥½ç¸åï¼Eden
åºå¤§é¨åæ°ç对象ä¸ç¬¦å GC æ¡ä»¶ï¼Minor GC æ§è¡æ¶æåçæ¶é´å°ä¼é¿å¾å¤ã
æ以 Minor GC çæ
åµå°±ç¸å½æ¸
æ¥äºââæ¯æ¬¡ Minor GC ä¼æ¸
ç年轻代çå
åã
Major GC vs Full GC
大家åºè¯¥æ³¨æå°ï¼ç®åï¼è¿äºæ¯è¯æ 论æ¯å¨ JVM è§èè¿æ¯å¨åå¾æ¶éç 究论æä¸é½æ²¡ææ£å¼çå®ä¹ãä½æ¯æ们ä¸çå°±ç¥éè¿äºå¨æ们已ç»ç¥éçåºç¡ä¹ä¸ååºçå®ä¹æ¯æ£ç¡®çï¼Minor GC æ¸
ç年轻带å
ååºè¯¥è¢«è®¾è®¡å¾ç®åï¼
Major GC æ¯æ¸
çè年代ã
Full GC æ¯æ¸
çæ´ä¸ªå 空é´âå
æ¬å¹´è½»ä»£åè年代ã
å¾ä¸å¹¸ï¼å®é
ä¸å®è¿æç¹å¤æä¸ä»¤äººå°æãé¦å
ï¼è®¸å¤ Major GC æ¯ç± Minor GC 触åçï¼æ以å¾å¤æ
åµä¸å°è¿ä¸¤ç§ GC å离æ¯ä¸å¤ªå¯è½çãå¦ä¸æ¹é¢ï¼è®¸å¤ç°ä»£åå¾æ¶éæºå¶ä¼æ¸
çé¨åæ°¸ä¹
代空é´ï¼æ以使ç¨âcleaningâä¸è¯åªæ¯é¨åæ£ç¡®ã
è¿ä½¿å¾æ们ä¸ç¨å»å
³å¿å°åºæ¯å« Major GC è¿æ¯ Full GCï¼å¤§å®¶åºè¯¥å
³æ³¨å½åç GC æ¯å¦åæ¢äºææåºç¨ç¨åºç线ç¨ï¼è¿æ¯è½å¤å¹¶åçå¤çèä¸ç¨åæåºç¨ç¨åºç线ç¨ã
è¿ç§æ··ä¹±çè³å
ç½®å° JVM æ åå·¥å
·ãä¸é¢ä¸ä¸ªä¾åå¾å¥½ç解éäºæçææã让æ们æ¯è¾ä¸¤ä¸ªä¸åçå·¥å
· Concurrent Mark å Sweep collector (-XX:+UseConcMarkSweepGC)å¨ JVM ä¸è¿è¡æ¶è¾åºçè·è¸ªè®°å½ã
第ä¸æ¬¡å°è¯éè¿ jstat è¾åºï¼
my-precious: me$ jstat -gc -t 4235 1s
Time S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT
5.7 34048.0 34048.0 0.0 34048.0 272640.0 194699.7 1756416.0 181419.9 18304.0 17865.1 2688.0 2497.6 3 0.275 0 0.000 0.275
6.7 34048.0 34048.0 34048.0 0.0 272640.0 247555.4 1756416.0 263447.9 18816.0 18123.3 2688.0 2523.1 4 0.359 0 0.000 0.359
7.7 34048.0 34048.0 0.0 34048.0 272640.0 257729.3 1756416.0 345109.8 19072.0 18396.6 2688.0 2550.3 5 0.451 0 0.000 0.451
8.7 34048.0 34048.0 34048.0 34048.0 272640.0 272640.0 1756416.0 444982.5 19456.0 18681.3 2816.0 2575.8 7 0.550 0 0.000 0.550
9.7 34048.0 34048.0 34046.7 0.0 272640.0 16777.0 1756416.0 587906.3 20096.0 19235.1 2944.0 2631.8 8 0.720 0 0.000 0.720
10.7 34048.0 34048.0 0.0 34046.2 272640.0 80171.6 1756416.0 664913.4 20352.0 19495.9 2944.0 2657.4 9 0.810 0 0.000 0.810
11.7 34048.0 34048.0 34048.0 0.0 272640.0 129480.8 1756416.0 745100.2 20608.0 19704.5 2944.0 2678.4 10 0.896 0 0.000 0.896
12.7 34048.0 34048.0 0.0 34046.6 272640.0 164070.7 1756416.0 822073.7 20992.0 19937.1 3072.0 2702.8 11 0.978 0 0.000 0.978
13.7 34048.0 34048.0 34048.0 0.0 272640.0 211949.9 1756416.0 897364.4 21248.0 20179.6 3072.0 2728.1 12 1.087 1 0.004 1.091
14.7 34048.0 34048.0 0.0 34047.1 272640.0 245801.5 1756416.0 597362.6 21504.0 20390.6 3072.0 2750.3 13 1.183 2 0.050 1.233
15.7 34048.0 34048.0 0.0 34048.0 272640.0 21474.1 1756416.0 757347.0 22012.0 20792.0 3200.0 2791.0 15 1.336 2 0.050 1.386
16.7 34048.0 34048.0 34047.0 0.0 272640.0 48378.0 1756416.0 838594.4 22268.0 21003.5 3200.0 2813.2 16 1.433 2 0.050 1.484
è¿ä¸ªçæ®µæ¯ JVM å¯å¨å第17ç§æåçãåºäºè¯¥ä¿¡æ¯ï¼æ们å¯ä»¥å¾åºè¿æ ·çç»æï¼è¿è¡äº12次 Minor GCã2次 Full GCï¼æ¶é´æ»è·¨åº¦ä¸º50毫ç§ãéè¿ jconsole æè
jvisualvm è¿æ ·çåºäºGUIçå·¥å
·ä½ è½å¾å°åæ ·çç»æã
java -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC eu.plumbr.demo.GarbageProducer
3.157: [GC (Allocation Failure) 3.157: [ParNew: 272640K->34048K(306688K), 0.0844702 secs] 272640K->69574K(2063104K), 0.0845560 secs] [Times: user=0.23 sys=0.03, real=0.09 secs]
4.092: [GC (Allocation Failure) 4.092: [ParNew: 306688K->34048K(306688K), 0.1013723 secs] 342214K->136584K(2063104K), 0.1014307 secs] [Times: user=0.25 sys=0.05, real=0.10 secs]
... cut for brevity ...
11.292: [GC (Allocation Failure) 11.292: [ParNew: 306686K->34048K(306688K), 0.0857219 secs] 971599K->779148K(2063104K), 0.0857875 secs] [Times: user=0.26 sys=0.04, real=0.09 secs]
12.140: [GC (Allocation Failure) 12.140: [ParNew: 306688K->34046K(306688K), 0.0821774 secs] 1051788K->856120K(2063104K), 0.0822400 secs] [Times: user=0.25 sys=0.03, real=0.08 secs]
12.989: [GC (Allocation Failure) 12.989: [ParNew: 306686K->34048K(306688K), 0.1086667 secs] 1128760K->931412K(2063104K), 0.1087416 secs] [Times: user=0.24 sys=0.04, real=0.11 secs]
13.098: [GC (CMS Initial Mark) [1 CMS-initial-mark: 897364K(1756416K)] 936667K(2063104K), 0.0041705 secs] [Times: user=0.02 sys=0.00, real=0.00 secs]
13.102: [CMS-concurrent-mark-start]
13.341: [CMS-concurrent-mark: 0.238/0.238 secs] [Times: user=0.36 sys=0.01, real=0.24 secs]
13.341: [CMS-concurrent-preclean-start]
13.350: [CMS-concurrent-preclean: 0.009/0.009 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
13.350: [CMS-concurrent-abortable-preclean-start]
13.878: [GC (Allocation Failure) 13.878: [ParNew: 306688K->34047K(306688K), 0.0960456 secs] 1204052K->1010638K(2063104K), 0.0961542 secs] [Times: user=0.29 sys=0.04, real=0.09 secs]
14.366: [CMS-concurrent-abortable-preclean: 0.917/1.016 secs] [Times: user=2.22 sys=0.07, real=1.01 secs]
14.366: [GC (CMS Final Remark) [YG occupancy: 182593 K (306688 K)]14.366: [Rescan (parallel) , 0.0291598 secs]14.395: [weak refs processing, 0.0000232 secs]14.395: [class unloading, 0.0117661 secs]14.407: [scrub symbol table, 0.0015323 secs]14.409: [scrub string table, 0.0003221 secs][1 CMS-remark: 976591K(1756416K)] 1159184K(2063104K), 0.0462010 secs] [Times: user=0.14 sys=0.00, real=0.05 secs]
14.412: [CMS-concurrent-sweep-start]
14.633: [CMS-concurrent-sweep: 0.221/0.221 secs] [Times: user=0.37 sys=0.00, real=0.22 secs]
14.633: [CMS-concurrent-reset-start]
14.636: [CMS-concurrent-reset: 0.002/0.002 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
å¨ç¹å¤´åæè¿ä¸ªç»è®ºä¹åï¼è®©æ们ççæ¥èªåä¸ä¸ª JVM å¯å¨æ¶éçåå¾æ¶éæ¥å¿çè¾åºãæ¾ç¶- XX ï¼ + PrintGCDetails åè¯æ们ä¸ä¸ªä¸åä¸æ´è¯¦ç»çæ
äºï¼
åºäºè¿äºä¿¡æ¯ï¼æ们å¯ä»¥çå°12次 Minor GC åå¼å§æäºåä¸é¢ä¸ä¸æ ·äºã没æè¿è¡ä¸¤æ¬¡ Full GCï¼è¿ä¸åçå°æ¹å¨äºå个 GC å¨æ°¸ä¹
代ä¸ä¸åé¶æ®µè¿è¡äºä¸¤æ¬¡ï¼
æåçæ è®°é¶æ®µï¼ç¨äº0.0041705ç§ä¹å°±æ¯4mså·¦å³ãè¿ä¸ªé¶æ®µä¼æåâå
¨ä¸çï¼ stop-the-worldï¼âçäºä»¶ï¼åæ¢ææåºç¨ç¨åºç线ç¨ï¼ç¶åå¼å§æ è®°ã
并è¡æ§è¡æ è®°åæ¸
æ´é¶æ®µãè¿äºé½æ¯ååºç¨ç¨åºçº¿ç¨å¹¶è¡çã
æå Remark é¶æ®µï¼è±è´¹äº0.0462010ç§çº¦46msãè¿ä¸ªé¶æ®µä¼å次æåææçäºä»¶ã
并è¡æ§è¡æ¸
çæä½ãæ£å¦å
¶åï¼æ¤é¶æ®µä¹æ¯å¹¶è¡çï¼ä¸ä¼åæ¢å
¶ä»çº¿ç¨ã
æ以ï¼æ£å¦æ们ä»åå¾åæ¶æ¥å¿ä¸æçå°çé£æ ·ï¼å®é
ä¸åªæ¯æ§è¡äº Major GC å»æ¸
çè年代空é´èå·²ï¼èä¸æ¯æ§è¡äºä¸¤æ¬¡ Full GCã
å¦æä½ æ¯åæåå³ å®çè¯ï¼é£ä¹ç± jstat
æä¾çæ°æ®ä¼å¼å¯¼ä½ ååºæ£ç¡®çå³çãå®æ£ç¡®ååºç两个æåææäºä»¶çæ
åµï¼å¯¼è´ææ线ç¨åæ¢äºå
±è®¡50msãä½æ¯å¦æä½ è¯å¾ä¼åååéï¼ä½ ä¼è¢«è¯¯å¯¼çãæ¸
ååªååºäºåæ¶åå§æ è®°åæç» Remark é¶æ®µï¼jstatçè¾åºçä¸å°é£äºå¹¶åå®æçå·¥ä½ã
温馨提示:答案为网友推荐,仅供参考