为什么不收集对象?

问题:为什么处理程序不被收集?

我的程序中可能有内存泄漏。 我做了堆转储(下图),我不明白的结果。

我有一个处理程序,我认为它应该收集,但不是。 有两个引用,一个是WeakReference ,不应该是一个问题,另一个引用混淆了我。

处理程序在Runnable引用(实际上是一个kotlin lambda), Runnable被添加到HashMap 。 现在看来HashMap是在循环中自己引用的,但是java GC可以处理循环引用吗?

我敢肯定,当我做堆转储的方法releaseNativeMethodDescriptors完成。

在这里输入图像描述