JVM垃圾回收

前言:写这篇文章的目的在于解惑自己对垃圾回收的疑问!

待解答疑问:
1、那些对象需要回收?
2、怎么判断对象已不再使用?
3、垃圾回收时为什么要停顿?

那么此文将从五个方面来说明垃圾回收:

  • why: 为什么要回收?
  • what: 回收什么?
  • who: 谁回收?
  • when: 何时回收?
  • how:怎样回收?
why:为什么要回收?
主要堆上分配给对象的内存,如果不再使用的对象不进行回收,内存终究会耗尽。
what:回收什么?
堆上已不再使用的对象。
who:谁回收?
垃圾回收器。
when:何时回收?
当堆内存使用占比达到设置的阀值时。
how:怎样回收?
最简单的工具就是“标记-清除”,先对堆上内存区域标记是否使用。然后再统一清除。(实际的执行远比这复杂的多)
那些对象需要回收?
没有引用了对象。
怎么判断对象不再使用?
最简单的方式通过引用计数。每引用一次+1,每执行完成一次-1。最后如果是0则可认为是无引用;
垃圾回收时为什么要停顿?
停顿是为了标记清除不使用的内存。如果一边标记,一边使用已标记的内存状态就可能发生变化。增加垃圾回收的复杂度!(理论上不全局停顿是可以做到的)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值