memcached記憶體分配機制

2021-07-03 14:52:16 字數 892 閱讀 6273

memcached slab allocator分配機制

slab allocator的基本原理是按照預先規定的大小,將分配的記憶體分割成特定長度的塊,以完全解決記憶體碎片問題。

slab allocation的原理相當簡單,就是將分配的記憶體分割成各種尺寸的塊(chunk),並把尺寸相同的塊分成組(chunk的集合)

slab allocation快取原理:

memcached根據收到資料的大小,選擇最合適資料大小的slab

memcached中儲存著slab內空閒chunk的列表

根據該列表選擇chunk,然後將資料快取與其中

memcached記憶體管理:

1.記憶體的碎片化

如果用c語言直接malloc,free來向作業系統申請和釋放記憶體時,在不斷的申請和釋放過程中,形成了一些很小的記憶體片斷,無法再使用,這種空閒,但無法利用的記憶體現象,稱為記憶體的碎片化

2.memcache是如何克服記憶體的碎片化的?

memcached用slab allcoator機制來管理記憶體

基本原理:預告把記憶體劃分成數個slab倉庫,各倉庫切分成不同尺寸的小塊,需要記憶體時,判斷記憶體的大小,為其選取合理的塊

警示:如果有100byte的內容要存,但是122大小的倉庫中的chunk滿了,這時memcached不會去找更大的chunk去儲存,而是把122倉庫的舊資料踢掉

3.對於固定大小的chunk,也會有浪費的,如何緩解

對於特定的**,可以長期的統計**內快取資料,按照**的特點,設定chunk的大小

4.一般而言,觀察快取資料大小的變化規律,設定合理的生長因子,grow factor,預設是1.25倍

C C 記憶體分配機制

1.c語言中的記憶體機制 在c語言中,記憶體主要分為如下5個儲存區 1 棧 stack 位於函式內的區域性變數 包括函式實參 由編譯器負責分配釋放,函式結束,棧變數失效。2 堆 heap 由程式設計師用malloc calloc realloc分配,free釋放。如果程式設計師忘記free了,則會造...

Memcache記憶體分配機制

1.page 頁 為記憶體分配的最小單位 memcached 的記憶體分配以page為單位,預設情況下乙個page是1m,可以通過 i引數在啟動時指定。如果需要申請記憶體時,memcached會劃分出乙個新的page並分配給需要的slab區域。page一旦被分配在重啟前不會被 或者重新分配 2.sl...

Memcache記憶體分配機制

memcached 的記憶體分配以page為單位,預設情況下乙個page是1m,可以通過 i引數在啟動時指定。如果需要申請記憶體時,memcached會劃分出乙個新的 page並分配給需要的slab區域。page一旦被分配在重啟前不會被 或者重新分配 memcached並不是將所有大小的資料都放在一...