記憶體池 程序池 執行緒池

2021-09-07 13:06:17 字數 718 閱讀 3726

首先介紹乙個概念「池化技術 」。池化技術 一言以蔽之就是:提前儲存大量的資源,以備不時之需以及重複使用。

池化技術應用廣泛,如記憶體池,執行緒池,連線池等等。記憶體池相關的內容,建議看看apache、nginx等開源web伺服器的記憶體池實現。

起因:由於在實際應用當中,分配記憶體、建立程序、執行緒都會設計到一些系統呼叫,系統呼叫需要導致程式從使用者態切換到核心態,是非常耗時的操作。

因此,當程式中需要頻繁的進行記憶體申請釋放,程序、執行緒建立銷毀等操作時,通常會使用記憶體池、程序池、執行緒池技術來提公升程式的效能。

執行緒池:執行緒池的原理很簡單,類似於作業系統中的緩衝區的概念,它的流程如下:先啟動若干數量的執行緒,並讓這些執行緒都處於睡眠狀態,當需要乙個開闢乙個執行緒去做具體的工作時,就會喚醒執行緒池中的某乙個睡眠執行緒,

讓它去做具體工作,當工作完成後,執行緒又處於睡眠狀態,而不是將執行緒銷毀。

程序池與執行緒池同理。

記憶體池:記憶體池是指程式預先從作業系統申請一塊足夠大記憶體,此後,當程式中需要申請記憶體的時候,不是直接向作業系統申請,而是直接從記憶體池中獲取;

同理,當程式釋放記憶體的時候,並不真正將記憶體返回給作業系統,而是返回記憶體池。當程式退出(或者特定時間)時,記憶體池才將之前申請的真正記憶體釋放。

記憶體池,程序池,執行緒池

在使用new malloc在堆區申請一塊記憶體的時候,由於每次申請的記憶體大小不一樣就會產生很多記憶體碎片,不好管理和浪費。記憶體池則是在真正使用記憶體之前,先申請分配一定數量的 大小相等的記憶體塊留作備用。當有新的記憶體需求時,就從記憶體池中分出一部分記憶體塊,若記憶體塊不夠用再 繼續申請新的記憶...

記憶體池 執行緒池 程序池

由於伺服器的硬體資源 充裕 那麼提高伺服器效能的乙個很直接的方法就是以空間換時間,即 浪費 伺服器的硬體資源,以換取其執行效率。這就是池的概念。池是一組資源的集合,這組資源在伺服器啟動之初就完全被建立並初始化,這稱為靜態資源分配。當伺服器進入正式執行階段,即開始處理客戶請求的時候,如果它需要相關的資...

記憶體池 執行緒池 程序池

首先介紹乙個概念 池化技術 池化技術就是 提前儲存大量的資源,以備不時之需以及重複使用 池化技術應用廣泛,如記憶體池,執行緒池,連線池等等。記憶體池相關的內容,建議看看 apache nginx 等開源web 伺服器的記憶體池實現。由於在實際應用當做,分配記憶體 建立程序 執行緒都會設計到一些系統呼...