zoukankan      html  css  js  c++  java
  • GC收集器

    ①:Serial(串行)收集器

      最基本,历史最悠久的串行收集器,单线程阻塞队列,jdk1.5之前默认的收集器。

      优点:简单高效,没有线程交互的开销。

      缺点:单线程,只会使用一个cpu/一条收集线程去完成垃圾收集。

      对应算法:年轻代复制算法,老年代标记整理算法。

    ②:ParNew收集器(Serial收集器的多线程版本)

      多CPU时对系统资源利用率很好,默认开启的收集线程数与CPU相同,单CPU时Serial有更好的效果。

    ③:Paraller Scavenge 收集器

      特点:并行,目标是达到一个可控制的吞吐量(运行用户代码时间/(运行用户代码时间+垃圾手机时间)),自适应调节策略。

      优点:适合需要与用户交互的程序,响应速度良好。

      缺点:无法与CMS收集器配合使用。

    ④:CMS收集器

      优点:并发,低停顿。

      缺点:对CPU资源敏感,面向并发设计的程序都对CPU资源敏感,因为占用了一部分线程(CPU资源)导致程序变慢,吞吐量降低,无法处理浮动垃圾,标记-清除算法导致内存碎片。

    ⑤:G1收集器

      特点:采用一种与众不同的方式组织堆内存,堆内存划分为多个大小相等的内存块,每个内存块是逻辑连续的一段内存,大小是2的N次方。

      G1提供了三种垃圾回收模式:Young GC,Mixed GC和Full GC,在不同条件下触发。

      Young GC 发生在年轻代的GC算法,一般对象(除了巨型对象)都在Eden Region 中分配内存,当被内存耗尽时,就会触发Young GC。

      Mixed GC 当对象晋升到老年代时,为了避免堆内存耗尽,虚拟机就会触发混合的垃圾收集器Mixed GC,会回收整个Young Region,还回收一部分Old Region。

      Full GC 如果对象内存分配速度过快,Mixed GC来不及回收,导致老年代占满,就会触发Full GC,就是单线程执行的serial old gc,会导致异常长时间的暂停时间,需要进行不断地调优,尽可能避免Full GC。

  • 相关阅读:
    【转载】用XML和XSLT来生成静态的HTML页面
    【转载】Lambda表达式(Lambda Expressions)
    [转]打领带的十种方法
    读书笔记
    【转载】用手机的朋友进来看看吧,终身受益啊!!!
    SQL查询出重复出现的数据
    技巧三:字符串格式化
    【Vegas原创】页面自动跳转代码收集
    【Vegas原创】我写的一个安装windowsService的BAT
    【Vegas原创】ASP.NET读取Excel,并以邮件正文方式和附件方式发送实例
  • 原文地址:https://www.cnblogs.com/rempop/p/11595166.html
Copyright © 2011-2022 走看看