假设我有一个非常大的
- 从
我想为
有什么方法可以实现这个问题?
编辑:
我的基本问题是:如何确定
std::map< unsigned int, Foo > FooDB
,它在内存中保存了 Foo
对象,可通过其 ID 检索。现在可能会有比可用内存更多的 Foo
对象。因此,我想要以下结构:- 从
FooDB
中检索 ID 为 x 的 Foo
对象。
- 如果对象 x 在 FooDB
中,则返回它。
- 如果不在,从硬盘加载它,并尝试将其存储在 FooDB
中以供进一步查询。
- 如果有足够的内存可用:将其添加到 FooDB
中。
- 如果没有足够的内存:通过删除未使用的对象(最旧的查询时间戳)来释放一些空间。我想为
FooDB
保留一些内存,但我无法确定其中可以存储多少个 Foo
对象,因为它们的大小不同。有什么方法可以实现这个问题?
编辑:
我的基本问题是:如何确定
std::map
在内存中的大小?当然,包括其中存储的所有堆对象。如何知道已经达到了 没有足够的内存 部分?
Foo
中添加一个方法来猜测其内存使用情况。不必担心多或少一个字节。找出最大的块并尝试正确地获取它们,并添加一些偏移量以覆盖较小的部分和开销。 - rtlgrmpf