Blog信息 |
blog名称:小鸟吹烟 日志总数:157 评论数量:424 留言数量:-1 访问次数:1258158 建立时间:2006年10月23日 |

| |
[J2SE]处理40万行记录OutOfMemory--内存泄漏优化 随笔, 心得体会, 软件技术
tone 发表于 2006/12/5 10:39:28 |
首先将40万行分解成3万每次,然后使用各种内存优化方法回收内存
对象的强、软、弱和虚引用.
1.强引用(StrongReference)
引用实际上都是强引用,这是使用最普遍的引用。如果一个对象
具有强引用,垃圾回收器绝不会回收它。当内存空 间不足,
Java 虚拟机宁愿抛出OutOfMemoryError 错误,使程序异常终止,也不会靠随
意回收具有强引用的对象来解决内存不足的问题。
2.软引用(SoftReference)
如果一个对象只具有软引用,如果内存空间足
够,垃圾回收器就不会回收它,如果内存空间不足了,就会回收这些对象的内存。只
要垃圾回收器没有回收它,该对象就可以被程序使用。软引用可用来实现内存敏感的
高速缓存。
软引用可以和一个引用队列(ReferenceQueue )联合使用,如果软引用所引用的对
象被垃圾回收器回收,Java 虚拟机就会把这个软引用加入到与之关联的引用队列中。
3.弱引用(WeakReference )
弱引用与软引用 的区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个优先级很低的线程,因此
不一定会很快发现那些只具有弱引用的对象。
弱引用可以和一个引用队列(ReferenceQueue )联合使用,如果弱引用所引用的对
象被垃圾回收,Java 虚拟机就会把这个弱引用加入到与之关联的引用队列中。
4.虚引用(PhantomReference )
“虚引用”顾名思义,就是形同虚设,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。
SoftReference类、WeakReference类和 PhantomReference 类,
它们分别代表软引用、弱引用和虚引用
使用WeakHashMap 能够节约存储空间,可用来缓存那些非必须存在的数据。
WeakHashMap<Key,Value> whm = new WeakHashMap<Key,Value>(); Key对象持有弱引用
|
|
|