Garbage Collection for Dummies

4,895 views

Published on

Overview HotSpot Garbage Collection. GC fundamentals, the HotSpot garbage collectors and the start point of GC tuning.

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,895
On SlideShare
0
From Embeds
0
Number of Embeds
2,866
Actions
Shares
0
Downloads
82
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

Garbage Collection for Dummies

  1. 1. Garbage Collection for Dummies Overview HotSpot GC photo#1 Copyright © 2012 Akira Koyasu. Some rights reserved.
  2. 2. AgendaJVM & GC heap & GC fundamentalsCollectors in HotSpot JVM HotSpot Collectors explainedErgonomics & Tuning the start point of GC tuning 2 Copyright © 2012 Akira Koyasu. Some rights reserved.
  3. 3. JVM & GCheap in JVMGarbage Collectionstop the worldGenerational GC 3 Copyright © 2012 Akira Koyasu. Some rights reserved.
  4. 4. heap in JVMWhich objects are allocated in heap?public static void main(String[] args) { int i = 1234; long[] longs = new long[16]; String str = "Hello!!"; Simple s = new Simple();} 4 Copyright © 2012 Akira Koyasu. Some rights reserved.
  5. 5. javap -c 5 Copyright © 2012 Akira Koyasu. Some rights reserved.
  6. 6. javap -c$ javap -c study.gc.bootstrap.HeapCompiled from "Heap.java"public class study.gc.bootstrap.Heap { ... public static void main(java.lang.String[]); Code: 0: sipush 1234 3: istore_1 4: bipush 16 6: newarray long 8: astore_2 9: ldc #16 // String Hello!! 11: astore_3 12: new #18 // class study/gc/Simple 15: dup 16: invokespecial #20 // Method study/gc/Simple."<init>":()V 19: astore 4 21: return} 5 Copyright © 2012 Akira Koyasu. Some rights reserved.
  7. 7. Garbage Collection“Our resource is limited. So garbages should becollected and recycled as soon as possible” 6 Copyright © 2012 Akira Koyasu. Some rights reserved.
  8. 8. Dead or Alive at the end of each method, which objects are dead?void main() { sub();}void sub() { Greeter Greeter g = new Greeter(); Message msg; msg = new Message("Morning!"); Message g.doGreet(msg); msg = new Message("Hello!"); g.doGreet(msg); Message} 7 Copyright © 2012 Akira Koyasu. Some rights reserved.
  9. 9. Dead or AliveUnreferenced objects are dead reassignment scope out 8 Copyright © 2012 Akira Koyasu. Some rights reserved.
  10. 10. Fragment, Compaction, Allocation A B B B B C A 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  11. 11. Fragment, Compaction, Allocation fragment A B C A 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  12. 12. Fragment, Compaction, Allocation A B C A 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  13. 13. Fragment, Compaction, Allocation Compaction A B C A 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  14. 14. Fragment, Compaction, Allocation A B C A 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  15. 15. Fragment, Compaction, Allocation Allocation A B C A 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  16. 16. Fragment, Compaction, Allocation A B C A C 9 Copyright © 2012 Akira Koyasu. Some rights reserved.
  17. 17. Live object identification PostmanReference counting BagTraverse markingfrom root Message Message 10 Copyright © 2012 Akira Koyasu. Some rights reserved.
  18. 18. stop the world In traversing, Postmanthe Postman geta new message!! Bag Message Message 11 Copyright © 2012 Akira Koyasu. Some rights reserved.
  19. 19. stop the world In traversing, Postmanthe Postman geta new message!! Bag Message Message 11 Copyright © 2012 Akira Koyasu. Some rights reserved.
  20. 20. stop the world In traversing, Postmanthe Postman geta new message!! Bag Message Message Message 11 Copyright © 2012 Akira Koyasu. Some rights reserved.
  21. 21. Generational GCthe weak generational hypothesis: “Most objects die young”young -> frequently collectedold -> seldomly collected 12 Copyright © 2012 Akira Koyasu. Some rights reserved.
  22. 22. Partitioned into generations Eden AYoung { Survivor B C Old 13 Copyright © 2012 Akira Koyasu. Some rights reserved.
  23. 23. Collectors in HotSpot JVMthroughput & low-latency5 Collectors 14 Copyright © 2012 Akira Koyasu. Some rights reserved.
  24. 24. throughput & low-latencythroughput: more tasks in unit timelow-latency: fast response 15 Copyright © 2012 Akira Koyasu. Some rights reserved.
  25. 25. 5 collectorsSerial CollectorParallel CollectorParallel Compacting CollectorConcurrent Mark Sweep CollectorGarbage First Collctor (1.7_u4) 16 Copyright © 2012 Akira Koyasu. Some rights reserved.
  26. 26. Serial Collector for young generationcopying Eden From To Survivor Old 12 17 Copyright © 2012 Akira Koyasu. Some rights reserved.
  27. 27. Serial Collector for old generationmark-sweep 12 18 Copyright © 2012 Akira Koyasu. Some rights reserved.
  28. 28. Parallel Collector for young generation use a parallel version of the serial collector algorithm Parallel Serial CollectorCollector 19 Copyright © 2012 Akira Koyasu. Some rights reserved.
  29. 29. Parallel Compacting Collector for old generation R1 R2 R3 R4 R5 20 Copyright © 2012 Akira Koyasu. Some rights reserved.
  30. 30. Parallel Compacting Collector for old generation R1 R2 R3 R4 R5 T1 T2 20 Copyright © 2012 Akira Koyasu. Some rights reserved.
  31. 31. Parallel Compacting Collector for old generation R1 R2 R3 R4 R5 T1 T2 20 Copyright © 2012 Akira Koyasu. Some rights reserved.
  32. 32. Parallel Compacting Collector for old generation R1 R2 R3 R4 R5 T1 T2 20 Copyright © 2012 Akira Koyasu. Some rights reserved.
  33. 33. Parallel Compacting Collector for old generation R1 R2 R3 R4 R5 T1 T2 20 Copyright © 2012 Akira Koyasu. Some rights reserved.
  34. 34. Parallel Compacting Collector for old generation R1 R2 R3 R4 R5 T1 T2 20 Copyright © 2012 Akira Koyasu. Some rights reserved.
  35. 35. Concurrent Mark Sweep Collector for old generationnon-compactingPhases initial mark (STW) concurrent mark remark (STW) concurrent sweep 21 Copyright © 2012 Akira Koyasu. Some rights reserved.
  36. 36. Concurrent Mark Sweep Collector for old generation Postman Bag is updated inconcurrent marking phase Bagnew Message is marked Message in remark phase Message 22 Copyright © 2012 Akira Koyasu. Some rights reserved.
  37. 37. Concurrent Mark Sweep Collector for old generation Postman Bag is updated inconcurrent marking phase Bagnew Message is marked Message in remark phase Message 22 Copyright © 2012 Akira Koyasu. Some rights reserved.
  38. 38. Concurrent Mark Sweep Collector for old generation Postman Bag is updated inconcurrent marking phase Bagnew Message is marked Message in remark phase Message Message 22 Copyright © 2012 Akira Koyasu. Some rights reserved.
  39. 39. Concurrent Mark Sweep Collector for old generation Postman Bag is updated inconcurrent marking phase Bagnew Message is marked Message in remark phase Message Message 22 Copyright © 2012 Akira Koyasu. Some rights reserved.
  40. 40. Garbage First Collector for young & old generationheap is devided into Yregions Y Osome regions areyoung, Y Osome other regionsare old O O 23 Copyright © 2012 Akira Koyasu. Some rights reserved.
  41. 41. Garbage First Collector for young & old generation collection regions chosen based on time prediction(some garbages remain) 24 Copyright © 2012 Akira Koyasu. Some rights reserved.
  42. 42. Garbage First Collector for young & old generation collection regions chosen based on time prediction(some garbages remain) 24 Copyright © 2012 Akira Koyasu. Some rights reserved.
  43. 43. Garbage First Collector for young & old generation collection regions chosen based on time prediction(some garbages remain) 24 Copyright © 2012 Akira Koyasu. Some rights reserved.
  44. 44. select collector collector option Serial -XX:+UseSerialGC Parallel -XX:+UseParallelGCParallel Compacting -XX:+UseParallelOldGC CMS -XX:+UseConcMarkSweepGC G1 -XX:+UseG1GC 25 Copyright © 2012 Akira Koyasu. Some rights reserved.
  45. 45. Ergonomics & TuningErgonomicsJVM optionscommand line tools 26 Copyright © 2012 Akira Koyasu. Some rights reserved.
  46. 46. GC tuningthe first step to tune GC is to do nothing 27 Copyright © 2012 Akira Koyasu. Some rights reserved.
  47. 47. Ergonomics Behavior-based optionslatency: -XX:MaxGCPauseMillis=nthroughput: -XX:GCTimeRatio=99 28 Copyright © 2012 Akira Koyasu. Some rights reserved.
  48. 48. JVM options-Xmxn-Xmsn-XX:ParallelGCThreads=n-XX:+PrintFlagsFinal 29 Copyright © 2012 Akira Koyasu. Some rights reserved.
  49. 49. command line tools jps jstat jmap jhat 30 Copyright © 2012 Akira Koyasu. Some rights reserved.
  50. 50. jstat 31 Copyright © 2012 Akira Koyasu. Some rights reserved.
  51. 51. jstat$ jps -l23437 study.gc.bootstrap.Heap23489 sun.tools.jps.Jps$ jstat -gcutil -h20 23437 1s S0 S1 E O P YGC YGCT FGC FGCT GCT 50.00 0.00 94.64 0.56 12.63 32 0.054 0 0.000 0.054 0.00 0.00 12.08 0.56 12.63 35 0.054 0 0.000 0.054 50.00 0.00 0.00 0.56 12.63 38 0.090 0 0.000 0.090 0.00 0.00 0.00 0.56 12.63 40 0.092 0 0.000 0.092 0.00 25.00 74.50 0.56 12.63 41 0.092 0 0.000 0.092 0.00 0.00 22.15 0.56 12.63 43 0.093 0 0.000 0.093 0.00 25.00 10.07 0.56 12.63 45 0.093 0 0.000 0.093 0.00 25.00 0.00 0.56 12.63 47 0.094 0 0.000 0.094 0.00 25.00 0.00 0.56 12.63 49 0.096 0 0.000 0.096 0.00 0.00 24.16 0.56 12.63 51 0.098 0 0.000 0.098 0.00 0.00 42.28 0.56 12.63 53 0.099 0 0.000 0.099 0.00 0.00 44.29 0.56 12.63 55 0.100 0 0.000 0.100... 31 Copyright © 2012 Akira Koyasu. Some rights reserved.
  52. 52. jmap 32 Copyright © 2012 Akira Koyasu. Some rights reserved.
  53. 53. jmap$ jmap -histo:live 23437 num #instances #bytes class name---------------------------------------------- 1: 5822 797008 <methodKlass> 2: 5822 699712 <constMethodKlass> 3: 393 456488 <constantPoolKlass> 4: 360 286400 <constantPoolCacheKlass> 5: 393 283512 <instanceKlassKlass> 6: 1094 98656 [C 7: 511 97864 [B 8: 452 55128 java.lang.Class 9: 632 40536 [[I 10: 589 37440 [S...$ jmap -dump:live,format=b,file=heap.dump 23437Dumping heap to heap.dump ...Heap dump file created 32 Copyright © 2012 Akira Koyasu. Some rights reserved.
  54. 54. jhat 33 Copyright © 2012 Akira Koyasu. Some rights reserved.
  55. 55. jhat$ jhat heap.dumpReading from heap.dump...Dump file created Thu Dec 27 15:44:54Snapshot read, resolving...Resolving 5895 objects...Chasing references, expect 1 dots.Eliminating duplicate references.Snapshot resolved.Started HTTP server on port 7000Server is ready. 33 Copyright © 2012 Akira Koyasu. Some rights reserved.
  56. 56. jhat$ jhat heap.dumpReading from heap.dump...Dump file created Thu Dec 27 15:44:54Snapshot read, resolving...Resolving 5895 objects...Chasing references, expect 1 dots.Eliminating duplicate references.Snapshot resolved.Started HTTP server on port 7000Server is ready. 33 Copyright © 2012 Akira Koyasu. Some rights reserved.
  57. 57. ReferencesMemory Management in the Java HotSpot Virtual Machine (SunMicrosystems, April 2006)Garbage-First Garbage Collection (Sun Microsystems, October 2004)A Generational Mostly-concurrent Garbage Collector (SunMicrosystems, June 2000)Garbage-First Collector http://docs.oracle.com/javase/7/docs/technotes/guides/vm/G1.htmlParallel Compaction http://docs.oracle.com/javase/7/docs/technotes/guides/vm/par-compaction-6.htmlConcurrent Mark Sweep Collector Enhancements http://docs.oracle.com/javase/7/docs/technotes/guides/vm/cms-6.htmlStorage Management http://openjdk.java.net/groups/hotspot/docs/StorageManagement.html 34 Copyright © 2012 Akira Koyasu. Some rights reserved.
  58. 58. NotesThis work is licensed under theCreative Commons Attribution-NonCommercial 3.0 Unported License. Toview a copy of this license, visithttp://creativecommons.org/licenses/by-nc/3.0/.photo#1 http://www.flickr.com/photos/yto/5896836025/ 35 Copyright © 2012 Akira Koyasu. Some rights reserved.

×