Java中设计缓存结构的思想?

forum99 2005-01-28 10:12:45
一般是采用HashMap来作为缓存的存储结构,但Java没有全局变量的概念,怎么保证缓存中的数据不被垃圾回收器收集,而造成数据的丢失呢?

请问一般的缓存是怎样保证数据的独立性(即脱离垃圾回收器)的?

欢迎讨论,快乐散分!!
...全文
1153 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
jerrykey 2005-02-01
  • 打赏
  • 举报
回复
我是写一个类,把相关变量声明成静态,利用数据之后把数据reset。
不知道这样是不是缓存?
ch_jp 2005-02-01
  • 打赏
  • 举报
回复
singleton模式:
public class DataCache {
protected static final HashMap map = new HashMap(); // Cache table

private static final Object lock = new Object();
private DataCache() {} // 防止在外部实例化
public static Object getData(Object key) {
Object v = map.get(key);
if (v == null) {
synchronized(lock) {
v = map.get(key); // Check again to avoid re-load
if (v == null) loadDataSource(key);
v = map.get(key); // retrieves data.
}

}

return v;

}
/*
*Load data from data source.
*/
protected static synchronized void loadDataSource(Object key) {
Object value = new Object(); // Load value from data source
map.put(key, value);
}
}
wjg001 2005-02-01
  • 打赏
  • 举报
回复
.
chenkewu 2005-01-31
  • 打赏
  • 举报
回复
(1)jive里面,是使用单态模式维护一个工厂实例,做为程序的入口,就是无论有多少个在线用户,都只要从该入口进入.在这个工厂实例中,有一个缓存管理类(DatabaseCacheManager)变量,这个类有几个公有变量,如DbUserCache(就是缓存访问过的用户)等.当要获取一个user的用户信息时,它就会先在DbUserCache中查找,如果找不到,那么就从数据库中读取,再放入缓存中.

ckwvip51@hotmail.com(联系我)
forum99 2005-01-31
  • 打赏
  • 举报
回复
正在研究Jive,但他是如何保证缓存中的数据不被垃圾回收器收集,这个问题一直没有明白?

网上研究Jive的文章也只是比较浅的,www.Jdon.com也没有做出这方面的分析和回答,不知有没有谁研究透了,分享一下经验?
hxzg001 2005-01-31
  • 打赏
  • 举报
回复
单例比较合适
jacklondon 2005-01-31
  • 打赏
  • 举报
回复
singleton 或者 class static data member
wjg001 2005-01-31
  • 打赏
  • 举报
回复
.
hjd1399 2005-01-30
  • 打赏
  • 举报
回复
学习
ymm 2005-01-30
  • 打赏
  • 举报
回复
用全局存放不行吗?
jxjrsuibian 2005-01-30
  • 打赏
  • 举报
回复
up
nitc 2005-01-30
  • 打赏
  • 举报
回复
up
homeland520 2005-01-30
  • 打赏
  • 举报
回复
up
zealVampire 2005-01-29
  • 打赏
  • 举报
回复
建议看看jive
smilelhh 2005-01-29
  • 打赏
  • 举报
回复
scope = "application"行不?
zdnetchina 2005-01-29
  • 打赏
  • 举报
回复
参考一下子jive
wjsfr 2005-01-29
  • 打赏
  • 举报
回复
关注!
forum99 2005-01-28
  • 打赏
  • 举报
回复
具体说说你的做法!
scnjl110 2005-01-28
  • 打赏
  • 举报
回复
就是塞。 .
forum99 2005-01-28
  • 打赏
  • 举报
回复
to scnjl110
application只能用在页面和servlet中,不方便

你是说用“单件”singleton保存系统中要用到的全局属性??
加载更多回复(12)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