深入理解JVM3 - 垃圾收集器1

之前说到的垃圾收集算法是内存回收的方法论,那么现在所说的垃圾收集器则是内存回收的具体实现。Java虚拟机规范对于垃圾收集器的实现没有任何规定,因此不同厂商,不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合各个年代所使用的收集器。

HotSpot虚拟机的垃圾收集器
  • Serial收集器
    Serial收集器是最基本、发展历史最悠久的收集器,曾经是虚拟机新生代收集的唯一选择。Serial收集器是一个单线程的收集器,不仅只会使用一个CPU和线程,而且在垃圾收集的时候会暂停其他所有的工作线程,直到它收集结束。这就是所谓的“Stop The World”,在用户不可见的情况下把用户正常工作的线程全部停掉,这对很多应用来说可能都是难以接受的。但是Serial收集器有着简单高效的优点,对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率。目前Serial收集器主要运行在client模式的Java虚拟机中。用于收集新生代的内存。


    Serial收集器运行过程
  • ParNew收集器
    ParNew收集器是Serial收集器的多线程版本,除了使用多条线程进行垃圾收集之外,其余行为包括Serial收集器可用的所有控制参数、收集算法、Stop The World、对象分配规则、回收策略都与Serial收集器完全一样。

ParNew收集器工作流程

目前ParNew收集器是运行在Server模式下虚拟机的首选新生代垃圾收集器。

  • Parallel Scavenge收集器
    Parallel Scavenge收集器是一个新生代收集器,它也是使用复制算法的收集器,又是并行的多线程收集器,特点是Parallel Scavenge收集器目标是达到一个可控制的吞吐量(Throughput),而其他收集器的关注点则是尽可能的减少垃圾收集时用户线程的停顿时间。吞吐量就是CPU用户运行用户代码的时间与CPU总消耗时间的比值,即 吞吐量 = 运行用户代码时间 / (运行用户代码时间+ 垃圾收集时间)。停顿时间越短就越适合需要与用户交互的程序,具有良好的响应速度,能够提升用户体验;而高吞吐量则可以高效率的利用CPU时间,尽快完成程序的运算任务,主要适合在后台运算而不太需要交互的任务。

  • Serial Old收集器
    Serial Old是Serial收集器的老年代版本,它同样是一个单线程收集器,使用标记-整理算法。主要意义还是给Client模式下的虚拟机使用。


    Serial Old收集器工作流程
  • Parallel Old收集器
    Parallel Old是Parallel Scavenger收集器老年代版本,使用多线程和标记整理算法。该收集器从JDK 1.6开始提供,再次之前新生代的Parallel Scavenger收集器一直处于比较尴尬的状态。原因是如果新生代是Parallel Scavenger收集器,则老年代除了Serial Old之外别无选择,因为Parallel Scavenger收集器和CMS收集器(之后会介绍该收集器)无法配合工作。由于Serial Old在服务端性能上的“拖累”,使用了Parallel Scavenger收集器也未必能获得最大化的吞吐量。单线程的Serial Old收集器无法利用服务器端多CPU的处理能力,导致吞吐量不佳。而Parallel Old出现后,就可以和Parallel Scavenger收集器搭配使用,使用与注重吞吐量以及CPU资源敏感的场合。


    Parallel Old收集器
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容