展会信息港展会大全

JVM垃圾收集器使用调查:CMS最受欢迎
来源:互联网   发布日期:2013-12-2   浏览:594次  

导读:近日,Plumbr公司对特定垃圾收集器(GC)使用情况进行了一次调查研究。 本次研究的数据来自代表2670个不同使用环境的84936个案例。其中,13%的环境已经明确指定了一个垃圾收集器,其余的根据JVM而定。在指定了明确垃圾收集器的11062个案例中,根 ......

近日,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个环境使用了它。这里提示下大家,在并发阶段,垃圾收集器线程会使用一个或多个处理器。增量式垃圾收集器是通过一定的回收算法,把一个长时间的中断,划分为很多个小的中断,以减少垃圾收集器对用户程序的影响。

研究中还有一个结果就是G1的采用率,有826个环境使用了该种垃圾收集器。但同等条件来讲,G1比CMS性能表现会差一些。

Java相关技巧资讯

JavaScript事件模型使用技巧

Oracle发布Java 8正式版及JDK 8

2013最吃香的技能:Java称霸、Android势头正猛

Java开源日志框架大比拼

增进离岸Java开发效率的十个提示

Java性能优化的最差实践

通过高效Java继承优化应用开发时间

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

OSGi中的服务模型与扩展者模型

Ceylon 1.0发布:又一个“Java语言替代品”?

Eclipse中隐藏的5个非常有用的功能

讨论:Java的发展趋势向好向坏?

五款工具助你写出更好的Java代码

JAVA基础:为Web服务构建Struts应用程序(一)

JDK 8u40更新:新增功能抢先看

前无古人后无来者的Java平台

2014 Angular JS是否要让位于Docker?

掌握基础的Java信息传送理念

如何定义Java组件实施?

Java百万富翁的诞生:Liferay和OSGi市场帮大忙?

采用模块化设计 官方发布Java 9新特性

java可以同时开发安卓和java

Java模块化项目Jigsaw能否重回正轨?

解读Java SE 8在并发工具方面的加强

NetBeans 8发布:支持Java 8、HTML5

Java 8那些被冷落的新特性

Java 外部函数接口

JAVA基础:为Web服务构建Struts应用程序(二)

JAVA基础:为Web服务构建Struts应用程序(三)

JAVA基础:为Web服务构建Struts应用程序(四)

JAVA基础:为Web服务构建Struts应用程序(五)

JAVA基础:为Web服务构建Struts应用程序(六)

比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket(二)

比较JSF、Spring MVC、Stripes、Struts 2、Tapestry、Wicket(一)

WSO2新Web服务框架

JNBridge 5.0将发布 新增Java与.Net的跨平台交易

浅谈Eclipse寻找JVM(JRE)的顺序机制

JVM参数调优实例解析

谷歌App Engine上应用Java尚不成熟

Spring Java云虚拟化之旅起航

Oracle动作频频 Java或浴火重生

有趣的Java对象序列化缓存问题

Java规范第二次面临分裂危机

Oracle的加减法 Java的乘除法

重建Java生态系统 Oracle时代的冲突与联盟

Scala不是改良的Java

你应该学习jQuery的七大理由

Google高管炮轰Java和C++过于复杂

短讯:Eclipse崩溃!甲骨文欲改Java公司名称

Java内存管理技巧

值得研究的J2EE开源项目推荐

Java的创新空间 向企业应用进军

JavaOne新闻播报:Java和OpenJDK

Java陷阱

Java难因IBM的互博妥协而前途明朗

2011年Java展望:新的开始 新的征途

Java开发者的十大戒律

如何在JSF 2.0中用faces-config.xml设置混合注释?

Google App Engine上Java 应用性能优化

Java:企业应用开发的死路?

Integer.getInteger你在逗我玩吗?

Java web服务:理解WS-Policy

2010年IT薪酬报告:Java等技术最赚钱

从追MM谈Java的23种设计模式

Oracle发布Java移动开发框架ADF

Java中关于异常处理的十个最佳实践

大繁即大简:复杂软件编程归结于命令式编程

Java快速编程五大技巧

固步只会自封:遗忘命令式编程 拥抱面向对象

细数Java性能九大谬论

备选JVM语言:Scala的阐述

Java代码库模块化有助于管理遗留应用程序

Java 18岁:是正值花季 还是已经迟暮?

Java枚举类型简化软件开发流程

Java程序员在写SQL程序时候常犯的十个错误

原文出处:http://www.csdn.net/article/2013-11-29/2817660-study-about-jvm-garbage-collector

赞助本站

人工智能实验室

相关热词:

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港