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

    垃圾收集分两大块内容:

    新生代垃圾收集、老年代垃圾收集

    两者各有特性,在新生代内存中,大部分对象朝生夕死,GC的垃圾回收算法大多为复制算法

    老年代内存中对象的存活率较高,古选择标记-整理、标记-清除算法较多

    新生代收集器有三款:

    Serial收集器、ParNew收集器、Parallel Scavenge收集器

    Serial:是一款单线程的收集器,它工作时,会停止其他的工作线程,直到它收集结束;
      它是虚拟机在Client模式下的默认选择
    ParNew:是Serial的升级版,不同之处在于,它工作时会使用多条线程并行处理垃圾收集;
      可以使用参数-XX:+UseParNewGC强制指定使用ParNew垃圾收集器
      在使用参数-XX:+UseConcMarkSweepGC后,默认的新生代收集器就是ParNew
    Parallel Scavenge:是一款新生代的垃圾收集器,也使用复制算法,也是并行的多线程收集器;其侧重点和ParNew略有不同,ParallelScavenge的目标是达到可控的吞吐量(吞吐量=运行代码时间/(运行代码时间+垃圾收集时间));提高吞吐量则可以提高CPU的利用率,能尽快的完成运算任务,它适合在后台运算而不需要太多交互的任务;
      它使用两个参数精确控制吞吐量:-XX:MaxGCPauseMillis(控制最大停顿时间,单位是毫秒)、-XX:GCTimeRatio(控制吞吐量大小,范围是0~99,含义是垃圾收集时间占总时间的比率,默认值为1)
      它的-XX:+UseAdaptiveSizePolicy参数开启后,虚拟机会根据当前系统运行情况,动态调整选择最合适的停顿时间或者最大的吞吐量

    老年代收集器也有三款:

    CMS、Serial Old(MSC)、Parallel Old

    CMS:它的目标是使老年代的垃圾回收停顿时间尽可能的缩短,垃圾收集使用标记-清除的算法,可以配合Serial、ParNew这两个新生代收集器使用
    Serial Old:是Serial收集器的老年代版本,也是一个单线程的收集器,使用的是标记-整理算法
      它的用途,主要给client模式下的虚拟机使用;在jdk1.5版本之前,配合Parallel Scavenge新生代收集器使用;也是CMS的备用方案,当出现Concurrent Mode Failure时,CMS会切换为Serial Old模式
    Parallel Old:它是Parallel Scavenge的老年代版本,也是并行的多线程收集器,使用的是标记-整理算法,在关注吞吐量和CPU资源敏感的场合,可以优先考虑Parallel Scavenge|Old的组合
  • 相关阅读:
    Caused by: org.xml.sax.SAXParseException: The content of elements must consist of well-formed charac
    java反射方法
    错误解决:There is no getter for property named 'id' in class 'java.lang.String'
    java的AOP
    Java预置的注解
    mysql 数据库自动备份
    微信小程序
    关于 IOC和spring基本配置详解
    关于Spring配置的一些东西
    关于Spring的一点东西
  • 原文地址:https://www.cnblogs.com/wslio/p/12055972.html
Copyright © 2011-2022 走看看