OOMs!... I did it again
summary
Explains concrete diagnostics and fixes: use always pre-touch to avoid late RSS surprises; inspect proc maps, JFR and run jcmd nmt for native-memory breakdown (NMT omits RSS); profile retained native allocations with the async-profiler branch; set container JVMs with Xms = Xmx and matching CPU request/limit; reduce Netty arenas and run malloc_trim periodically (default 0) to shrink RSS. Practical numbers: default maxDirectMemory equals heap (recommend maxDirectMemory=128m), and packing 64 flags into a HashSet can jump from 8 bytes to ~5.7KB — measure live set via heap dump before resizing.
AI-written summary · about
chapters (10)
- 0:00Introduction and speaker bio
- 1:34Process memory basics
- 7:01JVM memory regions
- 11:21Out of memory errors overview
- 15:38JVM in containers
- 20:42Direct memory deep dive
- 24:58Native memory and NIO
- 28:56Java heap and GC fundamentals
- 37:32Heap sizing and optimization
- 45:19Summary and Q&A
related talks
02h 41mCures for OOMKills, Warm-ups, and Slowness in JVM Containers
52mMemory footprint of a Java process
34mTroubleshooting Native Memory Issues in Java Applications
45mScooby RAM, where are you?
32mMastering JVM Memory Troubleshooting - From OutOfMemoryErrors to Leaks
43mWho Ate My RAM?
47mManaging and monitoring a JVM
40mSave Java memory
