fbpx
维基百科

記憶池

記憶池(Memory Pool),又被稱為固定大小區塊規劃(fixed-size-blocks allocation),允許程式設計師以類似 C語言 的 malloc 或是 C++ 的 new 運算元進行動態的記憶體規劃。對於其它動態記憶體規劃的實踐來說,因為會變動記憶體區塊大小導致的碎片問題,導致在實時系統上受限於效能因此,根本無法使用。記憶池提供了一個更有效率的解決方案:預先規劃一定數量的記憶體區塊,使得整個程式可以在執行期規劃 (allocate)、使用 (access)、歸還 (free) 記憶體區塊。

有許多實時作業系統採用了記憶池IBM 的 Transaction Processing Facility 便是其中一個例子。

一個簡單的實踐示例 编辑

這個簡單的記憶池實踐模組在編譯期規劃 3 個示例記憶池,其區塊將大小針對程式的需求做最佳化。這個程式可以下列介面來規畫、使用及歸還記憶體區塊:

  • 從記憶池中規劃記憶體區塊。這個函數會先檢測目前的記憶池是否仍有足夠空間可以規劃所需的記憶體區塊,若空間已不足,將繼續嘗試下一個記憶池。一個已規劃的記憶體區塊將使用handle來表示。
  • 獲取一個指向已規劃記憶體區塊的指標
  • 歸還之前規劃的記憶體區塊。
  • 用以代表記憶體區塊的handle,可以使用像是 unsigned int 的資料型別來實踐。

記憶池與 malloc 的比較 编辑

優點

  • 記憶池允許在執行期以常數時間規劃記憶體區塊,並且不會有記憶體破碎的情況產生。一次歸還記憶體中成千上萬個物件的記憶體區塊只需要一個操作,無需像 malloc 一般需要個別 free。
  • 記憶池可以在階層式的樹狀結構中被分群,非常適合某些特定的程式結構,例如遞歸迭代
  • 固定區塊大小的記憶池不需將每次規劃的資訊記錄下來(例如規劃的記憶體區塊大小,因為每次規劃都是一樣的)。針對一些小而多的記憶體區塊規劃會節省一些空間。

缺點

  • 記憶池模組在使用時,必須依照程式需求來做個別調整,才能保持時間與空間效率。

外部連結 编辑

記憶池, 此條目没有列出任何参考或来源, 2010年2月7日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, memory, pool, 又被稱為固定大小區塊規劃, fixed, size, blocks, allocation, 允許程式設計師以類似, c語言, malloc, 或是, 運算元進行動態的記憶體規劃, 對於其它動態記憶體規劃的實踐來說, 因為會變動記憶體區塊大小導致的碎片問題, 導致在實時系統上受限於效能因此, 根本無法使用, 提. 此條目没有列出任何参考或来源 2010年2月7日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 記憶池 Memory Pool 又被稱為固定大小區塊規劃 fixed size blocks allocation 允許程式設計師以類似 C語言 的 malloc 或是 C 的 new 運算元進行動態的記憶體規劃 對於其它動態記憶體規劃的實踐來說 因為會變動記憶體區塊大小導致的碎片問題 導致在實時系統上受限於效能因此 根本無法使用 記憶池提供了一個更有效率的解決方案 預先規劃一定數量的記憶體區塊 使得整個程式可以在執行期規劃 allocate 使用 access 歸還 free 記憶體區塊 有許多實時作業系統採用了記憶池 IBM 的 Transaction Processing Facility 便是其中一個例子 一個簡單的實踐示例 编辑這個簡單的記憶池實踐模組在編譯期規劃 3 個示例記憶池 其區塊將大小針對程式的需求做最佳化 這個程式可以下列介面來規畫 使用及歸還記憶體區塊 從記憶池中規劃記憶體區塊 這個函數會先檢測目前的記憶池是否仍有足夠空間可以規劃所需的記憶體區塊 若空間已不足 將繼續嘗試下一個記憶池 一個已規劃的記憶體區塊將使用handle來表示 獲取一個指向已規劃記憶體區塊的指標 歸還之前規劃的記憶體區塊 用以代表記憶體區塊的handle 可以使用像是 unsigned int 的資料型別來實踐 記憶池與 malloc 的比較 编辑優點 記憶池允許在執行期以常數時間規劃記憶體區塊 並且不會有記憶體破碎的情況產生 一次歸還記憶體中成千上萬個物件的記憶體區塊只需要一個操作 無需像 malloc 一般需要個別 free 記憶池可以在階層式的樹狀結構中被分群 非常適合某些特定的程式結構 例如遞歸與迭代 固定區塊大小的記憶池不需將每次規劃的資訊記錄下來 例如規劃的記憶體區塊大小 因為每次規劃都是一樣的 針對一些小而多的記憶體區塊規劃會節省一些空間 缺點 記憶池模組在使用時 必須依照程式需求來做個別調整 才能保持時間與空間效率 外部連結 编辑PJLIB Reference Fast Memory Pool 页面存档备份 存于互联网档案馆 Pool Concepts A Memory Allocator 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title 記憶池 amp oldid 71475056, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。