apache記憶體管理1

2021-06-26 20:21:28 字數 819 閱讀 4831

如果由作業系統進行管理記憶體,作業系統在分配和管理記憶體,應該會存在使用者態與核心態的切換,而且會有位址空間的預定和調撥物理儲存器等一系列的操作,而這些操作是不可控的,極大的影響了效率。apache自己管理記憶體,速度是乙個重要的原因。

每一連續的記憶體(邏輯上,物理上的位址空間不一定是)都由記憶體管理結點,管理著這段記憶體。記憶體表示方法是通過下標的進行表示的,如果下標為0,記憶體大小為(min_alloc巨集定義)為8kb,下標每加1,就是增加4kb的大小。

每個記憶體管理結點自己所佔的內存在分配這塊記憶體的開始處。

把這些記憶體管理結點用分配器進行管理。ref二級指標的使用方式很巧妙,在記憶體池中,也會存在。

struct apr_allocator_t ; 

#define min_alloc 8192 //最小分配8k 的記憶體

記憶體管理(1)

在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區 常量儲存區。棧,就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個n...

記憶體管理(1)

記憶體管理 如果對乙個物件使用了alloc,mutable copy withzone 或者retain,那麼你必須使用相應的release或者autorelease。基本型別 任何c的型別 如 int,long,long long,struct等。記憶體管理對於c語言基本型別無效。oc型別 非基本...

objective c 記憶體管理1

import 方法的基本使用 1.retain 計數器 1 會返回物件本身 2.release 計數器 1,沒有返回值 3.retaincount 獲取當前的計數器 4.dealloc 當乙個物件要被 的時候,就會呼叫,一定要呼叫 super dealloc 這句呼叫要放在最後面 概念殭屍物件 所占...