一个比我优秀得多的程序员告诉我,他WebSocket
在WeakHashMap
. 我自己查看了该地图,它看起来很完美,因为连接将关闭,而负责保持地图的线程不会立即意识到,从而允许对关闭的连接进行垃圾收集。
在文档中,我注意到“WeakHashMap 中的值对象由普通的强引用保存。因此应注意确保值对象不会直接或间接地强引用它们自己的键,因为这会阻止密钥被丢弃。”。
这是否意味着一个值根本不应该引用它的或任何其他键,WeakHashMap
以免阻止垃圾收集?
值对它的键的强引用究竟是如何产生的?
例如,我需要保存与密钥(连接)关联的 IP 和 DNS 地址列表。我如何确保那些不是对密钥的强引用InetSocketAddress
then InetAddress
?