我目前正在运行一个运行时间很长的JVM应用程序(包括groovy类),我观察到了一些奇怪的行为。
我运行应用程序并更新我的Groovy类(正确清理元类信息等 - 我知道没有泄漏)所以我知道有几个类可以从permgen收集(通常我观察到permgen isn& #39; t热切地收集 - 我相信它只是完整的GC收集permgen,所以这种状态并不罕见)。奇怪的是,如果我让应用程序在没有活动的情况下运行,大约一个小时左右后内存使用量会突然下降(堆和permgen,但最明显的是permgen),但visualvm报告没有发生GC / CPU活动
以下是我的visualvm日志记录的屏幕截图
我的问题是,在没有注册GC活动的情况下,permgen有如此大的下降(~80mb)? visualvm通常可以很好地记录GC / CPU活动。
答案 0 :(得分:0)
尝试安装visualgc插件,以调查gc在这种情况下的工作方式。我想很多新一代对象都被删除了,但我无法通过截图告诉它。