I am currently running a multi-tasking JVM application (which includes groovy classes) and I have been observing some strange behavior.
I launch the application and update the groovy classes (clearing metaclass information correctly, etc.), I know there is no leak), so I know that there are several classes that can be compiled from permgen (usually I notice that permgen not going to look - I think it's just a complete GC that collects pergens, which is not unusual for this condition). The strange thing is that if I leave the application without activity, after about an hour there will be a sudden drop in memory usage (heap and perm, but most pronounced in permgene), but visualvm reports that GC / CPU activity did not occur.
Below is a screenshot of my registration in visualvm

My question is, how does such a large drop (~ 80 mb) occur in a pergene without registering GC activity? visualvm usually records GC / CPU activity well.
source
share