微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

free() 实现何时应该将内存返还给操作系统?

如何解决free() 实现何时应该将内存返还给操作系统?

我正在为一个大学项目编写一个简单的 malloc 实现。其中一项任务是有时将释放的内存返还给操作系统(给出的示例是在一段时间内使用 1GB malloc 内存的进程,之后它只使用 100MB 内存直到它终止),但是我不是确定如何实现这一点。我想定期检查进程分配的内存量和释放的内存量,如果可能,将一些释放的页面返回给操作系统,但我不确定这是否是一种有效的方法

编辑:我第一次写这篇文章时没有意识到,但我的措辞方式太模糊了。 “未使用的内存”是指已释放的内存。

解决方法

向操作系统请求内存或将其返回是(相对)昂贵的操作,因为它们需要上下文切换用户/内核并返回。出于这个原因,在大多数实现中,malloc 调用仅请求大块并从这些块内部分配,并使用 空闲块列表 管理释放的内存。在这种情况下,它仅在空闲列表中存在完整块时才将内存返回给操作系统。

对于自定义实现,将内存返回给系统的规则取决于程序员(您...)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。