小编elD*_*ioz的帖子

JVisualVM可以"堆转储"按钮释放内存吗?

我有一个非常奇怪的问题.我正在开发一个基于Eclipse Equinox的OSGi应用程序; 它是使用OSGi Log Service(Equinox实现)开发的,现在我正在使用Apache Felix OSGi Log Service实现进行测试.

在API /代码方面,一切正常:OSGi日志服务是标准的,所以我可以毫无问题地从Equinox交换到Felix.

但是,我观察到了这种奇怪的行为:我启动了应用程序作为控制台程序,在控制台上查看日志输出,并将其附加到JVisualVM以分析内存使用情况; JVisualVM图显示了一个80 MB的已用堆.

13个小时后,平均堆大小达到220 MB,所以我决定分析堆转储,并按下"堆转储"按钮:在此操作之后,JVisualVM图显示使用的堆为20(分钟)-35 (最大)MB(?!?!),这个值是常数.

"堆转储"操作可以释放近200 mbs吗?如果是,为什么?

我从未在Equinox OSGi Log Service实现中看到这种行为,所以我怀疑Felix Log涉及这个问题......

谢谢

java memory jvisualvm heap-dump

6
推荐指数
2
解决办法
3891
查看次数

标签 统计

heap-dump ×1

java ×1

jvisualvm ×1

memory ×1