文章目录

  • Serial垃圾收集器
      • 优点
      • 缺点:
    • 应用场景
  • ParNew垃圾收集器
    • 应用场景
    • 参数
  • Parallel scavenge垃圾收集器
    • 主要特点
    • 使用场景

Serial垃圾收集器

Serial是单线程垃圾回收器,当需要执行垃圾回收时,程序会暂停一切工作,然后单线程执行垃圾回收.

单线程的好处就是减少上下文切换,减少系统开销.但是这种方式的缺点也很明显,在GC的过程中,会暂停程序执行. 若GC发生不频繁可以选这个. 对于新声代来说,区域比较小,停顿时间短.

优点

  • 简单高效,是Client模式下默认的垃圾收集器;
  • 对于资源受限的环境,比如单核(例如Docker中设置单核),单线程效率较高;
  • 内存小于一两百兆的桌面程序中,交互有限,则有限的STW是可以接受的。

缺点:

  • 垃圾回收速度较慢且回收能力有限,频繁的STW会导致较差的使用体验。

应用场景

  • 是HotSpot在Client模式下默认的新生代垃圾收集器
  • 在用户的桌面应用场景中,可用内存一般不大(几十M至一两百M),可以在较短时间内完成垃圾收集(几十MS至一百多MS),只要不频繁发生,这是可以接受的

ParNew垃圾收集器

ParNew同样用于新生代,是Serial的多线程版本,并且在参数,算法(同样的复制算法)和Serial相同.

Par是Parallel的缩写,多线程的意思,但是这里的多线程仅仅指垃圾收集多线程并行,并不是垃圾收集和程序并行运行.ParNew也需要暂停一切工作,然后多线程并行垃圾收集.

因为是多线程执行,所以在多CPU环境下,效率比Serial高,但是在单CPU环境下,因为线程切换,反而性能比较差.

应用场景

在Server模式下,ParNew是一个非常重要的收集器,因为除Serial外,目前只有ParNew与CMS收集器配合工作.

参数

  • “-XX:+UseConcMarkSweepGC”:指定使用CMS后,会默认使用ParNew作为新生代收集器;
  • “-XX:+UseParNewGC”:强制指定使用ParNew;
  • “-XX:ParallelGCThreads”:指定垃圾收集的线程数量,ParNew默认开启的收集线程与CPU的数量相同;

Parallel scavenge垃圾收集器

Parallel scavenge是一个新生代垃圾收集器,它是用复制算法的垃圾收集器,又是多线程并行的垃圾收集器,和ParNew类似.吞吐量优先的垃圾收集器,是Java1.8默认的新生代垃圾收集器.

主要特点

Parallel scavenge收集器的目标是达到一个可控的吞吐量,(吞吐量=运行用户代码时间/(运行用户代码时间+垃圾收集时间))

使用场景

Parallel scavenge收集器的高吞吐量可以最高效率的利用CPU,尽快的完成程序的运算任务,主要适合后台运算而不是太多交互的任务(太多交互的任务,适合用响应时间优先的CMS垃圾收集器)

Parallel scavenge可以精确控制吞吐量,通过两个参数:控制最大垃圾收集停顿时间-XX:MaxGCPauseills,设置吞吐量大小-XX:GCTimeRatio(GCTimeRatio的默认值为99,因此,GC耗时的占比应为1/(1+99)=1%。使用参数的理论效果:GCTimeRatio越大,吞吐量越大,GC的总耗时越小。有可能导致单次MinorGC耗时变长。适用于高运算场景). 它还可以用-XX:+UseAdaptiveSizePolicy参数进行自适应调节(GC Ergonomics),打开后会JVM会根据当前的运行状况动态调整最适合的吞吐量,配合前面两个参数更好.

