| Blog信息 |  
| 
 blog名称:小鸟吹烟 日志总数:157 评论数量:424 留言数量:-1 访问次数:1266707 建立时间: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对象持有弱引用
  |    
 |   
 
  
  |