Java中的引用及分类

来源:互联网 发布:p值计算软件 编辑:程序博客网 时间:2024/05/29 18:56

引用

Java中最初的引用是指存储了一个代表另一块内存起始地址数值的reference类型的数据,但是随着Java的发展,这种定义对于引用显得过于狭隘。
在java的发展过程中,引用得到了扩展,到目前为止,引用可以分为强引用、软引用、弱引用、虚引用四种,这四种引用方式的引用强度依次减弱。

  1. 强引用
    强引用是Java程序代码中最常见最普遍的,类似Object obj = new Object();
    这类的引用,是创建了一个对象,并将该对象赋值到一个变量,只要该对象有变量引用,即使内存不足的时候,也不会被垃圾回收机制回收。
  2. 软引用
    软引用是用来描述一类还有用,但是并非必需的对象。
    对于软引用关联着的对象,一般垃圾回收机制不会回收,但是当内存不足,垃圾回收机制进行第二次回收的时候,这类引用会被列入回收列表,进行第二次回收。
    在Java中,软引用的实现类是SoftReference类。
  3. 弱引用
    弱引用也是用于描述非必需对象引用的,但是比软引用的强度低一些。弱引用关联着的对象,是活不到第二次垃圾回收的,在第一次垃圾回收的时候就会被回收掉。
    在Java中,弱引用的实现类是WeakReference类。
  4. 虚引用
    虚引用是最弱的一种引用关系,也叫作幽灵引用或者幻影引用。对象是否有虚引用,不仅对它的生存完全没有影响,还无法通过虚引用来获得一个对象。而对象的虚引用存在的唯一目的就是能在该对象被回收的时候收到一个系统通知。
    在Java中,虚引用的实现类是PhantomReference类。
原创粉丝点击