java 缓存 单例_单例模式应用:高速缓存和查找对象(转)

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

单例模式获得工厂唯一实例,用map保存对象引用,实现快速查找

1.例子

package com.d1zhan.cache;

import java.util.HashMap;

import java.util.Map;

public class CacheFactory {

private static CacheFactory instance;

private Map map;

private CacheFactory(){

map = new HashMap();

}

public synchronized static CacheFactory getInstance(){

if (instance == null) {

instance = new CacheFactory();

}

return instance;

}

public Object lookup(Class clazz,String id){

Object obj =  map.get(clazz.getName()+id);

if (obj == null) {

obj=BaseDao.load(clazz,id);//这里是获取对象方式,例如hibernate的session.load(..)

map.put(clazz.getName()+id, obj);

}

return obj;

}

}

2.大家可能发现,这样做,cache里的对象会越来越多,有内存溢出的风险,解决的办法是,应用lru算法,把不常使用的对象,定期从cache清除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值