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.并发清除(和用户线程一起)
          基于标记结果,直接清理对象

  • 相关阅读:
    Leetcode Substring with Concatenation of All Words
    Leetcode Divide Two Integers
    Leetcode Edit Distance
    Leetcode Longest Palindromic Substring
    Leetcode Longest Substring Without Repeating Characters
    Leetcode 4Sum
    Leetcode 3Sum Closest
    Leetcode 3Sum
    Leetcode Candy
    Leetcode jump Game II
  • 原文地址:https://www.cnblogs.com/413xiaol/p/6937796.html
Copyright © 2011-2022 走看看