问题描述
在堆上分配内存是一项昂贵的操作,因此,即使不再使用分配的内存,某些编程语言也避免将其返还给操作系统。
但是对于许多情况,例如在云上运行的微服务,您希望内存使用率较低,否则费用可能会很高。 因此,在这些情况下,不使用内存后释放内存非常重要。
Rust取消提交并将内存返回给操作系统的默认策略是什么?
怎么改变?
解决方法
默认情况下,Rust使用system allocator。
这基于Unix平台上的
malloc
和Windows上的HeapAlloc
以及相关功能。
是否调用free()
是否实际上使内存可用于其他进程取决于libc实现和您的操作系统,并且该问题与Rust无关(请参见下面的链接)。无论如何,已释放的内存应可用于将来的分配,因此长时间运行的进程不会泄漏内存。
我的一般经验是Rust服务器的资源消耗非常低。
另请参阅: