Scooby RAM, where are you?
summary
Java processes commonly misreport resources in containers so 1792 megabyte server threshold and milli-CPU quotas matter; Kubernetes will kill containers that exceed limits. Practical tooling includes jcmd heap dump gzip to create compressed heap dumps and Eclipse MAT/VisualVM for analysis. Real surprises: a heap with 24 million Java lang.Strings from forgotten JNI local refs, and changing boxed-Long collections to primitive-specialized arrays cuts a run from 769s to 513s. Runtime flags to watch: GC overhead 98% and code cache defaults (48MB).
AI-written summary · about
chapters (20)
- 0:00Introduction
- 2:09Memory bytes in systems
- 6:02Memory bandwidth trends
- 8:12JVM ergonomics basics
- 12:30Java memory in containers
- 16:23Heap dumps in Kubernetes
- 20:58Analyzing heap dumps
- 24:11Debugging memory leaks
- 25:15Compact object headers
- 26:43Off-heap memory
- 29:11Thread stacks memory
- 30:35Code cache limits
- 31:56GC pauses and throughput
- 33:44GC overhead explained
- 35:31GC logs setup
- 37:40String deduplication
- 38:24Primitive wrappers memory
- 39:50Numeric collections
- 40:53Epsilon GC profiling
- 42:37Tuning Java memory
related talks
48mJava Memory Management Best Practices
21mMemory Efficient Java
43mTroubleshooting Memory Problems in Java Applications
48mJava in Containers - Part Deux
45mCatching the 137-Killer: A Java Memory Forensics Investigation
40mSave Java memory
51mA Healthy diet for your Java application
50mJVM and Kubernetes walk into the bar...
