gpt4 book ai didi

Java:观察者模式和垃圾收集器

转载 作者:行者123 更新时间:2023-12-04 06:09:50 24 4
gpt4 key购买 nike

我已经实现了一个 TableModel,它的寄存器启动了 PropertyChangeEvents。我的 TableModel 监听这些事件以触发 TableModelEvents 以刷新底层 JTable。

如果 TableModel 被清除或使用新寄存器刷新......是否有 TableModel 在每个寄存器中调用“removePropertyChangeListener”方法以允许 GC 收集这些寄存器?

假设没有其他对这些寄存器的实时引用。

最佳答案

否。 register 对象具有对您的表模型的引用(通过监听器)。因此,如果该寄存器不再可访问,它将被垃圾收集。

另一方面,如果您保持寄存器处于 Activity 状态,但更改表模型而不将其作为监听器从寄存器中删除,那么寄存器将维护对旧模型的引用,并且模型不会被垃圾收集。

让长生命周期对象监听短生命周期对象的变化通常是一个好主意。如果是另一种方式,那么忘记删除监听器会导致内存问题(除非使用弱引用来维护监听器列表)

关于Java:观察者模式和垃圾收集器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7901065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com