现在的位置: 首页 > 综合 > 正文

java中的强引用(Strong Reference)

2013年10月07日 ⁄ 综合 ⁄ 共 637字 ⁄ 字号 评论关闭

java中的强引用(Strong Reference)

我们平常用的最多的就是强引用了
如:String s = new String("opps");这种形式的引用称为强引用,这种引用有以下几个特点

1.强引用可以直接访问目标对象 ;
2.强引用所指向的对象在任何时候都不会被系统回收 ;
3.由于2的原因,强引用可能导致内存泄漏。
 
测试代码1:
  String s = new String("opps");
  // 开始执行垃圾回收
  System.gc();
  System.runFinalization();

  System.out.println(s);//opps
 
结果:垃圾回收后,依然可以打印出s所指向的opps,因此强引用所指向的对象不会被垃圾回收器回收。这样就可能会导致内存泄露。
强引用指向的对象,垃圾回收器是不会自动帮你回收对象所占的内存,一旦对象被强 引用,那么强引用本身就强迫这个对象保留在内存中,因此需要你自己手动去释放不需要再次别使用的对象所占的空间,这样你可能就要多次重复相同的释放内存的 动作了-因为此时内存回收器不会回收强引用指向的内存空间。

总结:使用强引用是因为你不想垃圾回收器自动回收强引用指向的内存空间,这样垃圾回收就要靠你自己手动释放了,这个跟号称有垃圾回收机制的java来说就非常尴尬了,“java,说好的垃圾自动回收机制呢?”^_^,还好java还提供了weak reference,soft reference和Phantom reference这几个类来实现所谓的垃圾自动回收.....

抱歉!评论已关闭.