JAVA编程思想--垃圾回收器

你可以把C++里的堆想象成一个院子,里面每个对象都负责管理自己的底盘,一段时间以后,对象可能被销毁,但底盘必须加以重用。在某些JAVA虚拟机中,堆的实现截然不同:它更像一个传送带,每分配一个新对象,它就往前移动一格。这意味着对象存储空间的分配速度非常快。JAVA的“堆指针”只是简单地移动到尚未分配的区域,其效率比得上C++在堆栈上分配空间的效率。

当垃圾回收器工作时,将一面回收空间,一面使堆中的对象紧凑排列,这样“堆指针”就可以很容易的移动到更靠近传送带的开始处,也就尽量避免了页面错误。通过垃圾回收器对对象的重新排列,实现了一种高速的、有无限空间可供分配的堆模型。


垃圾回收技术:

    引用计数:每个对象都含有一个引用计数器,当有引用连接至对象时,引用计数加1.当引用离开作用域或被置为null时,引用计数减1.垃圾回收器会在含有全部对象的列表上遍历,当发现某个对象的引用计数为0时,就释放其占用的空间。

    自适应:停止-复制,标记-清扫。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值