最近在做跟音视频相关的开发,这些数据通过网络接受过来后直接执行播放操作,为了更流畅的进行播放,进行了一个缓存队列进行暂存。
从收流到放置缓存队列中,再到从缓存队列中取数据去进行播放,因为这些数据很多信息,需要创建一个实体类来进行封装,但是从创建-赋值-使用-丢弃,发现创建了大量的临时数据实体,大大增加了JVM的垃圾回收工作。于是便考虑,能否仿照Android开发中Message类做一个可重复利用的实体类呢,这样就避免了重复创建大量的临时对象,而且也能大大减少创建对象带来的开销,于是看了下其源码,照葫芦画瓢如下:
/**
* 数据载体类
* 可重用
*/
public class RecycleableDataHolder {
//
// 一些成员变量
//
private RecycleableDataHolder next;
private static final Object sPoolSync = new Object();
private static RecycleableDataHolder sPool;
private static int sPoolSize = 0;
public static final int MAX_POOL_SIZE = 32;
private RecycleableDataHolder() {
}
public static RecycleableDataHolder obtain() {
synchronized (sPoolSync) {
if (sPool != null) {
RecycleableDataHolder holder = sPool;
sPool = ho