JVM常用新生代垃圾收集器相关推荐

  1. JVM之历代垃圾收集器详解

    JVM之历代垃圾收集器讲解 总览 分类 并行和并发 年轻代垃圾回收器 Serial收集器 特点 优点 缺点 PartNew收集器 特点: Parallel Scavenge收集器 特点 老年代垃圾回收 ...

  2. 四种常用的垃圾收集器

    对于垃圾收集器做个小总结: 垃圾回收器从线程运行情况分类有三种 串行回收,Serial回收器,单线程回收,全程stw: 并行回收,名称以Parallel开头的回收器,多线程回收,全程stw: 并发回收 ...

  3. Java垃圾回收器(一)新生代垃圾收集器

    一.概述 新生代与老年代进行垃圾回收时,会使用不同的垃圾回收期.这里举出常用的垃圾回收器.如图: 基本概念与关键点 1:常见的垃圾 回收器有上面七种 Serial.ParNew.ParallerSca ...

  4. jvm七种垃圾收集器

    JVM_七种垃圾收集器介绍 本文中的垃圾收集器研究背景为:HotSpot+JDK7 一.垃圾收集器概述 如上图所示,垃圾回收算法一共有7个,3个属于年轻代.三个属于年老代,G1属于横跨年轻代和年老代的 ...

  5. JVM探秘:垃圾收集器

    本系列笔记主要基于<深入理解Java虚拟机:JVM高级特性与最佳实践 第2版>,是这本书的读书笔记. 垃圾收集器 烟雨红尘 https://wap.zuxs.net/ 垃圾收集算法是是内存 ...

  6. JVM之G1垃圾收集器

    一.概述: G1(Grabage-First)是一款面向服务端应用的垃圾收集器,主要针对配备多核cpu及大容量内存的机器,以及高概率满足GC停顿时间的同时,还兼顾高吞吐量的的性能特征 在JDK1.7版 ...

  7. Java新生代垃圾收集器

    Stop-the-World JVM由于要执行GC而停止了应用程序的执行 任何一种GC算法中都会发生 多数GC优化通过减少Stop-the-World发生的时间来提高程序性能 Safepoint 分析 ...

  8. 【深入理解JVM】CMS垃圾收集器

    GC 问题处理能力能不能系统性掌握?一些影响因素都是互为因果的问题该怎么分析?比如一个服务 RT 突然上涨,有 GC 耗时增大.线程 Block 增多.慢查询增多.CPU 负载高四个表象,到底哪个是诱 ...

  9. 聊聊JVM中那些垃圾收集器

    垃圾收集算法是内存回收的方法论,垃圾收集器是内存回收的具体实现.Java虚拟机规范中对垃圾收集器应该如何事先并没有任何规定,故而不同厂商.不同版本的虚拟机所提供的垃圾收集器可能会有很大差别.本文分享的 ...

最新文章

  1. 网络空间安全Windows系统命令行学习笔记
  2. PCL 点云特征描述与提取
  3. 2011年春季 软件项目管理 实验安排
  4. java basic认证_Basic认证
  5. N皇后问题位运算符解法【转载】
  6. ZOJ1004 DFS基础
  7. JSP 页面 嵌入 google API 地图
  8. @@HOW TO:检查 MDAC 版本
  9. 测试类写法以及几种常用方式
  10. Opencv官方样例图片下载
  11. matlab应用书pdf下载,MATLAB及Mathematica软件应用 pdf epub mobi txt 下载
  12. java 某字段重复的数据库,excel表格两个字段去重复的数据库【用JAVA程序向SQL数据库导入Excel表,判断出SQL表中已存在的重复数据,并跳过重复的继续导入其他记录.】...
  13. springboot 内存参数 启动
  14. 2017-2018 中国人工智能产业路线图
  15. 因违反《竞业协议》,三年白忙活了!赔偿 97.6 万元,返还 15.8 万元
  16. 不用重做系统,教你如何把机械硬盘上面的系统迁移到固态硬盘!
  17. 纯CSS响应式的总结
  18. 百度:自动驾驶出租车服务在北京全面开放!人工智能牛
  19. 【金融财经】金融市场一周简报(2017-12-01)
  20. laravel-excel使用3(老猫包子店的故事)

热门文章

  1. ListView提示和技巧
  2. 在板子上电后自动运行程序
  3. gtkterm ubuntu下好用的串口工具使用心得-转
  4. L2-035 完全二叉树的层序遍历 (25 分)-PAT 团体程序设计天梯赛 GPLT
  5. 蓝桥杯 ALGO-110 算法训练 字符串的展开
  6. oracle ssl jdbc 架构,我与数据库的JDBC连接是否使用SSL?
  7. angularjs过滤器(number)
  8. 怎么让Excel按某一列的数值来排序?
  9. MySQL如何用一条SQL将一张表里的数据插入到另一张表
  10. 区分元素特性attribute和对象属性property