BeeOP 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
BeeOP 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
BeeOP 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 GPL-3.0
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 欧德
适用人群 未知
收录时间 2021-01-04

软件简介

BeeOP 小蜜蜂对象池是一款轻量高性能Java对象池。

Maven坐标(Java7)

dependency>
   <groupId>com.github.chris2018998</groupId>
   <artifactId>beeop</artifactId>
   <version>1.0.3</version>
</dependency

性能测试

100万次借用/归还(1000线程 x1000次),获取时间分布,平均时间

对象池名 commons-pool2-2.9.0 BeeOP0.3_Fair BeeOP0.3_Compete
平均时间 2.677456 0.000347 0.000187

测试配置:PC:I5-4210M(2.6赫兹,双核4线程),12G内存 Java:JAVA8_64 Pool:初始10,最大10

日志文件:https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/ObjectPool.log

源码位置:https://github.com/Chris2018998/BeeOP/blob/main/doc/temp/BeeOP_Test.rar


范例

public interface Book {
   public String getName();
   public long getNumber();
}
public class JavaBook implements Book{
   private String name;
   private long number;
   public JavaBook() {
       this("Java核心技术·卷2", System.currentTimeMillis());
   }
   public JavaBook(String name, long number) {
       this.name = name;
       this.number = number;
   }
   public String getName() {
       return name;
   }
   public long getNumber() {
       return number;
   }
   public String toString() {
       return name;
   }

public class JavaBookFactory implements BeeObjectFactory {
    public Object create(Properties prop) throws BeeObjectException {
        return new JavaBook("Java核心技术·卷1", System.currentTimeMillis());
    }
    public void setDefault(Object obj) throws BeeObjectException { }
    public void reset(Object obj) throws BeeObjectException { }
    public void destroy(Object obj) { }
    public boolean isAlive(Object obj, long timeout) {
        return true;
    }
}
public class TestBookPool{
  public static void main(String[]){
      BeeObjectSourceConfig config = new BeeObjectSourceConfig();
      config.setObjectFactory(new JavaBookFactory());
      config.setObjectInterfaces(new Class[]{Book.class});
      BeeObjectSource obs = new BeeObjectSource(config);
      
      BeeObjectHandle handle = null;
      try {
           handle = obs.getObject();
           Object v=handle.call("getName");
           System.out.println("Book name:"+v);
       } catch (BeeObjectException e) {
       } finally {
           if (handle != null)
               handle.close();
       }
    }
}

功能支持

1:对象借用超时

2:对象借用支持公平与竞争模式

3:支持对象安全关闭

4:断网对象池自动恢复

5:闲置超时和持有超时处理

6:若对象发生异常,池自动增补

7:对象回收时重置

8:对象池重置

9:支持JMX


配置项说明

配置项 描述 备注
poolName 池名 如果未赋值则会自动产生一个
fairMode 是否公平模式 默认false,竞争模式
initialSize 池初始创建对象数 默认为0
maxActive 池最大创建对象数 默认为10个
borrowSemaphoreSize 对象借线程最大并行数 默认取最大对象数/2与cpu核心数的最小值
maxWait 对象借用等待最大时间(毫秒) 默认8秒,对象请求最大等待时间
idleTimeout 对象闲置最大时间(毫秒) 默认3分钟,超时会被清理
holdTimeout 对象被持有不用最大时间(毫秒) 默认5分钟,超时会被清理
forceCloseObject 是否需要暴力关闭对象 池关闭或重置,使用,默认false;true:直接关闭使用中对象,false:等待处于使用中归还后再关闭
waitTimeToClearPool 延迟清理的时候时间(秒) 默认3秒,非暴力清理池下,还存在使用中的对象,延迟等待时间再清理
idleCheckTimeInterval 对象闲置扫描线程间隔时间(毫秒) 默认5分钟
objectFactoryClassName 自定义的对象工厂类名 默认为空
enableJmx JMX监控支持开关 默认false
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
发表了资讯
2021/02/23 20:18

BeeOP 0.6 发布,代码重构后优化

小蜜蜂对象池是一款轻量级Java池化工具 坐标(Java7) <dependency> <groupId>com.github.chris2018998</groupId> <artifactId>beeop</artifactId> <version>0.6</version> </dependency> 更新内容 1:优化对象接口反射调用 2:对象句柄中增加无参调用方法 3:增加方法调用屏蔽处理(比如原生对象上的关闭方法,配置后可阻止用户对原生对象发起关闭) 项目地址 国内地址: https://gitee.com/mirrors/BeeOP 国外...

3
3
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
9 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部