SoftReference, ReferenceQueue 自己控制内存
来源:互联网 发布:短域名批量生成 编辑:程序博客网 时间:2024/04/25 22:08
在做java程序的时候,内存监控,缓存设置,是提升性能的一个比较重要的环节,那么看看jdk本身自带的管理缓存,内存的主要设置。
定义如下两个变量,用来控制jvm中缓存的大小:
这做的特点就是:一旦达到了JVM的上限,就会把缓存在jvm的数据全部清掉,不会残留。
private static final ReferenceQueue queue = new ReferenceQueue();
private static final Map<File, SoftReference<BlockSet>> cache = new HashMap();
public static BlockSet get(File file) {
SoftReference<BlockSet> ref = cache.get(file);
BlockSet block = ref == null ? null : ref.get();
if(block == null) {
synchronized(cache) {
ref = cache.get(file);
block = ref == null ? null : ref.get();
if(block == null) {
block = new BlockSet();
cache.put(file, new SoftReference<BlockSet>(block, queue));
}
}
}
block.init(file);
return block;
}
get 方法put 的是一个file文件,但是这个文件会经常不定时的被访问,那么如何高效快速,那就是使用缓存。
而SoftReference 就是 jdk 自带的缓存机制,用来控制缓存的,使用方式如上代码所示。
缺点:只要已达到jvm的maxmemory,在内存没有oom(Out of Memory)之前,就会释放所有的缓存数据。
使用不是很理想,所有需要借用第三方的缓存框架来弥补这个缺陷。
使用缓存的目的:
缓存我的常使用的数据,不常使用的可以不缓存,这样提高效率,减少IO操作。
- SoftReference, ReferenceQueue 自己控制内存
- java softReference ReferenceQueue
- ReferenceQueue+SoftReference+WeakReference
- ReferenceQueue
- ReferenceQueue
- Java中WeakReference、WeakHashMap、SoftReference、ReferenceQueue的作用和使用场景
- Java中WeakReference、WeakHashMap、SoftReference、ReferenceQueue的作用和使用场景 .
- Java中WeakReference、WeakHashMap、SoftReference、ReferenceQueue的作用和使用场景
- Android内存管理之SoftReference
- Java的内存管理3:"用ReferenceQueue代替finalize( )"
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- SoftReference
- 第一篇SCI背后的故事——李华丽
- 后海日记(7)
- 《你的孤独,虽败犹荣》读后感
- Dollars即时聊天客户端应用源码
- 支付宝向他付款代码
- SoftReference, ReferenceQueue 自己控制内存
- VC根据进程名获得进程ID 和 VC获得系统特殊文件夹 SHGetSpecialFolderPath 和 VC写入注册表,使程序开机启动
- JAVA Webservice
- 实用教程
- 正则化方法:L1和L2 regularization、数据集扩增、dropout
- 线性表
- linux下oracle数据库执行sql脚本乱码问题
- jsessionid的困扰
- quick-cocos2dx Socket连接若干问题总结