情况
在开发过程中,我实现了称为对象池模式的设计模式。基本上这意味着我们的类有一个静态的公共方法和一个静态保护的属性。该属性携带所有实例,如果提供了某个对象键,则可以通过静态公共方法检索这些实例。我使用一个调用方法get_instance
将实例检索到本地引用变量中,然后在其上调用其他方法。在我们的例子中,一个包装函数模块调用get_instance
,然后在该实例上调用一些方法。在特定情况下,某个实例的生命周期结束。因此,它必须从对象池中删除。到目前为止,我在实例方法中执行此操作,其中对象从池(表)中删除自身。
假设
功能模块中的外部引用应该已经失效,因为它确实引用了一个不存在的对象。如果我假设正确,垃圾收集器现在应该携带这个孤立的引用。(通常情况相反:一个未引用的对象通常被 GC 杀死。)在这种情况下,我仍然假设我的功能模块中的本地引用也应该被收集。因为它所引用的对象已从对象池中删除。尽管如此,直到现在,我仍然调用Free lr_myreference
. 一位同事说,最好实现一个静态公共方法,它不会对引用起作用,而只是在调用Free lr_myreference
.
问题
一般来说,我在想:谁负责从池中删除对象?引用表中条目的其他本地引用(“原始引用”)呢?