CLDC1.1学习:java.lang.ref

1.Reference

为引用对象提供的抽象基类。这个类为所有引用对象定义了一些通用操作。因为引用对象的实现适合gc紧密协作的,所以这个类不能直接被作为子类。

2.WeakReference

继承抽象类Reference。
这个类为弱引用提供支持。弱引用最常用来实现排序算法映射。假设垃圾回收器在一定时间点上认为一个对象是弱可达的(弱可达:我认为是gc认为该对象可以被回收的一个状态),那时它就会从那些具有强引用和弱引用但是非弱可达对象的引用链上自动清理所有指向该对象的弱引用和指向其它弱可达对象的弱引用。


公司有人用弱引用对象的原理做了一个对象缓存,但是效果不是很理想,照他本人的话来说:“ObjectCache是利用Java的WeakReference类原理设计的缓存。 但实际测试的情况看来,WeakReference实例在内存中存活的时间并不长,很容易被回收。”
另外想起当时面试时总监问起的有关gc的设计,现在考虑起来,如果单从现有java api考虑,是否可以根据弱引用与原本gc紧密结合的事实来作为一个设计的考虑。
弱引用api中描述的它的主要用途canonicalizing mappings(我浅显的翻译为排序算法映射)我还没有找到现实的例子或文档资料。

你可能感兴趣的:(java,算法,面试)