电子产业一站式赋能平台

PCB联盟网

搜索
查看: 209|回复: 0
收起左侧

什么是内存碎片?

[复制链接]

1001

主题

1001

帖子

8807

积分

高级会员

Rank: 5Rank: 5

积分
8807
发表于 2023-9-21 12:00:00 | 显示全部楼层 |阅读模式

nqliawwtrpt64018783144.gif

nqliawwtrpt64018783144.gif
+ ^2 E7 Y7 s) ~. q2 m- J( v
点击上方蓝色字体,关注我们+ p9 i8 r" a: f: D2 }4 |+ q1 ~/ s

+ V8 t& P2 o& r- J: @' W过程说明如下:& ^* {3 }5 w: y" f* Q3 s: x2 B
(1)、此时内存堆还没有经过任何操作,为全新的。( ?$ k, w2 D: M6 b/ Y5 k
(2)、此时经过第一次内存分配,一共分出去了 4 块内存块,大小分别为 80B、80B、10B 和100B。 7 S4 `4 T$ U. G: P) L
(3)、有些应用使用完内存,进行了释放,从左往右第一个 80B 和后面的 10B 这两个内存块就是释放的内存。如果此时有个应用需要 50B 的内存,那么它可以从两个地方来获取到,一个是最前面的还没被分配过的剩余内存块,另一个就是刚刚释放出来的 80B 的内存块。但是很明显,刚刚释放出来的这个 10B 的内存块就没法用了,除非此时有另外一个应用所需要的内存小于 10B。 3 G5 j2 S* M* f& V# \; w" G
(4)、经过很多次的申请和释放以后,内存块被不断分割、最终导致大量很小的内存块。也就是图中 80B 和 50B 这两个内存块之间的小内存块,这些内存块由于太小导致大多数应用无法使用,这些没法使用的内存块就沦为了内存碎片。
2 J5 O, o% F# T8 _% _' f0 s
- k2 b+ S* ]' p% y; y内存碎片是内存管理算法重点解决的一个问题,否则的话会导致实际可用的内存越来越少,最终应用程序因为分配不到合适的内存而崩溃,所以我们需要一个优良的内存分配算法来避免这种情况的出现。
$ [. E! }: ~3 m" m/ K& {( F) r& H% j- E: h) _

pix0lgcvv2j64018783244.png

pix0lgcvv2j64018783244.png

& r; \% a6 e, u6 v( v. T3 R往期推荐详解CAN总线:CAN总线通信优先级机制8 i5 U3 B/ v7 l, E
LabVIEW实现Modbus通信
0 t/ L" m4 r5 A$ Z  u! uLabVIEW实现PCB电路板坐标定位(实战篇—2)) ?& v; I* c& a. ?( J0 x) |0 z
如何设计电桥传感器驱动电路?
1 r/ S2 y4 N; x. I# i% H4 n) GRS485通信如何设计emc电路?6 v  o! f* P6 V+ g7 G
+ V  w8 k7 ?- k# l2 Q0 P! b

mpf1ol5jtgj64018783344.jpg

mpf1ol5jtgj64018783344.jpg

) j; f, e( g& w0 \( a% W

ccmchml0wvo64018783444.gif

ccmchml0wvo64018783444.gif

& B& I! p2 \1 m0 I7 {点击阅读原文,更精彩~
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表