我有许多带有唯一ID的Ruby对象,目前我正在使用Hash进行缓存。当对象被分配一个ID时,它就进入了Hash。缓存是完整的,也就是说,Ruby范围内存在ID的每个对象都应该在缓存中。
然而,我无法找到一种方法来从缓存中删除对象,一旦它们从所有其他作用域中消失。这当然是因为包含在缓存中的对象不会被垃圾回收。
有没有解决这个问题的方法?文档
然而,我无法找到一种方法来从缓存中删除对象,一旦它们从所有其他作用域中消失。这当然是因为包含在缓存中的对象不会被垃圾回收。
有没有解决这个问题的方法?文档
WeakRef
提供了一个WeakHash
类,但它似乎不适合实际使用,尽管它非常接近我认为我需要的项目。