zoukankan      html  css  js  c++  java
  • JVM垃圾收集器

    串行收集器
      1.最古老的收集器
      2.当进行垃圾回收的时候,回收线程是串行执行的,时间久,可能会产生较长停顿
      3.-XX:+UseSerialGC
        新生代、老年代使用串行回收
        新生代复制算法
        老年代标记-压缩

    并行收集器
      a.ParNew
        1.新生代并行,老年代串行
        2.是串行收集器新生代的并行版本
        3.采用复制算法
        4.多线程,需要多核支持
        5.-XX:+UseParNewGC
        6.-XX:ParallelGCThreads 限制线程数量
      b.Parallel
        1.类似ParNew
        2.新生代赋值算法,老年代标记-压缩算法
        3.-XX:+UseParallelGC      使用Parallel收集器+ 老年代串行
        4.-XX:+UseParallelOldGC 使用Parallel收集器+ 并行老年代

    调优参数:
      -XX:MaxGCPauseMills 最大停顿时间,单位毫秒 GC尽力保证回收时间不超过设定值
      -XX:GCTimeRatio      0-100的取值范围,垃圾收集时间占总时间的比,默认99,即最大允许1%时间做GC
      这两个参数是矛盾的。因为停顿时间和吞吐量不可能同时调优

    CMS收集器
      1.Concurrent Mark Sweep 并发标记清除
      2.标记-清除算法(由于是并发执行的,所以不能使用标记压缩算法,否则程序寻址会懵逼)
      3.并发阶段会降低吞吐量,且由于是和用户线程一起运行,所以难免会清理不彻底
      4.老年代收集器(新生代使用ParNew)
      5.-XX:+UseConcMarkSweepGC
      6.CMS运行过程比较复杂,着重实现了标记的过程,可分为
        a.初始标记
          根可以直接关联到的对象,速度快
        b.并发标记(和用户线程一起)
          主要标记过程,标记全部对象
        c.重新标记
          由于并发标记时,用户线程依然运行,因此在正式清理前,再做修正
        d.并发清除(和用户线程一起)
          基于标记结果,直接清理对象

  • 相关阅读:
    HTML链接/实施CSS的三种方法
    XML之Well-Formed文档规则
    【摘】SVN提交与版本冲突
    Web开发之404小结
    TCP 连接的要点
    [转] Epoll 相对Poll和Select的优点
    [转] 剖析 epoll ET/LT 触发方式的性能差异误解(定性分析)
    GDB调试技巧
    [转] 关于c++的头文件依赖
    [转] Linux中gcc,g++常用编译选项
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6937796.html
Copyright © 2011-2022 走看看