`
xp9802
  • 浏览: 1204221 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

JVM垃圾收集器使用调查:CMS最受欢迎_

    博客分类:
  • JVM
阅读更多

摘要:近日,Plumbr公司对特定垃圾收集器使用情况进行了一次调查研究,研究数据使用了84936个案例。在明确指定垃圾收集器的13%的案例中,并发收集器(CMS)使用次数最多;但大多数案例没有选择最佳垃圾收集器。

近日,Plumbr公司对特定垃圾收集器(GC)使用情况进行了一次调查研究。

本次研究的数据来自代表2670个不同使用环境的84936个案例。其中,13%的环境已经明确指定了一个垃圾收集器,其余的根据JVM而定。在指定了明确垃圾收集器的11062个案例中,根据每个垃圾收集器使用的统计次数,研究人员做出了下面的垃圾收集器使用比例统计饼图:

 

各垃圾收集器使用比例统计饼图

 

名词解释

  • Serial:串行收集器,当进行垃圾收集时,会暂停所有线程
  • Parallel:并行收集器,是串行收集器的多线程版本,多CPU下
  • ParallelOld:老年代的Parallel版本
  • ConcMarkSweep:简称CMS,是并发收集器,将部分操作与用户线程并发执行
  • CMSIncrementalMode:CMS收集器变种,属增量式垃圾收集器,在并发标记和并发清理时交替运行垃圾收集器和用户线程
  • G1:面向服务器端应用的垃圾收集器,计划未来替代CMS收集器

87%的案例没有指定垃圾收集器

在解释垃圾收集器使用情况的详情之前,我们先看下其他87%的案例为什么没有出现在上面的饼图中。从研究结果来看,有2个不同的原因导致了该情况的出现:

  • JVM对于默认情况的处理十分合理,开发人员无需指定垃圾收集器
  • 对部分团队来说,程序性能可能优先级不高,致使没有指定垃圾收集器

所以,研究团队没有采用使用默认垃圾收集器的JVM案例。话又说回来,默认的垃圾收集器又是什么呢?这个问题既简单又复杂。如果你运行在JVM的客户端模式(Client)下,JVM默认垃圾收集器是串行垃圾收集器(Serial GC,-XX:+USeSerialGC);在JVM服务器模式(Server)下默认垃圾收集器是并行垃圾收集器(Parallel GC,-XX:+UseParallelGC)。至于是运行在JVM的客户端模式还是服务器模式,取决于下面情况:

 

JVM客户端/服务器模式

 

大多数案例没有做出最佳选择

让我们回到已经明确指定垃圾收集器的13%的案例,但仅有一小部分用户的决策是按照上述表格中的建议进行的。据统计,只有31个案例根据自己的机器性能选择了最佳的串行垃圾收集器,考虑到当前服务大多运行在多核服务器上,这个可以理解。  

 

垃圾收集器使用次数统计

我们从上图可以看出,Parallel(并行)和ParallelOld使用次数很接近。如果觉得并行模式这一新生代收集器更符合你的需求,那就选择它。从第一张表格中我们也可以看出,并行垃圾收集器(Parallel)已经是大多数平台的默认选择。从这个方面讲,如果没有指定明确的垃圾收集器,也并不意味着默认使用的垃圾收集器不流行。

说到CMSIncrementalMode的使用情况,只有935个案例使用了该种垃圾收集器,相比而言,经典的CMS(ConcMarkSweep)则有6655个环境使用了它。这里提示下大家,在并发阶段,垃圾收集器线程会使用一个或多个处理器。增量式垃圾收集器是通过一定的回收算法,把一个长时间的中断,划分为很多个小的中断,以减少垃圾收集器对用户程序的影响。
分享到:
评论

相关推荐

    tomcat 启动:Address already in use: JVM_Bind <null>:8080

    Tomcat 启动报错解决方案 Tomcat 是一个流行的开源 Web 服务器,可以运行 Java 语言编写的 Web ...通过使用命令“netstat -ano”和任务管理器,我们可以找到占用端口 8080 的进程,并将其结束,从而释放端口 8080。

    深入理解JVM垃圾收集算法与垃圾收集器

    深入理解JVM垃圾收集算法与垃圾收集器

    直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景

    Java虚拟机(JVM)的垃圾收集器是自动管理内存的重要组成部分,负责识别不再使用的对象并释放它们所占用的内存,以防止内存泄漏。垃圾收集器的选择和配置对应用程序的性能有着显著影响,特别是在处理大规模数据和高...

    7种JVM垃圾收集器特点-优劣势-及使用场景.pdf

    Serial垃圾收集器是最基本的垃圾收集器,它使用单线程来进行垃圾收集工作。Serial垃圾收集器适用于客户端应用程序,具有较小的内存占用和快速的垃圾收集速度。但是,Serial垃圾收集器在Server模式下性能较差,且在多...

    04-VIP-JVM垃圾收集器详解1

    在Java世界中,JVM垃圾收集器是内存管理的重要组成部分,负责自动回收不再使用的对象,以释放内存空间。垃圾收集器的选取并非一成不变,而是需要根据具体应用的需求和环境来定制。本文将详细解析几种常见的JVM垃圾...

    JVM垃圾收集器全面详解

    Java虚拟机(JVM)是Java程序运行的基础,它的核心组成部分之一就是垃圾收集器(Garbage Collector, GC)。本文将全面解析JVM中的七种垃圾收集器,分析它们的特性和适用场景,帮助开发者理解如何优化Java应用的内存...

    java.net.BindException: Address already in use: JVM_Bind :8088(端口冲突)

    在myeclipse中将html文件改成jsp文件时myeclipse卡住;将之前的任务关掉;再打开时多次部署项目的时候报错

    JVM入门实战/arthas实战/垃圾回收算法/垃圾回收器/jvm内存模型分析

    1.5CMS(Current Mark Sweep)收集器 1.6G1收集器 第六节:JVM参数调优 1.1 JVM重要参数介绍 1.2JVM参数调优 1.3JVM参数设置思路1.4JVM调优常用指令说明 第七节:JVM项目实战 1.1案例背景 1.2排查步骤 1.3....

    JVM初探- 内存分配、GC原理与垃圾收集器

    最后,JVM中提供了多种垃圾收集器,如Serial、Parallel、CMS、G1等,每种收集器都有其适用的场景和特点。例如,Serial收集器是单线程的,适用于小内存环境;而CMS(Concurrent Mark Sweep)收集器是追求低停顿时间的...

    JVM面试资料:JVM结构、JVM调优、四大垃圾回收算法、七大垃圾回收器

    JVM面试资料。 JVM结构:类加载器,执行引擎,本地方法接口,本地内存结构;...七大垃圾回收器:Serial、Serial Old、ParNew、CMS、Parallel、Parallel Old、G1 JVM调优:命令行指令,设置堆内存大小的参数

    漫谈Java垃圾收集器.pdf

    Java垃圾收集器是Java虚拟机(JVM)中的一种自动内存管理机制,旨在释放程序员从手动内存管理的繁琐工作中解脱出来。垃圾收集器通过跟踪对象的引用关系,确定哪些对象是可以被释放的,然后将其回收,以避免内存泄露...

    JVM垃圾收集器详解

    【JVM垃圾收集器详解】 Java虚拟机(JVM)中的垃圾收集器是负责自动管理内存,特别是Java堆和方法区中的对象实例。它的主要任务是识别并清理不再使用的对象,以便释放内存资源。垃圾收集涉及到三个核心问题:确定...

    JVM中CMS收集器1

    CMS(Concurrent Mark Sweep)收集器,全称为"Mostly Concurrent Mark and Sweep Garbage Collector",是Java虚拟机(JVM)中一种旨在减少老年代(Old Generation)垃圾回收时停顿时间的并发垃圾收集器。它采用了...

    CMS垃圾收集器1

    CMS垃圾收集器是一种Java虚拟机(JVM)的老年代垃圾收集器,它的主要目标是减少垃圾收集时的停顿时间,以提供更优秀的响应速度,适合于需要低延迟且CPU资源充足的服务器应用。CMS基于“标记-清除”算法,这意味着它...

    jvm性能调优-垃圾收集器parnew&CMS底层三色标记算-performance-gc-parnew-cms.zip

    在Java虚拟机(JVM)中,垃圾收集(GC)是自动管理内存的重要部分,它负责识别并清除不再使用的对象,以防止内存泄漏。本文将深入探讨两个重要的垃圾收集器——ParNew和Concurrent Mark Sweep (CMS) ——以及它们在...

    61-JVM之CMS收集器与G1收集器1

    本篇文章主要探讨的是两种高级垃圾收集器:CMS(Concurrent Mark Sweep)收集器和G1(Garbage-First)收集器。 CMS收集器以最小化应用程序停顿时间为目标,适用于对响应时间要求严格的互联网或B/S系统服务端。它...

    JvmGC收集器

    在 Java 虚拟机中,GC(Garbage Collection)收集器是 JVM 的一个重要组件,它负责回收 Java 应用程序中的垃圾对象,从而维持应用程序的性能和可靠性。JvmGC 收集器是 JVM 中的三个主要 GC 收集器之一,分别是 ...

    JVM垃圾回收机制

    JVM提供了多种垃圾收集器,针对不同场景进行优化。典型的垃圾收集器包括: - 新生代Serial收集器:这是一个单线程的收集器,它进行垃圾回收时会暂停其他所有线程,适用于单核处理器或小内存环境。 - ParNew收集器...

    jvm_gc.rar_jvm_垃圾回收

    4. **垃圾收集器**:不同的JVM版本提供了不同的垃圾收集器,如Serial、Parallel、CMS(并发标记扫描)、G1(垃圾优先)等。每种收集器有不同的性能特点和适用场景。 5. **GC日志分析**:通过分析JVM产生的GC日志,...

Global site tag (gtag.js) - Google Analytics