zoukankan      html  css  js  c++  java
  • Java垃圾回收机制的工作原理

    Java垃圾回收机制的工作原理

    【博主】高瑞林 

    【博客地址】http://www.cnblogs.com/grl214 

    获取更多内容,请关注小编个人微信公众平台:

    一.Java中引入垃圾回收机制的作用

    当我们建完类之后,创建对象的同时,进行内存空间的分配,为了防止内存空间爆满,java引入了垃圾回收机制,将不再引用的对象进行回收,释放内存,循环渐进,从而防止内存空间不被爆满。

    1.垃圾回收机制的工作原理

    创建的对象存储在堆里面,把堆比喻为院子中的土地,把对象比喻为土地的管理者,院子比喻为java虚拟机,当创建一个对象时,java虚拟机将给对象分配土地,当对象不再使用时,JVM进行释放。

    引用计数:每个对象都包含一个计数器,当对象被引用时,计数器技术+1,当不被引用时-1,即为null;垃圾回收机制对其循环,当对象为null时,进行回收释放内存,虽然开销不是很大,但是在对象的整个生命周期垃圾回收机制进行循环工作,发现为null进行收回,但是有个缺陷,当对象出现循环引用时,本该回收的对象而计数器不显示0,所以垃圾回收机制也不回进行回收。

    自适应技术:

    停止—复制:暂停程序的运行,循环所有的对象找到“存活的”对象,将其复制到另一个堆里面,再将没有复制的进行回收,为了不占用存,引入在同一个堆里面,将没有占用的内存堆用来存放复制的“存活对象”,重新进行整理分配空间。为了防止出现没被引用的对象少,而花费开销复制了很多“存活对象”引入标记清扫,对对象进行循环标记引用的对象,复制到另一片堆里面,而不被引用的进行释放空间。最后JVM提供了自动检测监视,如果对象都很稳定,垃圾回收器效率低则使用“标记—清扫”,否则使用“停止—复制”,进行回收。

     

  • 相关阅读:
    [原创]推荐三款强大且漂亮的统计图控件
    使用ATL设计组件(VC6.0)
    COM笔记引用计数
    远程调试
    记事本2
    C++中类的多态与虚函数的使用
    Eclipse常用快捷键
    怎么在Release下调试代码
    MSDN 无法显示网页
    COM笔记接口
  • 原文地址:https://www.cnblogs.com/grl214/p/5918022.html
Copyright © 2011-2022 走看看