Download presentation
Presentation is loading. Please wait.
Published byHilary Carpenter Modified over 9 years ago
1
Power your JVM with Effective Garbage Collection Tuning SiliconIndia Java Conference 29 th October, 2010 Vivekanand Jha
2
Its Science Measure>Understand>>Tune>>Measure>> Understand>>Retune ….
3
Agenda Some background on JVM GC Architecture Demystifying JVM tuning and GC tuning Reading the logs
7
Different GC schemes
9
GC in JDK 7 & other exotic GC algorithms G1 or Garbage first algorithm, the holy grail of Garbage collection? Pauseless garbage collection from Azul. Garbage collection with hard time guarantee in Sun’s premium product JAVA RTS
10
GC Tuning Tuning the Young Generation Tuning Parallel GC Tuning CMS Monitoring GC
11
Dream GC Low GC Overhead. ie. High Throughput Low GC pause times Space efficiency (Less fragmentation)
12
Wisdom droplets Supersize it Minimize live object for minor collections Size the Tenured generation to steady state space requirement WHEN IN DOUBT, SUPERSIZE IT!!
13
Unnecessary Information -Xmx : max heap size ● young generation + old generation > -Xms : initial heap size ● young generation + old generation > -Xmn : young generation size > Applications with emphasis on performance tend to set -Xms and -Xmx to the same value > When -Xms != -Xmx, heap growth or shrinking requires a Full GC
14
How to get your object profile in YG Monitor tenuring distribution with -XX:+PrintTenuringDistribution Desired survivor size 6684672 bytes, new threshold 8 (max 8) - age 1: 2315488 bytes, 2315488 total - age 2: 19528 bytes, 2335016 total - age 3: 96 bytes, 2335112 total - age 4: 32 bytes, 2335144 total
15
Importance of GC Threads
16
Challenges with the CMS
17
CMS-Too early [ParNew 390868K->296358K(773376K), 0.1882258 secs] [CMS-initial-mark 298458K(773376K), 0.0847541 secs] [ParNew 401318K->306863K(773376K), 0.1933159 secs] [CMS-concurrent-mark: 0.787/0.981 secs] [CMS-concurrent-preclean: 0.149/0.152 secs] [CMS-concurrent-abortable-preclean: 0.105/0.183 secs] [CMS-remark 374049K(773376K), 0.0353394 secs] [ParNew 407285K->312829K(773376K), 0.1969370 secs] [ParNew 405554K->311100K(773376K), 0.1922082 secs] [ParNew 404913K->310361K(773376K), 0.1909849 secs] [ParNew 406005K->311878K(773376K), 0.2012884 secs] [CMS-concurrent-sweep: 2.179/2.963 secs] [CMS-concurrent-reset: 0.010/0.010 secs] [ParNew 387767K->292925K(773376K), 0.1843175 secs] [CMS-initial-mark 295026K(773376K), 0.0865858 secs] [ParNew 397885K->303822K(773376K), 0.1995878 secs]
18
CMS-Too Late [ParNew 742993K->648506K(773376K), 0.1688876 secs] [ParNew 753466K->659042K(773376K), 0.1695921 secs] [CMS-initial-mark 661142K(773376K), 0.0861029 secs] [Full GC 645986K->234335K(655360K), 8.9112629 secs] [ParNew 339295K->247490K(773376K), 0.0230993 secs] [ParNew 352450K->259959K(773376K), 0.1933945 secs]
19
-XX:+ExplicitGCInvokesConcurrent Requires a post 6 JVM - XX:+ExplicitGCInvokesConcurrentAndUnl oadClasses
20
Monitoring GC You need at least: ● -XX:+PrintGCTimeStamps (Add -XX:+PrintGCDateStamps if you must) ● -XX:+PrintGCDetails Preferred over -verbosegc as it's more detailed > Also useful: ● -Xloggc: Separates GC logging output from application output
21
Its Art!
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.