锁定老帖子 主题:【求讨论】java内存cache实现的疑惑
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (10)
|
|
---|---|
作者 | 正文 |
发表时间:2011-05-26
坛子里,讨论JVM的风气溅起啊
|
|
返回顶楼 | |
发表时间:2011-05-26
http://suhuanzheng7784877.iteye.com/blog/1000646
希望对LZ有帮助,强static、引用都不会被回收,这也是为什么如果强引用没及时释放、静态变量使用超多,会发生内存溢出的error。 |
|
返回顶楼 | |
发表时间:2011-05-26
shaomeng95 写道 kingkan 写道 引用 1、JVM会去扫描cache所在区域并根据一定的GC策略去回收内存,如果cache中的数据还没到设定的过期时间(假设cache根据设定的过期时间进行淘汰)就被GC掉了,岂不是白cache这些数据了又被干掉了? cache中的数据还没到设定的过期时间是不会被回收的,JVM不会回收有强引用的对象。 引用 2、jvm是否存在不会被GC扫描的区域(编程可用的),如果有,在哪里? 如果没有,那oracle是否有计划未来增加这样的特性:设置一个区域,专门用来存储程序启动时需要加载的一些数据,GC不会光顾;这样的话,实现cache效率会更高,也更可控。 JVM中有一块地方叫DirectMemory的位置,这块是不受GC光顾的。深入来说,这块是用于IO的临时缓冲使用区,在sun的Hotspot中有个unsafe的类可以对它进行操作管理。关于这块区域的发展,同样也有公司在扩展这一块,terracotta公司收购了ehcache缓存后,就推出了BigMemory的产品,就是对这一区域的扩展实现,你可以去了解一下。 顺便提一下,terracotta公司最近也被欧洲的软件集成商Software AG收购了,业界的发展都不断的在整合。 ehcache,正准备去学习,多谢你的回复,看来真有这样的圣地存在啊(DirectMemory),请问兄台,有没有 不同虚拟机(hotspot,jrockit等)的GC策略对比的资料? 网络上很多hotspot的GC策略。 Jrockit没怎么用,回答不了你。 |
|
返回顶楼 | |
发表时间:2011-05-26
public class SoftReference<T>extends Reference<T>
软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象。软引用对象最常用于实现内存敏感的缓存。 我想这个说明可以对LZ有一点帮助 |
|
返回顶楼 | |
发表时间:2011-05-27
被引用的情况下GC不会去回收,只有没有任何引用的情况下才可能执行回收,问题是没有引用的情况下你程序去调用缓存难道不会NullPointException?
|
|
返回顶楼 | |
发表时间:2011-05-27
很明显LZ问这个问题的时候没google过。
|
|
返回顶楼 | |
发表时间:2011-05-27
advantech 写道 很明显LZ问这个问题的时候没google过。
google最近被party搞的打不开啊 |
|
返回顶楼 | |
发表时间:2011-05-28
为什么我没有权限投帖子呢?
|
|
返回顶楼 | |
发表时间:2011-05-30
没看懂LZ是不懂回收的基本策略,还是咱没看懂LZ的意思,这话真纠结
|
|
返回顶楼 | |