什么是 Rust 策略来取消提交并将内存返回给操作系统?

Lea*_*dro 4 memory memory-management rust microservices

在堆上分配内存是一项昂贵的操作,因此一些编程语言避免将其返还给操作系统,即使已分配的内存不再使用。

但是对于很多场景,比如在云上运行的微服务,你会希望内存使用率低,否则费用会很高。因此,在这些情况下,在不使用内存后释放内存非常重要。

什么是 Rust 取消提交并将内存返回给操作系统的默认策略?
这怎么能改变呢?

Sve*_*ach 11

默认情况下,Rust 使用系统分配器

这是基于mallocUnix平台和HeapAllocWindows,加上相关功能。

调用是否free()真正使内存可供其他进程使用取决于 libc 实现和您的操作系统,而这个问题大多与 Rust 无关(请参阅下面的链接)。在任何情况下,释放的内存都应该可用于将来的分配,因此长时间运行的进程不会泄漏内存。

我的一般经验是 Rust 服务器的资源消耗非常低。

也可以看看:

  • 我还要指出的是,对默认分配器不满意的人可以自由地尝试(1)jemalloc 和(2)编写自己的“GlobalAllocator”。当然,后者更具挑战性…… (3认同)