每日一题(六)

今天是补前两天的博客,这几天有点忙,而且网断了,没法上网。今天补一下。

问题:

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/ 的博客,然后补充了一些内容,特此说明。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章