Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 这里重点介绍一下软引用和弱引用。 如果一个对象只具有软引用,那么如果内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会...
分类:
编程语言 时间:
2014-08-12 18:51:34
阅读次数:
351
Java从JDK1.2版本开始,就把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 这里重点介绍一下软引用和弱引用。 如果一个对象只...
分类:
编程语言 时间:
2014-08-12 14:02:44
阅读次数:
408
设计一个不强引用对象的单例字典大家都知道,使用NSDictionary存储对象的时候会强引用对象,导致被存储对象的引用计数+1,有时候,我们想用单例来存储对象,但又不希望强引用存储的对象,这该怎么实现呢?在这里,我们可以使用NSMapTable来实现这个功能.我直接给出源码:WeakDictiona...
分类:
其他好文 时间:
2014-08-05 00:05:39
阅读次数:
273
最近在项目中使用了很多缓存技术,包括局部缓存,远程集中式缓存,分布式缓存,在缓存的使用中也发现一些问题,整体总结如下:1 使用局部缓存要注意内存溢出一般局部缓存使用Map来实现,很容易无限制的往Map中填入数据,导致内存溢出。最好的方法就是使用SoftReference引用对象,而不是强引用对象2 ...
分类:
其他好文 时间:
2014-08-04 17:05:37
阅读次数:
209
1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低...
分类:
编程语言 时间:
2014-08-04 13:53:27
阅读次数:
344
我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的。我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET中提供了WeakReference来实现。弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象...
分类:
其他好文 时间:
2014-08-01 15:32:11
阅读次数:
180
WeakHashMap ? ??? ?最近工作中碰到了java.util.WeakHashMap<K,?V>,不解其中奥妙,遂查个究竟,顺带记录下来 ? ??? ? Java引用类型 首先需要了解Java四种引用类型: 强引用(StrongReference) 强引用是...
分类:
其他好文 时间:
2014-07-31 17:25:27
阅读次数:
199
无论通过引用计数算法判断对象的引用数量,还是通过根搜索算法判断对象的引用链是否可达,判定对象是否存活都与“引用”有关。在JDK1.2之前,Java中的引用的定义很传统:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。这种..
分类:
编程语言 时间:
2014-07-29 15:58:33
阅读次数:
221
弱表(weak table)是一个很有意思的东西,像C++/Java等语言是没有的。弱表的定义是:A weak table is a table whose elements are weak references,元素为弱引用的表就叫弱表。有弱引用那么也就有强引用,有引用那么也就有非引用。我们.....
分类:
其他好文 时间:
2014-07-17 14:10:51
阅读次数:
231
#import "ViewController.h"#import @interface ViewController () //这里为什么要把它设置成为属性?为了就是解决强引用的问题,如果不设置,locationManger会在花括号之后,就会释放掉,这样就看不到了我们想要的地址改变信息,arc情...
分类:
其他好文 时间:
2014-07-16 16:59:24
阅读次数:
240