我想我有内存泄漏。
(他们说第一步是承认问题,对吧?)
无论如何,我想我知道 - 请参阅按区域划分的堆的附加图像:。绿色是伊甸园,蓝色/红色是 S0/S1,紫色是旧的。我有无限的任期(> 15),在分配内存和溢出到老一代之间经过了很多时间。因此 - 内存泄漏。我认为。
那么 - 问题 - 我如何分析泄漏的内容?如您所见,我的伊甸园非常活跃。很多对象一直在被创建和销毁。
有没有办法只对老一代进行堆转储?或者以某种方式识别完整堆转储中的旧代(如果是,使用什么工具)?
编辑1:澄清:我没有做任何应该在内存中保留对象的事情。我在最初启动后分配的所有东西都应该在年轻时消亡。
Edit2:新发现:我进行了一次堆转储,疯狂地进行了 GC,然后又进行了一次。第二个显示老一代的使用水平显着降低。两者的主要区别在于终结器持有的对象。终结器不是在年轻的 GC 周期中运行吗?他们总是等待清理完整的 GC 吗?