flo*_*low 5 caching garbage-collection node.js
所以我为我的内存饥渴的应用程序实现了一个实验性的缓存,并在混合中加入了一个堆,这样一旦缓存超过某个限制,我就可以轻松地获得最少访问的对象 - 这个想法是从对象中清除缓存可能不会很快重新使用,如果是,请从数据库中检索它们。
到目前为止,一切都很好,除了可能有尚未写入数据库且不应清除的对象。我可以通过设置“脏”位来解决这个问题,没问题。但还有另一个问题来源:如果仍然存在对潜伏在某处的给定缓存对象的有效引用怎么办?这可能会导致这样一种情况:函数f持有对 ID 为 的对象的引用 A xxx,然后从缓存中清除g该对象,然后另一个函数请求具有相同 ID 的对象xxx,但获得另一个引用 B,与 A 不同。到目前为止,我正在构建我的软件的假设是,任何具有给定 ID 的持久化对象都应该只有一个实例(也许这很愚蠢?)。
到目前为止,我的猜测是,我可以从垃圾收集相关的方法中gc.get_reference_count( value )获利,例如——检查并知道上面的任何计数1(因为value在缓存中)意味着某些闭包仍在保留value,因此不应清除它。
我在这个方向上没有发现任何有用的东西。这个问题是否需要另一种解决方案?
| 归档时间: |
|
| 查看次数: |
756 次 |
| 最近记录: |