释放锁定的内存是否会解锁相应的页面

Does freeing locked memory unlock the corresponding pages?

本文关键字:解锁 锁定 内存 是否 释放      更新时间:2023-10-16

很明显,您可以将mlockall()malloc()结合起来锁定进程在其生命周期中分配的所有页面。通过阅读文档,我不清楚的是释放已经锁定的内存是否意味着自动解锁相应的页面。

如果free将内存返回给系统(即它被mmap分配,并将被munmap释放),那么锁将在解除映射时自动删除。这是大分配的典型情况。

如果free将内存返回到进程内管理的堆,那么锁将保留。这是小分配的典型情况。

在GNU/Linux上,您可以使用mallopt来获取和设置使用mmap分配的阈值;默认值(至少在我的计算机上)是128kb。在其他Unix版本中,如果需要这种级别的控制,可能需要直接使用mmap