Java GC

Download Java GC

Post on 27-Aug-2014

2.849 views

Category:

Software

3 download

DESCRIPTION

Java GC - Java Developer Day 2014 @ Taiwan

TRANSCRIPT

  • Java GC Leon Chen Java Architect
  • (Leon Chen) Master of NTHU CS More than 15 years in Java/JEE, as programmer, architect, developer leader and consultant, in nance/telecom domain. Ericsson Oracle (WT Microelectronics) 2
  • TW Patent 182927, , 2003, , TW Patent 206819, , 2004, , , US Patent 7,617,174, Method and system for automaRc service composiRon, 2009, Leon Chen, Wei-Tek Hsu, Peng-Hsiang Hung 3
  • Garbage CollecRon 4 Tune GC ?
  • Performance Impact of GC 5 Java SE 6 HotSpot[tm] Virtual Machine Garbage CollecRon Tuning h[p://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html 0.6 0.2 8 32
  • ? 6
  • Java Memory Management 7
  • Java Memory Management 8 h[ps://www.youtube.com/watch?v=450maTzSIvA
  • Tracing GC Example 9
  • Tracing GC Example 10
  • Tracing GC Example 11
  • Tracing GC Example 12
  • Tracing GC Example 13
  • Tracing GC Example 14
  • JAVA HEAP STRUCTURE AND GC 15
  • Hotspot JVM Heap Layout 16 Young Old (Tenured) Permanent Eden From To Survivor Spaces NaRve -Xms -Xmx -XX:PermSize -XX:MaxPermSize NO
  • GC Fundamentals Garbage DistribuRon Objects die young 17
  • 18 GC Fundamentals Garbage DistribuRon Objects die young
  • Minor GC (Young GeneraRon GC) 19 Young Old Eden From To Survivor Spaces
  • Minor GC (Young GeneraRon GC) 20 Young Old Eden From To Survivor Spaces !" !" !"!" !" !" !"
  • Minor GC (Young GeneraRon GC) 21 Young Old Eden From To Survivor Spaces 1 1 1
  • Minor GC (Young GeneraRon GC) 22 Young Old Eden To From Survivor Spaces 1 1 1
  • Minor GC (Young GeneraRon GC) 23 !" Young Old Eden To From Survivor Spaces !" !" !" !" !" !" !" 1 !" 1 1 1
  • Minor GC (Young GeneraRon GC) 24 Young Old Eden To From Survivor Spaces 1 2 1 2
  • Minor GC (Young GeneraRon GC) 25 Young Old Eden From To Survivor Spaces 1 2 1 2
  • Minor GC (Young GeneraRon GC) 26 Young Old Eden From To Survivor Spaces 16 1 16 2 !" !" !" !" !" !" !" !" 16 16 Promo
  • Minor GC (Young GeneraRon GC) 27 Young Old Eden To From Survivor Spaces 17 17 1 2 1 3
  • Major GC (Old GeneraRon GC, Full GC) 28 Young Old Eden To From Survivor Spaces
  • Major GC (Old GeneraRon GC, Full GC) 29 Young Old Eden To From Survivor Spaces !" !" !"!" !"
  • Major GC (Old GeneraRon GC, Full GC) 30 Young Old Eden To From Survivor Spaces Compact
  • Tuning Guideline heap size Major GC Minor GC Major GC 31
  • HOTSPOT GC TUNING 32
  • 33 GC Performance Performance GC !!!
  • Performance Tuning Methodology 34 Advanced JVM Tuning; Java One 2011; David Keenan, Monica Beckwith
  • GC Logging in ProducRon Dont be afraid to enable GC logging in producRon Very helpful when diagnosing producRon issues Extremely low / non-existent overhead Maybe some large les in your le system. We are surprised that customers are sRll afraid to enable it 35
  • 36 If Someone doesnt enable GC logging in producEon I shoot them!
  • Most Important GC Logging Parameters You need at least: -XX:+PrintGCDetails -XX:+PrintGCTimeStamps Add -XX:+PrintGCDateStamps if you must know the Rme Also useful -Xloggc: Rotate GC Log, Aqer Java 1.6_34 (or 1.7_2): -XX:+UseGCLogFileRotaRon -XX:NumberOfGCLogFiles=5 -XX:GCLogFileSize=10M 37
  • GCViewer Oine analysis of GC logs h[ps://github.com/chewiebug/GCViewer 38
  • GCViewer Memory Leak Pa[ern 39
  • Footprint (Heap Size) Latencies Throughput
  • Footprint (Heap Size) Latencies Throughput
  • Hotspot Tuning - Sizing Heap Young GeneraRon size determines Frequency of minor GC Number of objects reclaimed in minor GC Old GeneraRon Size Should hold applicaRon's steady-state live data size Try to minimize frequency of major GCs JVM footprint should not exceed physical memory Max of 80-90% RAM (leave room for OS) Thumb Rule: Try to maximize objects reclaimed in young gen. Minimize Full GC frequency 42
  • Calculate Live Data Size (LDS) full GC , heap size Make sure you get full GCs during steady-state Induce a couple if necessary JConsole / VisualVM jmap -histo:live System.gc Remove it before deployment. :-) 43
  • Calculate Live Data Size GC log example: 44
  • Calculate Live Data Size by GCViewer 45
  • IniRal Heap ConguraRon Rule of thumb Set -Xms and -Xmx to 3x to 4x LDS Set both -XX:PermSize and -XX:MaxPermSize to around 1.2x to 1.5x the max perm gen size Set the generaRon sizes accordingly Young gen should be around 1x to 1.5x LDS Old gen should be around 2x to 3x LDS e.g., young gen should be around 1/3-1/4 of the heap size 46
  • Hotspot JVM Heap Layout 47 Young Xmn768m Old (Tenured) Permanent NaRve -Xms2g Xmx2g -XX:PermSize -XX:MaxPermSize For LDS of 512m : -Xmn768m -Xms2g -Xmx2g
  • 48 Footprint (Heap Size) Latencies Throughput
  • High Throughput vs. Low Latency 49 High Throughput Low Latency App Thread GC Thread Stop the world Total Cost
  • High Throughput vs. Low Latency For most applicaRons, GC overhead is small 2% 5% High Throughput GCs Move most work to GC pauses ApplicaRon threads do as li[le as possible Least overall GC overhead Low Latency (Pause) GCs Move work out of GC pauses ApplicaRon threads do more work Bookkeeping for GC more expensive More overall GC overhead 50
  • ApplicaRon Requirement Dierent applicaRons have dierent requirements Higher Throughput: Batch processing Web applicaRon: pauses during garbage collecRon may be tolerable, or simply obscured by network latencies Lower Latencies: InteracRve graphics applicaRon 51
  • HotSpot Garbage Collectors in Java SE 6 52 G1 -XX:+UseSerialGC -XX:+UseConcMarkSweepGC -XX:+UseParallelOldGC -XX:+UseParallelGC -XX:+UseParNewGC
  • HotSpot Garbage Collectors in Java SE 6 53 G1 -XX:+UseSerialGC -XX:+UseConcMarkSweepGC -XX:+UseParallelOldGC -XX:+UseParallelGC -XX:+UseParNewGC
  • Serial Collector 54 App Thread GC Thread stop-the-world pause Serial Collector
  • HotSpot Garbage Collectors in Java SE 6 55 G1 -XX:+UseSerialGC -XX:+UseConcMarkSweepGC -XX:+UseParallelOldGC -XX:+UseParallelGC -XX:+UseParNewGC
  • Serial VS Parallel Collector 56 App Thread GC Thread stop-the-world pause Serial Collector Parallel Collector
  • HotSpot Garbage Collectors in Java SE 6 57 G1 -XX:+UseSerialGC -XX:+UseConcMarkSweepGC -XX:+UseParallelOldGC -XX:+UseParallelGC -XX:+UseParNewGC
  • CMS Collector 58 App Thread GC Thread iniRal mark concurrent marking remark concurrent sweeping
  • CMS Collector with ParNewGC 59 App Thread GC Thread
  • GC SuggesRons 60 Low Latency Collectors Throughput Collectors GeneraRon Young Old 2+ CPUs -XX:+UseParNewGC 2+ CPUs -XX:+UseParallelGC -XX: +UseConcMarkSweepGC -XX:+UseParallelOldGC New G1 Collector as of WLS10.3.1/JDK 6 Update 14
  • NEXT GENERATION GC
  • Problems of Current GC Memory is cheaper and cheaper 64 bits JVM We can use very large heap! Young Old How to handle large heap size?
  • G1 Collector The Garbage-First Collector Since JDK 6u14, ocially supported as of JDK 7u4 -XX:+UseG1GC Future CMS Replacement Server Style low latency collector Parallel Concurrent GeneraRonal Good Throughput CompacRng Improved ease-of-use Predictable (Soq Real-Time) 63
  • G1 Heap Layout 64 S S Old Eden S Survivor Free Region Type
  • CMS vs G1 Collectors 65 Heap split into regions Young generaRon (A set of regions) Old generaRon (A set of regions)
  • G1 Collector: Parallelism & Concurrency 66 App Thread GC Thread
  • GC Comparison 67
  • GC Comparison 68
  • GC Comparison 69
  • GC Comparison 70 h[p://blog.mgm-tp.com/2013/03/garbage-collecRon-tuning/
  • G1? Large heaps Typically ~6GB or larger heaps ApplicaRons that needs low pauses 71
  • G1? G1compuRng resources memory No large heaps Typically smaller than 6GB ApplicaRons that dont need low pauses 72
  • SUMMARIZE
  • Summarize Professional developer variables, objects life cycle, objects GC will hurt system performance Must monitor GC acRviRes Must enable GC logging
  • Tuning Procedures Observer LDS to decide iniRal size se~ng Use parallel GC rst If the GC pause Rme cant be accepted, then trying to use CMS If heap is over 6G, and look for lower down pause Rme, you can consider G1 Monitoring -> Analyzing -> Tuning -> Monitoring -> 75
  • REFERENCES 76
  • References Step-by-Step: Garbage CollecRon Tuning in the Java HotSpot Virtual Machine JavaOne 2010 The Garbage CollecRon Mythbusters JavaOne 2010 GC Tuning for the HotSpot JVM JavaOne 2009 uPortal Performance OpRmizaRon. Faizan Ahmed. Architect and Engineering Group. Enterprise Systems & Services. RUTGERS. faizan@rutgers.edu. h[p://java.sun.com/javase/technologies/hotspot/gc/ gc_tuning_6.html
  • Java Performance Charlie Hunt, Binu John HotSpot GC Tuning Guide for Java SE 6 h[p://www.oracle.com/technetwork/java/javase/gc- tuning-6-140523.html Memory Management in the Java HotSpot VM h[p://www.oracle.com/technetwork/java/javase/ memorymanagement-whitepaper-150215.pdf Java 6 Performance Whitepaper h]p://java.sun.com/performance/reference/whitepapers/6_performance.html 78
  • Q&A 79
  • Parallel Concurrent (CMS) G1