今天是补前两天的博客,这几天有点忙,而且网断了,没法上网。今天补一下。
问题:
java内存回收机制之对象引用类型
分析:
java内存回收是一个很值得讨论的话题,而且对于java工程师来说,这是一个避免不了的问题。只有深刻了解jvm内存回收机制,才能写出更高效的程序。
解答:
对象引用类型主要分为四类:强引用、软引用、弱引用和虚引用(机制并非实际引用类型)
在jdk中后三个引用类是共同继承于Reference类。类间关系如下:
java.lang.ref
——java.lang.ref.Reference<T>
直接已知子类:PhantomReference(虚引用)、SoftReference(软引用)和WeakReference(弱引用)
下面是对他们的分别介绍
1.强引用。使用new关键字,如Apple apple = new Apple(“small”)。适用情形:这样的引用无论系统资源如何紧张,都不会回收。即使以后他再也不会用到。
2.软引用。通过SofReference类实现,如SoftReference <Apple> apple = new SoftReference <Apple>(new Apple(“small”))。jdk里这样描述:“软引用对象,在响应内存需要时,由垃圾回收器决定是否清除此对象”
3.弱引用。通过WeakReference类实现,如WeakReference<Apple> apple = new WeakReference<Apple>(new Apple("big"));不管内存是否够,系统垃圾回收时必定回收。
4.虚引用。主要用于跟踪对象被垃圾回收的状态。通过PhantomReference类和引用队列ReferenceQueue类联合使用实现。
通过了解内存对象引用层次,这样将来在写程序时可以具体问题具体对待(三个层次:强引用、软引用和弱引用)。
前几天眼睛有点痛,看医生买药,所以不能用电脑。现在休息过来,特地将缺失的内容慢慢补上。
这里的内容参考了http://blog.jobbole.com/37273/ 的博客,然后补充了一些内容,特此说明。