Java的四中引用类型
2015-10-25 14:08
197 查看
强引用:JVM宁愿抛出OOM也不会将它回收,可能导致内存泄露
软引用:当内存空间不足的时候才会去回收软引用的对象
弱引用:在系统GC时,弱引用的对象一定会被回收,软弱引用适合保存那些可有可无的缓存数据
虚引用:虚引用跟没有引用差不多,即使虚引用对象还存在,get方法总是返回null,它最大的作用是跟踪对象回收,清理被销毁对象的相关资源
WeakHashMap适用场景:如果系统需要一张很大的map表,map中的表项作为缓存之用,即使没能从map中拿到数据也没关系的情况下。一旦内存不足的时候,weakhashmap会将没有被引用的表项清除掉,从而避免内存溢出。它是实现缓存的一种特别好的方式。
实现:Entry<K,V> extendsWeakReference<K> implements Map.Entry<K,V>
Entry继承了WeakReference,并在构造方法中构造了key的弱弓l用
**如果希望WeakHashMap能够自动清理数据就不要在系统的其他地方强引用WeakHashMap的key,否则,这些key不会被回收。
软引用:当内存空间不足的时候才会去回收软引用的对象
弱引用:在系统GC时,弱引用的对象一定会被回收,软弱引用适合保存那些可有可无的缓存数据
虚引用:虚引用跟没有引用差不多,即使虚引用对象还存在,get方法总是返回null,它最大的作用是跟踪对象回收,清理被销毁对象的相关资源
WeakHashMap适用场景:如果系统需要一张很大的map表,map中的表项作为缓存之用,即使没能从map中拿到数据也没关系的情况下。一旦内存不足的时候,weakhashmap会将没有被引用的表项清除掉,从而避免内存溢出。它是实现缓存的一种特别好的方式。
实现:Entry<K,V> extendsWeakReference<K> implements Map.Entry<K,V>
Entry继承了WeakReference,并在构造方法中构造了key的弱弓l用
**如果希望WeakHashMap能够自动清理数据就不要在系统的其他地方强引用WeakHashMap的key,否则,这些key不会被回收。
相关文章推荐
- Java抽象类和接口的区别
- Java设计模式10:观察者模式
- Java Concurrency — 原子变量类
- jdk从1.6升级到1.7可能会遇到的Version问题
- jdk环境配置
- spring的annotation-driven配置事务管理器详解
- Scripting Java #3:Groovy与invokedynamic
- Java笔记集合之Vector
- struts2—OGNL总结
- java值传递问题
- wget jdk 却是网页的解决办法
- java-用两个栈实现队列&&用两个队列实现一个栈
- struts2整合jfreechart
- Java笔记集合之栈和队列
- spring—声明式事务管理总结
- Java String中若干问题
- 5个强大的Java分布式缓存框架
- JAVA学习路线图
- java数组的行数和列数
- java数组的行数和列数