1.fifo 佇列 全稱 first - in / first - out
2.filo 棧 全稱 first - in / last - out
棧的順序是儲存。
舉個例子:在乙個桶裡持續往裡放東西,最底下的永遠在最底下,是有序的,陣列持續往後加。
棧是有序的所以說它是不會出現碎片的。
從而引出來乙個問題,什麼是記憶體碎片呢?又是怎麼產生的呢?
棧記憶體,棧記憶體是永遠不會出現記憶體碎片的,因為它會疊加相當於它是無縫的所以說它是不會產生碎片。
接下來我說一下碎片是怎麼產生的呢?
它是從堆記憶體出來的。
堆記憶體如同乙個大大的棉花糖,我要拿乙份記憶體吃掉它,系統會隨機找到滿足要求的地方摳出來,像乙個蛀蟲一樣吃掉,當記憶體區域記憶體飽和的時候,它們中間狹小的縫隙就是記憶體的碎片,因為你永遠都無法拿到。
下圖就是乙個堆記憶體的圖,中間狹小的地方就是記憶體碎片
當然怎麼才能去除記憶體碎片呢??
只能把你所有所占用的記憶體空間,重新整理,重新排序,乙個乙個標識好之後我以乙個存續的方式宣告我的空間劃分我的記憶體,這時候,重新排列後才會把記憶體碎片乾掉。
上面講的就是乙個池,池記憶體的過程。
池的概念就是我們記憶體的生成和分配的概念。
Apache記憶體池內幕 4
在了解了記憶體分配子的概念之後,我們其實已經了解了apache中記憶體分配的細節了。不過apache中記憶體的層次結構關係則是由記憶體池負責組織,其資料結構apr pool t定義在apr pools.c中,定義如下 struct apr pool t apache中存在的記憶體池個數通常多於乙個,...
Apache記憶體池內幕 4
在了解了記憶體分配子的概念之後,我們其實已經了解了apache中記憶體分配的細節了。不過apache中記憶體的層次結構關係則是由記憶體池負責組織,其資料結構apr pool t定義在apr pools.c中,定義如下 struct apr pool t apache中存在的記憶體池個數通常多於乙個,...
程序池 執行緒池 記憶體池
程式進化過程 單程序 多執行緒 執行緒池 多程序 程序池 單程序 程式執行正確進一步優化 多執行緒 cpu有限 並行執行的執行緒有限 多程序 改變了限制條件 程序組執行時間取決於最長的乙個程序執行的時間 程序池 我們先準備10個程序池,說白了就是10個空位子而已,乙個乙個察看,如果位置空了,那麼就在...