【发布时间】:2013-04-17 09:38:35
【问题描述】:
很清楚如何结合mlockall() 和malloc() 来锁定进程在其生命周期内分配的所有页面。通过阅读文档,我不清楚释放已锁定内存是否意味着相应页面的自动解锁。
【问题讨论】:
很清楚如何结合mlockall() 和malloc() 来锁定进程在其生命周期内分配的所有页面。通过阅读文档,我不清楚释放已锁定内存是否意味着相应页面的自动解锁。
【问题讨论】:
如果free 将内存返回给系统(即,它是用mmap 分配的,将用munmap 释放),那么当它被取消映射时,锁将自动被移除。这通常是大分配的情况。
如果free 将内存返回到进程内管理的堆,则锁将保留。这通常是小分配的情况。
在 GNU/Linux 上,您可以使用 mallopt 获取和设置使用 mmap 的分配阈值;默认(至少在我的电脑上)是 128kb。在其他 Unix 风格上,如果您需要那种级别的控制,您可能需要直接使用 mmap。
【讨论】: