为什么不';在垃圾收集期间,Java弱引用是否算作引用?
为什么Java弱引用不算作垃圾收集的引用?因为这只是它的目的 如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数 查看可达性的各种定义,以获得清晰的图像:为什么不';在垃圾收集期间,Java弱引用是否算作引用?,java,Java,为什么Java弱引用不算作垃圾收集的引用?因为这只是它的目的 如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数 查看可达性的各种定义,以获得清晰的图像: 因为这只是它的目的 如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数 查看可达性的各种定义,以获得清晰的图像: 弱引用不被视为GC下的引用,因为这是它们存在的全部意义及其定义:不会导致它们指向的对象被视
因为这只是它的目的 如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数 查看可达性的各种定义,以获得清晰的图像:
课程的所有学生
对象,反之亦然:属于学生的所有课程
对象
如果学生
变成垃圾(您丢失了对它的所有引用),弱哈希表将自动删除将该学生
与其课程
对象关联的条目
这样做的好处是,你不必在课程中添加学生名单。而且,当你想除掉一个学生
时,你不必搜索每一个课程
对象并将该学生从其列表中删除
只要失去对学生的跟踪,弱哈希表就会自动清除。弱引用不被视为GC下的引用,因为这是它们存在的全部意义和定义:不会导致它们指向的对象被视为活动的引用
这是非常有用的,因为它允许您维护对象之间的关系,当您不再对这些对象感兴趣时,这些关系会自动消失
您可以使用属性扩展对象,而不会导致对象永久链接到可达性图(不再需要时变成“语义垃圾”)
例如,一个全局弱哈希表可以让您找到属于给定课程的所有学生
对象,反之亦然:属于学生的所有课程
对象
如果学生
变成垃圾(您丢失了对它的所有引用),弱哈希表将自动删除将该学生
与其课程
对象关联的条目
这样做的好处是,你不必在课程中添加学生名单。而且,当你想除掉一个学生
时,你不必搜索每一个课程
对象并将该学生从其列表中删除
只要失去学生的踪迹,弱哈希表就会自动清除。实际问题是什么?弱引用不计算在内,因此当只剩下弱引用时,对象将被清除。我经常对Swing组件中的侦听器列表使用弱引用,这是一个需要清理的永久PITA。实际问题是什么?弱引用不计算在内,因此当只剩下弱引用时,对象将被清除。我经常对Swing组件中的侦听器列表使用弱引用,这是一个需要清理的永久PITA。