Shallow, Retained and Deep Size

If you ever worked with heap analysis, you might have encountered terms such as shallow, retained and deep size of an object. It doesn’t really matter if we’re talking about analyzing JVM heap dump with VisualVM or JavaScript heap snapshot with Chrome DevTools – the terms are the same. The difference between shallow, retained and…

Read more...

When Application Threads Can Be Stopped: Safepoints

There are two logical groups of threads in Java application: application threads performing application logic threads performing GC   When performing operations such as heap compaction, GC threads move some objects around and those objects cannot be used by any of the application thread, because their physical location may change. This leads to so called…

Read more...

PermGen and Metaspace

PermGen is an abbreviation for Permanent Generation and it’s a special heap space which is separate from the main Java heap where JVM keeps track of metadata of the classes which have been loaded. In Java 8 PermGen has been renamed to Metaspace – with some subtle differences. From our perspective, it is important to…

Read more...