Apache Common-pool2對象池淺析

        Apache Common-pool2包提供了一個通用的對象池技術的實現。能夠很方便的基於它來實現本身的對象池,好比DBCP和Jedis他們的內部對象池的實現就是依賴於Common-pool2。
        對象的建立和銷燬在必定程度上會消耗系統的資源,雖然jvm的性能在近幾年已經獲得了很大的提升,對於多數對象來講,沒有必要利用對象池技術來進行對象的建立和管理。可是對於有些對象來講,其建立的代價仍是比較昂貴的,好比線程、tcp鏈接、數據庫鏈接等對象,所以對象池技術仍是有其存在的意義。數據庫

1.Apache Common-pool2的實現apache

common-pool2包括三個包:swift

    org.apache.commons.pool2:包含了對象池的接口。框架

    org.apache.commons.pool2.impl:包含了對象池的具體實現。jvm

    org.apache.commons.pool2.proxy:包含了對象池的代理。tcp

commons-pool2主要有三大部分構成:ObjectPool,PooledObjectFactory,PooledObject。性能

ObjectPool:咱們直接操做的對象池,主要包括對象的存取和狀態的管理,具體對象的建立由PooledObjectFactory來實現。.net

PooledObjectFactory:管理具體對象的狀態,好比建立,初始化,驗證對象狀態和銷燬對象。線程

PooledObject:是對須要放入池中的對象的一個包裝類,給對象添加了一些額外的信息,如狀態信息,建立時間,激活時間,關閉時間等。這些添加的信息方便pool來管理和實現一些特定的操做。代理

他們這三者就構成了一個object pool的基本框架。他們的關係能夠用以下的一個圖來描述:

簡單來講,就是由PooledObjectFactory建立對象,而後由PooledObject包裝一下,放入ObjectPool.

 

 

引用:

apache commons pool2的總體結構分析

Apache Common-pool2對象池分析和應用

Apache common-pool,common-dbcp源碼解讀與對象池原理剖析

相關文章
相關標籤/搜索