java垃圾回收机制

  为什么需要了解GC和内存分配呢?

  当需要排查各种内存一出,内存泄漏问题是,当垃圾收集成为系统达到更高并发量的瓶颈时,我们需要对这些“自动化”的技术实施必要的监控和调节。

  java垃圾回收机制作用:有效防止内存泄漏,有效使用可用内存。

  GC判断是否回收的标准:当一个对象不再被使用时,那么这个对象就是可以被回收的。

  GC(Gabage  Collection)工作原理:创建对象时,GC就开始监视这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理heap(堆)中的素有对象。通过这种方式确定哪些对象是“可达的”,哪些是“不可以达的”。

  引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,任何时刻计数器都为0的对象是不可能在被使用的。但是java没有选用引用计数算法最重要的原因是:他很难解决对象之间的相互循环引用的问题
       根搜索算法:通过一系列的名为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。

  在Java语言中,可以作为GC Roots的对象包括以下几种:(如若不知道概念请看另一篇文章:java内存区域与内存溢出异常

      1)虚拟机栈(栈帧中的本地变量表)中的引用的对象。

      2)方法区中的类静态属性引用的对象。          

      3)方法区中的敞亮引用对象。

      4)本地方法栈中JNI(即Native方法)的引用对象。

  

 

posted @ 2017-07-18 15:13  c++c鸟  阅读(146)  评论(0)    收藏  举报