50、Netty源码分析:缓存池ObjectPool

目录

  • ObjectPool
    • 创建对象池
  • 获取对象get()
  • 从本地池中获取对象claim()
  • 回收对象

ObjectPool

在分析PooledByteBuf的时候我们遇到了recycleHandler类,该类用于回收已经使用完毕的缓存对象并将其放回池中供下次循环利用,Netty的对象池工作过程大体如下:
*

1、 调用抽象类ObjectPool的静态方法newPool()创建对象池,返回的是实现类RecyclerObjectPool;
2、 调用RecyclerObjectPool的get()方法获取对象值,依次往下get对象直到底层的DefaultHandle;

接下来我们看下这些类的关系以及属性值:
*

接下来我们按着流程图的方法具体分析ObjectPool的工作流程。

创建对象池

创建新的对象池时调用抽象类ObjectPool的newPool方法并传入创建具体对象的工具类ObjectCreator,具体过程如下:

*

获取对象get()

对象池创建好了,当我们需要对象时直接从池中获取,调用get()方法,具体过程如下:

*

从本地池中获取对象claim()

*

回收对象

如果一个对象已经使用完毕则将其放回池中,供下次循环利用。
*

至此,Netty的对象池分析完毕,感谢阅读。
*

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: