JVM metaspace is filled after minor garbage collection

476 views Asked by At

I have been looking into Java memory management and various sections in the heap memory like eden, s0, s1, old gen and metaspace. I was using VisualGC for tracking how memory is filled among different sections of heap. I noticed there is a sharp increase in the amount of memory occupied in the metaspace area after first garbage collection.

Here's an image of the VisualGC representation:

VisualGC_Monitoring

I would like to understand what gets added to metaspace after the first gc. I did research but couldn't get answers. Any help here?

1

There are 1 answers

0
Stephen C On

Metaspace is not "full". According to the captions, the limit for metaspace is 1.008G but you have 8.602M in there (out of a 9.125M initial allocation). That is about 1% of the limit.

Metaspace contains things related to classes; i.e. bytecodes, compiled native code, descriptors, statics. ~8M bytes is quite a modest amount of metaspace for a typical Java application that pulls in a few Java SE or 3rd-party library classes.

I would like to understand what gets added to metaspace after the first gc.

I suspect that it is just an accounting thing; i.e. the amount of memory used by metaspace only gets updated when the GC runs. If you notice, the 2 apparent changes in metaspace usage (after the start of recording) both coincide with a GC event.