I have some heap dumps that I took either before or after running out of memory. Looking just at the overview, I understand what's meant by Used Memory and Free Memory, but not Free Committed Memory. When we get an OutOfMemoryError, we tend to have maybe 10% of the JVM heap assigned to Used Memory, and the rest is Free Committed Memory.
Could someone please explain what Free Committed Memory is?
From my understanding there's:
Free Committed is the difference between the currently "used memory amount" and how much RAM your JVM actually requested from the OS. Once it uses up the "Free Committed" space, the JVM will request more committed memory space up to the JVM Max.
Joseph -- I understand that to be the Free Uncommitted (grey) memory. If the application has a total of 2 GB of memory allocated by the host, and we've used 512 MB with actual objects (used = red), then the remaining 1.5 GB of memory should be available for consumption (free uncommitted = grey).
I guess I'm confused about the distinction between Free Committed and Free Uncommitted in this context
Using your context, I've added Total Committed as a column for help. As the JVM reaches it's max total committed memory, It will request the OS for more space until there is no more free uncommitted space.
|Interval||Free Committed||Used||Total Committed||Free Uncommitted|
From the Docs:
Take a look at getUsed(), getCommitted(), getMax().
Hope that helps