强引用、软引用、弱引用、虚引用

简单说,强引用就是一般的引用,该类对象在JVM的运行过程中将会一直占用内存空间,即使GC也不会释放空间。

软引用(SoftReference)是在GC时发现内存空间不足后将会释放占用的内存空间。

弱引用(WeakReference)是在GC时直接释放内存空间。

虚引用(PhantomReference)很奇怪的是其get方法永远返回null,提供这个概念可以更精细的控制对象的回收过程。(反正我至今没有碰到这种业务场景,据说手机开发中有时用到这个

 

 

这些概念早在JDK1.2里面就有了,只是最近在看一些框架的源代码时碰到这些概念,这些概念提出的目的就我个人理解是为了让程序员可以稍微控制一些JVM的GC,但这种控制不可能像C++、C之类能精细到直接的delete一块数据结构这种程度,这些只是提示JVM,当前内存中的某些对象可以被回收,已经被回收的时机等等(注意,只是提示JVM,不是要求,具体运行情况要看JVM的具体GC策略)。

 

其实想想也是,不需要自己手动释放内存是Java诞生之初与其它语言区分的一个显著特征,提供这些概念,也是完全手动控制与完全JVM控制两种策略之间一个权衡吧。

 

TMD,技术的东西写着写着就会往philosophy里靠。。。对了,上个月看到一本书《操作系统的哲学原理》,名字有点意思,虽然对国内IT翻译人的文笔不怎么报信心,但边看边骂的感觉其实挺爽的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值