java编程思想 java的垃圾回收机制

1引用计数
要理解java中的垃圾回收,先了解其他系统中的垃圾回收机制会很有帮助,引用技术是一种简单但速度很慢的垃圾回收机制。每个对象都含有一个引用计数器,当有引用连接至对象时,引用技术+1,当引用离开作用域或被置为null时,引用计数-1。当发现某个对象的引用计数为0时释放其占用空间。此方法有个缺陷,如果对象之间存在循环引用,可能会出现对象应该被回收,但引用计数却不为0的情况。对垃圾回收器而言,定位这样的交互自引用的对象组所需工作量极大。引用计数似乎从未应用于任何一种java虚拟机实现中。
2停止复制
先暂停程序的运行(不属于后台回收模式),将当前所有存活的对象从当前堆赋值到另一个堆,没有被复制的全是垃圾。
由于是复制时回收,效率会降低。首先得有两个堆,然后得再这两个分离的堆之间来回倒腾,从而维护比实际需要多一倍的空间。
第二个问题在于程序在稳定状态时可能只会产生少量的垃圾,甚至没有垃圾。尽管如此,复制式回收器仍然会把所有内存从一处复制到另一处。
3标记-清扫
为了避免复制回收在垃圾很少时浪费资源的情况,一些java虚拟机会进行检查,要是没有新垃圾的产生,就切换到标记-清扫模式。思路时从堆栈和静态存储区出发,遍历所有的引用,进而找出所有存活的对象,每个存活的对象都会被设一个标记,当全部标记工作完成的时候,清理动作才会开始,在清理过程中,没有标记的对象将会释放,没有任何复制动作,所以接下来的空间时不连续的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值