1 Minute Garbage Collection Analysis
Many times our customers are disappointed for our ability in identifying application execution profile.
To understand that ability you need a minimal JVM knowledge and a good tool to extract information. SpyGlass Garbage Collection Analyzer is that tool.
Connect to your application and start to monitor memory behavior. You should be able to see something like this:
This image presents a summary view of main memory spaces and their evolution in time with a 5 minutes window.
Now lets see what we can extract from this image:
- This application use a really big heap size: so we can expect a long time to perform full GC (many seconds)
- There is a 3GB Young Generation Space size:
- In five minutes (300 s) we have 7-8 small GC: this could be an issue only if small GC time is high, but usually this is a good indicator
- Application consumes about 24GB in 5 minutes: this is not an issues if in that time application elaborates a lot of transactions, but now we haven't that information
- Survivor space is never empty: this means that application often creates long life objects that survived may generations
- There is a 8GB Old Generation Space: this could be an issue because full GC need a lot of time based on HW capacity
- Rate from promoted object size and created object is really low: this is a good indicator
- Old Generation Used size grows slowly: this is a good indicator!
- But if Old Generation Used size grows slowly, why Old Generation Space is so big? Probably it is better to reduce this size.
- Permanent Space size is about 1GB: this is not an issue if an application has a lot of classes or it is mostly based on reflection (see inflation).
- Permanet Used size grows slowly as Old Generation, so we can assume that reducing it's size cold be better to reduce full GC time with minor impacts on application performance
SpyGlass Garbage Collector Analyzer