基于C++研究高并發(fā)內存池
訪問【W(wǎng)RITE-BUG數(shù)字空間】_[內附完整源碼和文檔]
內存池:程序預先向系統(tǒng)申請一大塊足夠的內存,此后,當系統(tǒng)需要申請內存的時候,不是直接向操作習題申請,而是向內存池中申請,當釋放的時候,不返回給操作系統(tǒng),而是返回給內存池,當程序退出時,內存池才將申請的內存真正釋放
高并發(fā)內存池
借鑒tcmalloc(ThreadCaching Malloc),即線程緩存的malloc,實現(xiàn)了高效的多線程內存管理,用于替代系統(tǒng)的內存分配相關的函數(shù)(malloc,free)
池化技術:向系統(tǒng)先申請過量的資源,然后自己管理,以備不時之需,之所以申請過量資源,是因為每次申請資源都有較大的開銷,那邊不如提前申請好,提高程序運行效率
在計算機中除了內存池,還有連接池,線程池,對象池等,以線程池為例,它的主要思想是,先啟動若干數(shù)量的線程,讓他們處于睡眠狀態(tài),當接收到客戶端請求時,喚醒某個沉睡的線程,讓它處理客戶端請求,當處理完請求之后,線程又進入了休眠狀態(tài)
內存池:程序預先向系統(tǒng)申請一大塊足夠的內存,此后,當系統(tǒng)需要申請內存的時候,不是直接向操作習題申請,而是向內存池中申請,當釋放的時候,不返回給操作系統(tǒng),而是返回給內存池,當程序退出時,內存池才將申請的內存真正釋放
內存池解決問題:
1.主要解決效率問題
2.內存碎片問題
malloc實際就是一個內存池
定長內存池
固定大小的內存申請管理
特定:
性能達到極致
不考慮內存碎片等問題
設計方式:
向內存申請一塊足夠大的內存塊,然后每次申請內存時我們就切出去一小部分拿來使用,




標簽: