Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JVM GCs and why should I care?
Search
Maciej Biłas
June 28, 2013
Technology
88
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JVM GCs and why should I care?
Very brief introduction into JVM GC tuning given at a SoftwareMill tech talk.
Maciej Biłas
June 28, 2013
More Decks by Maciej Biłas
See All by Maciej Biłas
akka-cluster-etcd
maciejb
0
270
Testing with Docker
maciejb
1
120
ArchieML
maciejb
0
160
I code for Warsaw
maciejb
0
220
Warsaw JUG: Listen to the sounds of your application
maciejb
0
160
Poznań JUG: Listen to the sounds of your application
maciejb
0
89
Other Decks in Technology
See All in Technology
Lambda MicroVMsは常駐サーバーの代わりに なるか? Kiro Crew を動かして検証してみた / Kiro Crew on Lambda MicroVMs
k_adachi_01
2
350
DAMOS - The Smart Cruise Control for RAM
ennael
PRO
1
110
組み立てて楽しむ AWS Blocks 入門
kmiya84377
0
150
オブザーバビリティを高める AI エージェント体験を考える / Designing AI Agent Experiences That Enhance Observability
aoto
PRO
2
230
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
16
120k
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
100
データ品質を壊しながらSnowflakeのAIに分析させてみた
kawanago
0
440
並行性の問題を防げ!実践トランザクション入門
occhi
0
240
1万名の社員が使う認証基盤で どう信頼性を担保するか?
kairim0
0
180
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
6
2k
Argo CDとAtlantisで実現するインフラ管理のセルフサービス化──小規模SREチームで支えるプラットフォーム
cassius7
0
280
2026-10-01_MagicPod_QAハーネスエンジニアリングとQA組織の未来像
ynisqa1988
1
460
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
730
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
440
Prompt Engineering for Job Search
mfonobong
0
470
The Cult of Friendly URLs
andyhume
79
7k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Product Roadmaps are Hard
iamctodd
55
13k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
860
Transcript
JVM GCs and why should I care? Maciej Biłas <
[email protected]
>
You should not unless you have to
How do I tell I have to? -verbose:gc -Xloggc:<filename> -XX:+PrintGCDetails
-XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationConcurrentTime -XX:+PrintGCApplicationStoppedTime
Yes, now you have to time since start: [Full] GC
heap_taken_before_GC -> heap_taken_after_GC (total heap size) pause in seconds 29422.361: [Full GC 1704272K->1175099K(1781760K), 5.2196310 secs] 29427.588: [GC 1176939K(1781760K), 0.0135230 secs] 29430.034: [Full GC 1651801K->1239586K(1781760K), 5.3722150 secs] 29435.591: [Full GC 1411504K->1196906K(1781760K), 5.3212200 secs]
What now? Add more memory to the heap before doing
any GC tuning.
Pro tips • Have a realistic stress test • Diagnose
if the problem is GC-related • Define your performance goals
What to optimize? • Throughput • Latency • Memory
Available collectors • Serial • Parallel • CMS (+ parallel
new) • G1 • experimental in late Java 6, available in Java 7
The heap
Perm gen • Perm gen does not count to heap
size • Perm gen is gone since Java 8
JVM defaults if CPUs >= 2 && memory >= 2GiB
server else client
Client and server classes Machine Heap size GC Client ???
Serial Server Initial: memory / 64 Max: MIN(memory / 4, 1GiB) Parallel Source: http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#par_gc.ergonomics.default_size
JSW case -server -Xms5000m -Xmx5000m -XX:NewRatio=1 -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC
-XX:+UseCompressedOops -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -verbose:gc
JSW after tuning 2022.201: [GC 2022.201: [ParNew: 2176832K- >139349K(2304000K), 0.1241120
secs] 2311896K- >274413K(4864000K) icms_dc=0 , 0.1243120 secs] [Times: user=0.48 sys=0.00, real=0.13 secs] 2746.297: [GC 2746.298: [ParNew: 2187349K- >122293K(2304000K), 0.2227440 secs] 2322413K- >327073K(4864000K) icms_dc=0 , 0.2229290 secs] [Times: user=0.67 sys=0.08, real=0.23 secs] 3528.443: [GC 3528.443: [ParNew: 2170293K- >57977K(2304000K), 0.0544880 secs] 2375073K- >278050K(4864000K) icms_dc=0 , 0.0546750 secs] [Times: user=0.18 sys=0.02, real=0.06 secs]
You can also try -XX:MaxGCPauseMillis
Not covered here • Most GC tuning flags • Go
check them yourselves • Safe points • Other GC implementations • the pauseless one from Azul especially
Resources • JVM 6.0 Tuning http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html • List of JVM
options http://www.oracle.com/technetwork/java/javase/tech/vmoptions- jsp-140102.html • Sizing TLABs https://blogs.oracle.com/daviddetlefs/entry/tlab_sizing_an_annoying_little • Server class machine detection http://docs.oracle.com/javase/6/docs/technotes/guides/vm/server- class.html • Java Garbage Collection Distilled http://www.infoq.com/articles/Java_Garbage_Collection_Distilled