我有一个带有三个结构池的程序。对于他们中的每一个,我都使用一个已用结构体的列表,另一个用于未使用的结构体。在执行过程中,程序会消耗结构,并按需将它们返回给池。此外,还有一个垃圾收集器清理“僵尸”结构并将它们返回到池中。正确处理内存池中的内存
在执行开始时,如预期的那样,虚拟内存显示大约分配了10GB *的内存,随着程序使用该池,RSS内存增加。
虽然使用的节点回到池中,标记为未使用节点,但RSS内存不会减少。我期待这一点,因为操作系统不知道我在处理内存,我无法注意到我是在真正使用它们还是管理一个池。
我想要做的就是强制未使用的内存随时回到虚拟内存,例如,当RSS内存增加到X GB以上时。
给出内存指针,有什么方法可以将内存区域放入虚拟内存吗?我知道这是操作系统的责任,但也许有办法强制它。
也许我不应该关心这个,你怎么看?
在此先感谢。
- 注1:该程序用于高性能计算,这就是为什么它使用这种内存量。
我为一些文件提供了池使用情况和内存使用情况的图片。正如你所看到的,池使用的突然下降是由于垃圾收集器,我想看到的是,这种下降反映在内存使用情况中。
您可能想要说明您的平台/操作系统,因为这是高度依赖于系统的。 –
我在Linux 2.6.32(70GB RAM)和Mac OS X Mavericks(16GB RAM)上做了测试 –
我不明白你为什么要强制系统将你的结构标记为“免费”,因为你可以在闲暇时在您的程序中重新使用它。 – Coconop