为什么不';在垃圾收集期间,Java弱引用是否算作引用?

为什么不';在垃圾收集期间,Java弱引用是否算作引用?,java,Java,为什么Java弱引用不算作垃圾收集的引用?因为这只是它的目的 如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数 查看可达性的各种定义,以获得清晰的图像: 因为这只是它的目的 如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数 查看可达性的各种定义,以获得清晰的图像: 弱引用不被视为GC下的引用,因为这是它们存在的全部意义及其定义:不会导致它们指向的对象被视

为什么Java弱引用不算作垃圾收集的引用?

因为这只是它的目的

如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数

查看可达性的各种定义,以获得清晰的图像:


  • 因为这只是它的目的

    如果0个引用指向某个对象,则该对象将被垃圾回收。由于弱引用本身不应阻止对象被垃圾收集,因此在GC期间不会对其进行计数

    查看可达性的各种定义,以获得清晰的图像:


    弱引用不被视为GC下的引用,因为这是它们存在的全部意义及其定义:不会导致它们指向的对象被视为活动的引用

    这是非常有用的,因为它允许您维护对象之间的关系,当您不再对这些对象感兴趣时,这些关系会自动消失

    您可以使用属性扩展对象,而不会导致对象永久链接到可达性图(不再需要时变成“语义垃圾”)

    例如,一个全局弱哈希表可以让您找到属于给定
    课程的所有
    学生
    对象,反之亦然:属于
    学生的所有
    课程
    对象

    如果
    学生
    变成垃圾(您丢失了对它的所有引用),弱哈希表将自动删除将该
    学生
    与其
    课程
    对象关联的条目

    这样做的好处是,你不必在
    课程中添加学生名单。而且,当你想除掉一个
    学生
    时,你不必搜索每一个
    课程
    对象并将该学生从其列表中删除


    只要失去对
    学生的跟踪,弱哈希表就会自动清除。

    弱引用不被视为GC下的引用,因为这是它们存在的全部意义和定义:不会导致它们指向的对象被视为活动的引用

    这是非常有用的,因为它允许您维护对象之间的关系,当您不再对这些对象感兴趣时,这些关系会自动消失

    您可以使用属性扩展对象,而不会导致对象永久链接到可达性图(不再需要时变成“语义垃圾”)

    例如,一个全局弱哈希表可以让您找到属于给定
    课程的所有
    学生
    对象,反之亦然:属于
    学生的所有
    课程
    对象

    如果
    学生
    变成垃圾(您丢失了对它的所有引用),弱哈希表将自动删除将该
    学生
    与其
    课程
    对象关联的条目

    这样做的好处是,你不必在
    课程中添加学生名单。而且,当你想除掉一个
    学生
    时,你不必搜索每一个
    课程
    对象并将该学生从其列表中删除


    只要失去学生的踪迹,弱哈希表就会自动清除。

    实际问题是什么?弱引用不计算在内,因此当只剩下弱引用时,对象将被清除。我经常对Swing组件中的侦听器列表使用弱引用,这是一个需要清理的永久PITA。实际问题是什么?弱引用不计算在内,因此当只剩下弱引用时,对象将被清除。我经常对Swing组件中的侦听器列表使用弱引用,这是一个需要清理的永久PITA。