我正在编写一个手动计算记忆系统(呃,在 Matlab 中)。简单的部分很简单:
- 一种在执行计算后将数据放入记忆系统的方法。
- 一种从记忆中查询和获取数据的方法。
- 一种向系统查询所有“键”的方法。
这些部分并没有太大的疑问。问题是我的计算机内存有限,所以有时“放置”操作必须将一些对象转储出内存。我担心“缓存未命中”,所以我想要一些相对简单的系统来删除不经常使用和/或重新计算成本不高的记忆对象。我该如何设计那个系统?我可以想象它具有的部分:
- 一种告诉“放置”操作的计算成本(相对而言)的方法。
- 一种可选地提示“放置”操作的方法,可能需要多长时间进行一次计算(未来)。
- 'get' 操作需要注意查询给定对象的频率。
- 一种告诉整个系统要使用的最大内存量的方法(好吧,这很简单)。
当你达到内存限制并且它必须根据它们的内存占用、它们的成本和它们的有用性来剔除一些对象时,它的真正胆量将是在“放置”操作中。我怎么做?
抱歉,如果这太模糊或偏离主题。