java中引用分为,强,弱,虚,软

(1)强引用

使用最普遍的引用。如果一个对象具有强引用,它绝对不会被gc回收。如果内存空间不足了,gc宁愿抛出OutOfMemoryError,也不是会回收具有强引用的对象。

(2)软引用

如果一个对象只具有软引用,则内存空间足够时不会回收它,但内存空间不够时就会回收这部分对象。只要这个具有软引用对象没有被回收,程序就可以正常使用。

(3)弱引用

如果一个对象只具有弱引用,则不管内存空间够不够,当gc扫描到它时就会回收它。

(4)虚引用

如果一个对象只具有虚引用,那么它就和没有任何引用一样,任何时候都可能被gc回收。

软(弱、虚)引用必须和一个引用队列(ReferenceQueue)一起使用,当gc回收这个软(弱、虚)引用引用的对象时,会把这个软(弱、虚)引用放到这个引用队列中。

比如,上述的Entry是一个弱引用,它引用的对象是key,当key被回收时,Entry会被放到queue中。

最新文章

  1. 运行DbVisualizer报the java_home environment viariable does not point to a working 32-bit JDK OR JRE错误
  2. Get item by sharepoint web service jquery
  3. 关于EXCEL学习的那些事
  4. dump_stack调用过程【原创】
  5. IDE启动报错
  6. delphi数组作为参数传值
  7. c语言中argc和argv是什么意思?
  8. Linux 下memcache安装及使用
  9. android账号与同步之同步实现
  10. sql like '%x%'优化
  11. 颜色渐变的RGB计算
  12. [Search Engine] Compression in Inverted Index
  13. OWIN轻量型框架介绍
  14. 快速进入pycharm图形界面
  15. Windows系统MySQL安装配置
  16. nginx之安装、多虚拟主机、反向代理和负载均衡
  17. 使用CSS样式的三种方式
  18. 003_python学习之 字符串前'r'的用法
  19. 步步为营-23-通过GridView实现增删改
  20. Unity3D Shader 高斯模糊

热门文章

  1. SpringBoot 集成Mybatis时 使用通用插件Mapper 注意事项
  2. C#跨线程操作控件的最简单实现探究
  3. 10个最新手机美食APP界面设计欣赏
  4. 如何注册facebook应用
  5. beecloud resrful api test(nodejs)
  6. C# 释放资源的规范写法
  7. SOAP协议初级指南 (三)
  8. select, iocp, epoll,kqueue及各种I/O复用机制
  9. 设计模式7---Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)
  10. duilib入门简明教程 -- XML基础类(7)