`

垃圾回收器的分类

阅读更多
基础:
串行收集器:
DefNew:是使用-XX:+UseSerialGC(新生代(Serial收集器),老年代(Serial Old收集器)都使用串行回收收集器)
并行收集器:
-XX:+UseParNewGC(新生代使用并行收集器(ParNew收集器),老年代使用串行回收收集器(Serial Old))

-XX:+UseConcMarkSweepGC(新生代使用多线程收集器,老年代->CMS)。
-XX:+UseParallelOldGC(新生代,老年代都使用并行回收收集器)

-XX:+UseParallelGC(新生代使用并行回收收集器,老年代使用串行收集器)

garbage-first heap:是使用-XX:+UseG1GC(G1收集器)


搭配:

Serial收集器-年轻代
http://book.51cto.com/art/201107/278913.htm

[GC [DefNew:1986K->128K(2112K), 0.0011191 secs] 27809K->27808K(30528K), 0.0011425secs] [Times: user=0.00 sys=0.01, real=0.00 secs]
这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程(Sun将这件事情称之为“Stop The World”),直到它收集结束。
优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率
缺点:停顿时间长



ParNew收集器-年轻代

[GC [ParNew:1990K->132K(2112K), 0.0007742 secs] 24112K->24110K(30528K), 0.0007964secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

ParNew收集器除了多线程收集之外,其他与Serial收集器相比并没有太多创新之处,但它却是许多运行在Server模式下的虚拟机中首选的新生代收集器,其中有一个与性能无关但很重要的原因是,除了Serial收集器外,目前只有它能与CMS收集器配合工作。



CMS收集器
参数设置:-Xms30m -Xmx60m-Xmn10m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails

它运行在JAVA虚拟机的老年代中。
CMS收集器是基于“标记-清除”算法实现的

优点:并发收集、低停顿
缺点:因为占用了一部分线程(或者说CPU资源)而导致应用程序变慢,总吞吐量会降低,对CPU资源非常敏感,无法处理浮动垃圾,收集结束会产生大量空间碎片。

在并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行的


[GC [ParNew: 9112K->9112K(9216K), 0.0000185 secs][CMS: 47728K->51175K(51200K), 0.0184446 secs] 56840K->56814K(60416K), [CMS Perm : 2086K->2085K(12288K)], 0.0185255 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]

http://blog.csdn.net/ffm83/article/details/42874653
http://book.51cto.com/art/201107/278920.htm

Parallel Scavenge收集器-年轻代

Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值

停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户的体验;而高吞吐量则可以最高效率地利用CPU时间,尽快地完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。


Parallel Scavenge收集器还有一个参数-XX:+UseAdaptiveSizePolicy值得关注。这是一个开关参数,当这个参数打开之后,就不需要手工指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomics)

自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。
2016-03-29T21:20:53.647+0800: 100078.239: [GC [PSYoungGen: 421996K->4820K(567040K)] 1602649K->1187158K(1965184K), 0.0126840 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]


Parallel Old收集器-老年代
Parallel Old收集器是JAVA虚拟机中垃圾收集器的一种。和Serial Old收集器一样,工作在JAV虚拟机的老年代。这种垃圾收集器使用多线程和“标记-整理”算法。

在注重吞吐量及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器。

[Full GC [PSYoungGen:3394K->3394K(6848K)] [ParOldGen: 50728K->50728K(51200K)]54122K->54122K(58048K) [PSPermGen: 2084K->2084K(12288K)], 0.0071480 secs][Times: user=0.00 sys=0.00, real=0.01 secs]



PSYoungGen     total 6848K, used 3456K [0x0ad30000, 0x0b730000, 0x0b730000)
eden space 3456K, 100% used [0x0ad30000,0x0b090000,0x0b090000)
from space 3392K, 0% used [0x0b090000,0x0b090000,0x0b3e0000)
to   space 3392K, 0% used[0x0b3e0000,0x0b3e0000,0x0b730000)
ParOldGen      total 51200K, used 51176K [0x07b30000, 0x0ad30000, 0x0ad30000)
PSPermGen      total 12288K, used 2105K [0x03b30000, 0x04730000, 0x07b30000)
ParOldGen表示是Parallel old在老年代进行回收;


Serial Old收集器-老年代
老年代
serial Old收集器是串行的进行垃圾回收
[GC [DefNew: 9108K->966K(9216K),0.0049332 secs][Tenured: 46824K->46893K(46920K), 0.0033687 secs] 47800K->47790K(56136K),[Perm : 2086K->2086K(12288K)], 0.0084489 secs] [Times: user=0.02 sys=0.00,real=0.01 secs]

Tenured表示是 serial old在老年代进行回收
分享到:
评论

相关推荐

    垃圾回收器分类1

    垃圾回收器是实现这一机制的具体策略,本篇文章将详细介绍几种常见的垃圾回收器。 一、串行垃圾回收器 串行垃圾回收器采用单线程执行GC,因此在垃圾回收过程中,整个应用会被暂停,这种模式被称为"Stop-the-World...

    垃圾回收分类查询平台微信小程序端

    【垃圾回收分类查询平台微信小程序端】是一款基于JavaScript开发的微信小程序应用,旨在提供便捷的垃圾分类查询服务。这款小程序能够帮助用户快速识别不同类型的垃圾,提高环保意识,推动垃圾分类的普及。通过微信小...

    JVM之垃圾回收器

    3. **垃圾回收器分类** - **Serial GC**:单线程的垃圾回收器,适用于小型应用和低CPU环境。新生代采用复制算法,老年代采用标记-整理算法。 - **Parallel GC**:多线程版本的Serial GC,提升了垃圾回收的效率,但...

    互联网垃圾分类回收系统小程序全套源代码

    通过互联网技术改造传统的垃圾回收模式,该项目的具体目标如下:解决居民通过传统手段找不到废品回收处理人员的烦恼;优化传统废品回收的流程,提高废品回收过程的处理速度;发布垃圾分类回收相关知识,提高居民的...

    垃圾分类回收小程序Demo

    【垃圾分类回收小程序Demo】是一款基于移动端的应用程序,旨在提高公众对垃圾分类的认识并推动垃圾的有效回收。这款小程序的主要功能包括垃圾分类展示、相关信息文章的列表展示、文章详情查看以及发布回收请求等,为...

    基于STM32单片机的垃圾分类回收监测系统设计.rar

    《基于STM32单片机的垃圾分类回收监测系统设计》 在当今社会,随着环保意识的日益增强,垃圾分类与回收已成为全球关注的重要议题。而基于STM32单片机的垃圾分类回收监测系统,正是科技进步与环保理念相结合的产物,...

    基于STM32单片机的垃圾分类回收监测系统设计.pdf

    通过对STM32单片机和ZigBee无线通信技术的应用,垃圾分类回收监测系统能够实现垃圾站点的智能化管理,提高垃圾处理的效率和准确性,同时减轻环卫工人的劳动强度,优化垃圾回收的流程。这不仅对环境保护有着积极的...

    jvm垃圾回收机制总结

    2. ParNew GC:Serial GC的多线程版本,常与CMS(Concurrent Mark Sweep)垃圾回收器配合使用,主要负责新生代的垃圾回收。 3. Parallel GC:与ParNew类似,但适用于老年代,同样采用多线程。 4. CMS GC:并发标记...

    垃圾回收仿真分析

    系统的核心是一个垃圾回收站,它接收各类垃圾,如铁铝罐、保特瓶和塑料,然后对这些垃圾进行分类存储。回收站的工作流程包括垃圾的到达、分拣、运输和储存。垃圾到达的时间间隔遵循正态分布,分拣过程则服从指数...

    SSM的垃圾分类回收平台.zip

    3. 垃圾投放点查询:显示附近的垃圾回收站位置,方便用户找到最近的投放点。 4. 回收预约:用户可以预约上门回收服务,减少不必要的出行。 5. 积分系统:根据用户投放垃圾的数量和质量,给予积分奖励,激励用户积极...

    理解垃圾回收器.pdf

    因此,了解垃圾回收器的工作原理、分类、优缺点以及如何调优它们,对于Java开发人员而言是至关重要的。 垃圾回收的主要目的是为了解决内存泄漏和非法内存访问的问题。Java中的垃圾回收机制是在对象不再被程序引用时...

    以逆物流角度看垃圾分类回收.doc

    总的来说,逆物流角度下的垃圾分类回收是一项系统工程,涉及政策制定、公众教育、技术支持和市场机制等多个层面。我国在这一领域仍有很大提升空间,需要加强垃圾分类教育,完善法规制度,提高回收设施的覆盖率,并...

    bbs.rar,关于垃圾回收分类django框架的应用,

    在本项目“bbs.rar”中,我们关注的是如何利用Django框架来实现一个垃圾回收分类的Web应用。Django是一个高效且强大的Python Web开发框架,它提供了完整的解决方案,包括模型设计、数据库交互、URL路由、视图处理...

    互联网+垃圾分类回收智能化发展模式探究.docx

    对于政府,需要统一协调智能化垃圾分类回收的发展,简化分类方式,强化宣传教育,设立有效的激励机制,确保法规执行,提高环保部门的工作透明度。 综上所述,互联网+垃圾分类回收的智能化发展模式为解决城市垃圾...

    数学建模校赛A题 垃圾分类.docx

    引入市场化机制,鼓励企业参与垃圾处理和资源回收。 2. 农村:考虑到农村实际情况,可推行适应性强、操作简单的分类模式,如厨余垃圾与其他垃圾两类;利用本地资源,发展小型化、分散化的处理设施;推广生态农业,...

    基于PLC的生活垃圾回收存放装置设计.pdf

    针对生活垃圾回收存放装置设计,本文档介绍了以PLC(Programmable Logic Controller,可编程逻辑控制器)为核心的控制系统设计,这对于现代生活垃圾处理系统的设计具有重要意义。以下是根据文档内容总结的详细知识点...

    C++实现的垃圾回收管理类

    1. **内存注册**:当分配新的动态内存时,将其注册到垃圾回收器中,记录分配的内存地址和大小。 2. **对象关联**:将分配的内存与使用它的对象关联起来,以便在对象析构时可以追踪其使用的内存。 3. **引用计数**...

    c++垃圾回收源代码

    3. **垃圾回收器设计**:设计一个垃圾回收器需要考虑如何追踪对象的可达性,确定哪些对象可以被安全地回收。这可能包括跟踪对象间的引用关系,使用标记-清除、复制、标记-整理或分代等算法。 4. **自定义new和...

    垃圾回收物流仿真系统设计

    10. **政策与法规**:垃圾回收物流仿真系统的设计还必须考虑当地的法规和政策,例如垃圾分类要求、排放标准和运营许可。 通过以上知识点,垃圾回收物流仿真系统设计不仅有助于提高城市环境卫生管理水平,还能促进...

Global site tag (gtag.js) - Google Analytics