美文网首页
垃圾回收

垃圾回收

作者: 维乾 | 来源:发表于2018-01-30 12:05 被阅读16次

如何判断对象是垃圾对象 ?

1.引用计数法 

 在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,当引用失效的时候,计数器的值就-1.

测试

设置参数可以查看垃圾回收的信息。

创建两个对象相互赋值,然后将其赋值为null可以看到对象被回收,说明hotspot Vm不是使用引用计数法对垃圾进行回收。

2.可达性分析法

在主流的商用程序语言中(Java和C#),都是使用可达性分析算法判断对象是否存活的。这个算法的基本思路就是通过一系列名为GC Roots的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的,下图对象object5, object6, object7虽然有互相判断,但它们到GC Roots是不可达的,所以它们将会判定为是可回收对象。


那么那些点可以作为GC Roots呢?一般来说,如下情况的对象可以作为GC Roots:

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

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

方法区中的常量引用的对象

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

如何回收?

1.回收策略 

    标记-清除算法

该算法有两个阶段。 

1. 标记阶段:找到所有可访问的对象,做个标记 

2. 清除阶段:遍历堆,把未被标记的对象回收

    复制算法

主要针对新生代内存,堆内存里面分为  Eden(80%)、Survivor(两个)、Tenured Gen  新创建的对象会放在Eden中,如果Eden中的内存不足,也会占用Survivor中,在垃圾进行回收的时候(新生代的98%对象生死只是"朝生夕死"),将存活下来的对象放入其中一个Survivor中,对垃圾对象进行清除。如果在创建对象将对象放入Eden中,再进行垃圾回收时,存活下来的对象放入另一个Survivor中。如果两次都存活下来的对象将放入Tenured Gen中(不过也不一定)。

    标记-整理算法

    算法不直接对可回收对象进行清理,而是让所有可用的对象都向一端移动。然后直接清理掉边界意外的内存。

     分代收集算法

当前商业虚拟机基本上都是采用分代垃圾回收算法来回收垃圾,思想也很简单,就是根据对象的生命周期将内存划分,然后进行分区管理。参考(http://blog.csdn.net/sinat_36246371/article/details/52998505)

2.垃圾回收

    Serial

     Parnew

     Cms

     G1

何时回收?

相关文章

  • 简单理解垃圾回收

    什么是垃圾回收? 垃圾回收的是什么? 如何判断为垃圾? 垃圾是怎样被回收的? 垃圾回收哪些区域的内存? 什么是垃圾...

  • JVM(二) GC算法与分代回收策略

    可达性分析 GCRoot场景 垃圾回收算法 分代回收策略 引用 垃圾回收 垃圾回收(Garbage Collect...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解...

  • 01垃圾回收机制

    垃圾回收(Garbage Collection,GC) 垃圾回收就是释放垃圾占用的空间 内存的动态分配和垃圾回收,...

  • Java 垃圾收集(GC)浅谈

    Java 垃圾收集(GC)浅谈 为什么需要垃圾回收?哪些内存需要回收?什么时候回收?如何回收? 为什么需要垃圾回收...

  • JVM垃圾回收机制

    JVM垃圾回收 整体思维导图 带着问题理解JVM垃圾回收机制 Java为什么需要垃圾回收机制; 回收哪部分垃圾; ...

  • 垃圾回收

    如何查看当前JVM使用的垃圾回收器? 如何指定使用CMS回收? 如何打印回收日志? 垃圾回收过程 CMS垃圾回收的...

  • JVM常见垃圾回收器介绍

    垃圾回收器简介 在新生代和老年代进行垃圾回收的时候,都是要用垃圾回收器进行回收的,不同的区域用不同的垃圾回收器。分...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • 一文带你深入了解JVM性能调优以及对JVM调优的全面总结

    目录 JVM调优 概念 基本垃圾回收算法 垃圾回收面临的问题 分代垃圾回收详述1 分代垃圾回收详述2 典型配置举例...

网友评论

      本文标题:垃圾回收

      本文链接:https://www.haomeiwen.com/subject/nlzqzxtx.html