BeeOP小蜜蜂对象池是一款轻量高性能Java对象池。
Mave坐标(Java7)depedecy><groupId>com.github.chris2018998</groupId><artifactId>beeop</artifactId><versio>1.0.3</versio></depedecy性能测试
100万次借用/归还(1000线程x1000次),获取时间分布,平均时间对象池名commos-pool2-2.9.0BeeOP0.3_FairBeeOP0.3_Compete平均时间2.6774560.0003470.000187测试配置:PC:I5-4210M(2.6赫兹,双核4线程),12G内存Java:JAVA8_64Pool:初始10,最大10日志文件:https://github.com/Chris2018998/BeeOP/blob/mai/doc/temp/ObjectPool.log源码位置:https://github.com/Chris2018998/BeeOP/blob/mai/doc/temp/BeeOP_Test.rar范例
publiciterfaceBook{publicStriggetName();publicloggetNumber();}publicclassJavaBookimplemetsBook{privateStrigame;privatelogumber;publicJavaBook(){this("Java核心技术·卷2",System.curretTimeMillis());}publicJavaBook(Strigame,logumber){this.ame=ame;this.umber=umber;}publicStriggetName(){returame;}publicloggetNumber(){returumber;}publicStrigtoStrig(){returame;}publicclassJavaBookFactoryimplemetsBeeObjectFactory{publicObjectcreate(Propertiesprop)throwsBeeObjectExceptio{returewJavaBook("Java核心技术·卷1",System.curretTimeMillis());}publicvoidsetDefault(Objectobj)throwsBeeObjectExceptio{}publicvoidreset(Objectobj)throwsBeeObjectExceptio{}publicvoiddestroy(Objectobj){}publicbooleaisAlive(Objectobj,logtimeout){returtrue;}}publicclassTestBookPool{publicstaticvoidmai(Strig[]){BeeObjectSourceCofigcofig=ewBeeObjectSourceCofig();cofig.setObjectFactory(ewJavaBookFactory()); cofig.setObjectIterfaces(ewClass[]{Book.class});BeeObjectSourceobs=ewBeeObjectSource(cofig);BeeObjectHadlehadle=ull;try{hadle=obs.getObject();Objectv=hadle.call("getName");System.out.pritl("Bookame:"+v);}catch(BeeObjectExceptioe){}fially{if(hadle!=ull)hadle.close();}}}功能支持
1:对象借用超时2:对象借用支持公平与竞争模式3:支持对象安全关闭4:断网对象池自动恢复5:闲置超时和持有超时处理6:若对象发生异常,池自动增补7:对象回收时重置8:对象池重置9:支持JMX配置项说明
配置项描述备注poolName池名如果未赋值则会自动产生一个fairMode是否公平模式默认false,竞争模式iitialSize池初始创建对象数默认为0maxActive池最大创建对象数默认为10个borrowSemaphoreSize对象借线程最大并行数默认取最大对象数/2与cpu核心数的最小值maxWait对象借用等待最大时间(毫秒)默认8秒,对象请求最大等待时间idleTimeout对象闲置最大时间(毫秒)默认3分钟,超时会被清理holdTimeout对象被持有不用最大时间(毫秒)默认5分钟,超时会被清理forceCloseObject是否需要暴力关闭对象池关闭或重置,使用,默认false;true:直接关闭使用中对象,false:等待处于使用中归还后再关闭waitTimeToClearPool延迟清理的时候时间(秒)默认3秒,非暴力清理池下,还存在使用中的对象,延迟等待时间再清理idleCheckTimeIterval对象闲置扫描线程间隔时间(毫秒)默认5分钟objectFactoryClassName自定义的对象工厂类名默认为空eableJmxJMX监控支持开关默认false
评论