demo下载:http://download.csdn.net/detail/vvzhouruifeng/8747599
在对响应的实体进行操作的时候,使用到了byte[] ,由于volley是轻量级频次高的网络请求框架,因此会大量使用到byte[] ,这样的话会频繁创建和销毁byte[]。为了提高性能,volley定义了一个byte[]缓冲池,即ByteArrayPool 。
在ByteArrayPool 内,定义了 两个集合,分别是存储按大小顺序排列byte[]的list 和 按使用先后顺序排列byte[]的list。在volley中所需要使用到的byte[]从该缓冲池中来取,当byte[]使用完毕后再归还到该缓冲池,从而避免频繁的创建和销毁byte[]。
/**
* 字节数组缓冲池:
*
* byte[] 的回收池,用于 byte[] 的回收再利用,减少了内存的分配和回收。主要通过一个元素长度从小到大排序的ArrayList作为 byte[] 的缓存,另有一个按使用时间先后排序的ArrayList属性用于缓存满时清理元素。
*/
public class ByteArrayPool {
/** The buffer pool, arranged by last use 按使用的先后时间顺序排序*/
private List<byte[]> mBuffersByLastUse = new LinkedList<byte[]>();
/** The buffer pool, arranged by buffer size 按大小顺序排序*/
private List<byte[]> mBuffersBySize = new ArrayList<byte[]>(64);
/** The total size of the buffers in the pool 池中所有byte[]的长度之和 */
private int mCurrentSize = 0;
/**
* 池中单个byte[]的最大长度
* The maximum aggregate size of the buffers in the pool. Old buffers are discarded to stay
* under this limit.
*/
private final int mSizeLimit;
/** Compares buffers by size 比较器,用于排序,按byte[]的字节长度进行排序*/
protected static final Comparator<byte[]> BU