rust 贪图碎片_Rust的内存管理会导致内存碎片吗?

Rust的内存管理方式与C和C++类似,不包含垃圾收集器,因此可能导致内存碎片。现代分配器如jemalloc通过管理小块内存来减少碎片,但对于大块内存请求,碎片仍可能成为问题。尽管如此,由于64位系统的地址空间较大,实际中这个问题相对较小。若需要,程序员可以通过自定义分配器或直接使用sbrk/mmap来控制内存分配。
摘要由CSDN通过智能技术生成

TL;DR: Most programs will never have to worry about fragmentation in C, C++ or Rust. Those which do will have to handle it by themselves.

Rust编程语言的自动内存管理是否需要回收碎片内存?

Rust没有自动内存管理功能;它具有手动内存管理,编译器会检查其是否正确 . 差异可能听起来很理论,但这很重要,因为它意味着内存操作直接映射到源代码,幕后没有任何魔力 .

通常,语言需要具有压缩GC才能压缩碎片存储器 . Rust与C和C一样,没有GC,因此根据使用情况,它的内存可能会碎片化,并且如果没有程序释放恼人的块,则无法进行碎片整理,因为重定位是不可能的 .

但是,在我们开始担心碎片化之前,我们必须先考虑它的含义 .

What is the effect of fragmentation?

碎片会造成物理内存和地址空间的浪费:您的程序占用的空间超过了它的使用量 . 在极端情况下,即使未使用的内存量足以授予它们,这种浪费也可能阻止分配请求 .

与GC并行时,重要的是要意识到大多数GC语言也会造成一些浪费 .

实际上,值得注意的是,支离破碎不是唯一的浪费来源;过度分配也是一个常见的“问题”:

a Vec 将分配2个幂的元素,但也许你只使用 2^N + 1 ,浪费 2^N - 1 个槽

a BTreeMap 或 HashMap 分配的空间比实际使用的空间大

甚至内存分配器通常会分配预定义大小的块,因此要求157个字节实际上可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值