內(nèi)存碎片
在看 FreeRTOS的內(nèi)存分配方法之前我們先來看一下什么叫做內(nèi)存碎片,看名字就知道是小塊的、碎片化的內(nèi)存。那么內(nèi)存碎片是怎么來的呢?內(nèi)存碎片是伴隨著內(nèi)存申請和釋放而來的,如圖所示。
(1)、此時內(nèi)存堆還沒有經(jīng)過任何操作,為全新的。
(2)、此時經(jīng)過第一次內(nèi)存分配,一共分出去了 4 塊內(nèi)存塊,大小分別為 80B、80B、10B 和100B。
(3)、有些應(yīng)用使用完內(nèi)存,進(jìn)行了釋放,從左往右第一個 80B 和后面的 10B 這兩個內(nèi)存塊就是釋放的內(nèi)存。如果此時有個應(yīng)用需要 50B的內(nèi)存,那么它可以從兩個地方來獲取到,一個是最前面的還沒被分配過的剩余內(nèi)存塊,另一個就是剛剛釋放出來的 80B 的內(nèi)存塊。但是很明顯,剛剛釋放出來的這個 10B
的內(nèi)存塊就沒法用了,除非此時有另外一個應(yīng)用所需要的內(nèi)存小于10B。
(4)、經(jīng)過很多次的申請和釋放以后,內(nèi)存塊被不斷的分割、最終導(dǎo)致大量很小的內(nèi)存塊!也就是圖中 80B 和 50B這兩個內(nèi)存塊之間的小內(nèi)存塊,這些內(nèi)存塊由于太小導(dǎo)致大多數(shù)應(yīng)用無法使用,這些沒法使用的內(nèi)存塊就淪為了內(nèi)存碎片!
內(nèi)存碎片是內(nèi)存管理算法重點(diǎn)解決的一個問題,否則的話會導(dǎo)致實(shí)際可用的內(nèi)存越來越少,最終應(yīng)用程序因?yàn)榉峙洳坏胶线m的內(nèi)存而奔潰!FreeRTOS 的
heap_4.c 就給我們提供了一個解決內(nèi)存碎片的方法,那就是將內(nèi)存碎片進(jìn)行合并組成一個新的可用的大內(nèi)存塊。
-
嵌入式
+關(guān)注
關(guān)注
5094文章
19184瀏覽量
307900 -
內(nèi)存
+關(guān)注
關(guān)注
8文章
3060瀏覽量
74368 -
FreeRTOS
+關(guān)注
關(guān)注
12文章
484瀏覽量
62411
發(fā)布評論請先 登錄
相關(guān)推薦
C語言malloc申請內(nèi)存時的碎片問題
![C語言malloc申請<b class='flag-5'>內(nèi)存</b>時的<b class='flag-5'>碎片</b>問題](https://file1.elecfans.com/web2/M00/8F/85/wKgZomTPYKOAAPFbAAACIEKXEFw938.png)
FreeRTOS內(nèi)存機(jī)制詳解
![<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>機(jī)制詳解](https://file1.elecfans.com/web2/M00/B9/11/wKgZomWKk5OAO5jXAAH8hQyuRQc411.jpg)
請問mymalloc會產(chǎn)生內(nèi)存碎片嗎?
FreeRTOS內(nèi)存管理的算法解析?
如何避免內(nèi)存碎片的產(chǎn)生
Freertos關(guān)于堆內(nèi)存管理的相關(guān)資料分享
FreeRTOS代碼剖析之2:內(nèi)存管理Heap
![<b class='flag-5'>FreeRTOS</b>代碼剖析之2:<b class='flag-5'>內(nèi)存</b>管理Heap](https://file1.elecfans.com//web2/M00/A6/A8/wKgZomUMP2-Af1DuAAAM-f5jrT8382.png)
你知道linux kernel內(nèi)存碎片防治技術(shù)?
FreeRTOS高級篇7---FreeRTOS內(nèi)存管理分析
![<b class='flag-5'>FreeRTOS</b>高級篇7---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>管理分析](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
FreeRTOS系列第8篇---FreeRTOS內(nèi)存管理
![<b class='flag-5'>FreeRTOS</b>系列第8篇---<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>管理](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何解決內(nèi)存碎片與內(nèi)存交換效率慢的問題
![如何解決<b class='flag-5'>內(nèi)存</b><b class='flag-5'>碎片</b>與<b class='flag-5'>內(nèi)存</b>交換效率慢的問題](https://file1.elecfans.com/web2/M00/A9/30/wKgZomUjuwuAfmM6AABmRpiypu4365.jpg)
FreeRTOS內(nèi)存管理實(shí)現(xiàn)
![<b class='flag-5'>FreeRTOS</b><b class='flag-5'>內(nèi)存</b>管理實(shí)現(xiàn)](https://file1.elecfans.com/web2/M00/A9/57/wKgZomUlCPqAVi9QAAAu_rCy9Ns634.png)
評論