在考虑 MATLAB 中基于句柄类的 ORM 的可能性时,缓存实例的问题出现了。我无法立即想到一种方法来制作弱引用或弱映射,尽管我猜测事件监听器可能会设计一些东西。有任何想法吗?
更多信息
在 MATLAB 中,句柄类(与值类相反)具有引用语义。MATLAB 中包含的一个示例是containers.Map
该类。如果您实例化一个并将其传递给函数,则该函数对对象所做的任何修改都将通过原始引用可见。也就是说,它像 Java 或 Python 对象引用一样工作。
与 Java 和 Python 一样,MATLAB 以一种或另一种方式跟踪有多少事物正在引用句柄类的每个对象。当不再有对象时,MATLAB 知道删除该对象是安全的。
弱引用是指引用对象但不计为垃圾收集目的的引用。因此,如果对对象的唯一剩余引用很弱,则可以将其丢弃。通常可以向弱引用提供事件或回调 - 当对象被丢弃时,将通知对它的弱引用,从而允许运行清理代码。
例如,弱值映射类似于法线映射,不同之处在于值(与键相对)是作为弱引用实现的。弱映射类可以在每个弱引用上安排回调或事件,以便在删除引用的对象时,删除映射中的键/值条目,保持映射整洁。