java的垃圾回收器

        java分配对象的方式:每分配一个对象,堆指针就会往前走一个单元,不用去管销毁对象的过程,每当内存不够用或者低于某个我们配置的值时,java才会启动垃圾回收机制。所以对象的存储空间的分配是相对快的。            

       java垃圾回收器就是要回收这些无用的对象的。那么怎么才能判断某个对象无用需要被回收了呢?    答案就是当堆栈或者静态存储区没有对这个对象的引用时,这个对象就是垃圾就可以被回收掉啦。有两种方式可以知道这个对象有木有被引用,第一种:遍历堆上的所有对象找引用。第二种:遍历堆栈和静态存储区中的引用找对象。第一种叫做引用计数法,每当这个对象有引用计数加 1, 当引用消失的时候则计数器减 1,这样做是有缺陷的,就是在循环的时候可能会出现某个对象应该被回收但是计数大于 0 的情况。

       java中用的是第二种方法。在这种方法下,java虚拟机采用了一种自适应的垃圾回收技术。java有两种方式:
1.  停止-拷贝方式:先暂停程序的运行,将 存活对象从堆上复制到另一个新堆上,这样就保证新堆是一个对象挨着一个对,这样就能够使得给java对象分配存储空间时堆指针只需要一直往前滑动。
2. 标记-扫清方式:它的思路同样是从堆栈和存储空间出发,遍历所有的引用,每找到一个对象,就会给这个对象一标记,在这个过程中不回收任何对象。在遍历完成后,就会删除垃圾对象,其他对象不进行复制,这样对象的存储就是不连续的啦,然后垃圾回收器重新整理对象,使他们成为连续的。
       java自适应技术无非就是java虚拟机对系统的垃圾情况进行监控,适时的调整用停止-拷贝方式还是标记-扫清方式来进行处理。达到提高系统效率的目的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值