java中的强引用(Strong Reference)

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这几个类来实现所谓的垃圾自动回收.....

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值