對象池模式

來源:互聯網
上載者:User

標籤:

1.什麼是對象池(Object Pool) ?
池(Poo), 與集合在某種意義上有些相似。 水池,是一定數量的水的集合;記憶體池,是一定數量的已經分配好的記憶體的集合;線程池,是一定數量的已經建立好的線程的集合。那麼,對象池,顧名思義就是一定數量的已經建立好的對象(Object)的集合。

2.對象池是幹什麼的?
舉個生活中水池的例子,在沒有水池的時候,每次用水,都要去很遠的地方挑水;有了水池之後的,一次挑很多水來,放在水池蓄下來,這樣以後的一段時間內,用水的時候就不用去挑了,直接從水池取就可以了。同樣的道理,在C/C++的程式中,如果一種對象,你要經常用malloc/free(或new/delete)來建立、銷毀,這樣子一方面開銷會比較大,另一方面會產生很多記憶體片段,程式跑的時間一長,效能就會下降。這個時候,就產生了對象池。可以事先建立好一批對象,放在一個集合中,以後每當程式需要新的對象時候,都從對象池裡擷取,每當程式用完該對象後,都把該對象歸還給對象池。這樣,就會少了很多的malloc/free(new/delete)的調用,在一定程度上提高了系統的效能,尤其在動態記憶體分配比較頻繁的程式中效果較為明顯。

3.對象池有什麼特徵?
一般來說,對象池有下面幾個特徵:
(1)對象池中有一定數量已經建立好的對象
(2)對象池向使用者提供擷取對象的介面,當使用者需要新的對象時,便可通過調用此介面擷取新的對象。如果對象池中有事先建立好的對象時,就直接返回給使用者;如果沒有了,對象池還可以建立新的對象加入其中,然後返回給使用者
(3)對象池向使用者提供歸還對象的介面,當使用者不再使用某對象時,便可通過此介面把該對象歸還給對象池

4. 對象池如何??

只需要提供兩個介面即可,用queue類比一下。

對象池模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.