Does JVM option -Xmx4g mean that the process will consume up to 4 GB RAM? Certainly not. What else can take virtual memory and how much of it? The question becomes especially important when running Java in a shared environment or in a container with limited resources.
Excessive memory consumption may occur everywhere: from the application code and the libraries to the Java virtual machine and the operating system. While Java memory leaks are usually easy to discover from a heap dump, native memory leaks can be quite confusing.
During this session we will discuss what structures contribute to the JVM footprint. We will study the real cases of native memory leaks and explore the tools useful in memory allocation analysis.