jvm垃圾收集器

默认垃圾收集器

jdk9之前:serial  +  serial old

jdk9及之后:G1

Serial

HotSpot新生代默认回收器

1.只能单线程回收  标记-复制算法

2.再回收时需要“Stop the world”

3.回收效率高,所有线程都停下来知道垃圾回收回收完

ParNew

是Serial的并行版本

1.标记-复制

2.多条回收线程并行,但是回收线程和用户线程不能并行

3.需要“stop the world”

Parallel Scavenge

1.标记 - 复制

2.多线程并行 需要“stop the world”

3.吞吐量优先,可以通过配置设置吞吐量大小

吞吐量 = 运行用户代码时间/(运行用户代码 + 垃圾回收时间)

新生代设置相对大一些,吞吐量相对会大一些,因为垃圾回收不是那么频繁

处理器资源稀缺,想优先处理用户代码 就可以把吞吐量设置大一些

4.可以设置停顿时间大小(这里是指停顿时间,后边的cms、G1控制收集时间因为不需要stop the

                                                                                                                                              world)

  可以设置吞吐量大小,

5.可以通过参数设置,开启自适应策略 收集器会根据运行情况自动调整新生代老年代大小等参数

Serial Old

1.标记 - 整理

2.单线程回收 回收的时候不会出现新的垃圾

3.老年代

Parallel Old

1.标记 - 整理

2.多线程并行,同时并发

3.老年代的回收器

CMS

1.标记-清除

2.并发以获取最短停顿时间为目标 

3.步骤:

初始标记

并发标记

重新标记  处理用户线程并行期间产生变化的数据

并发清除

4.缺点: 并发操作更消耗cpu资源影响用户线程,浮动垃圾

5.优化:

缺点一可以忽略

缺点二设置阈值当堆占用68%或90%时就触发垃圾回收 并发失败就stop the world full GC

其他 处理内存碎片,设置参数在Full GC之前先进行碎片整理

G1

算法:标记-复制

思想:部分回收让停顿时间可控

特点:1.不分新生代老年代,将整个堆分若干个region

          2.每次回收的时候是将存活的对象复制到空的region中,原来的region清空

          3.有Region 中有一类Hummongous区域用来存储大对象(对象超过了region的一半)

    4.可以设置单次回收所允许的最长时间,G1会根据是时间评估具体需要回收哪些region,这个时间一般为一百至三百毫秒

    5.执行步骤:

      初始标记

      并发标记:只有这个阶段是并发的

      重新标记:处理用户线程并行期间发生变化的数据 SATB

      筛选收集:标记-复制

只有并发标记阶段是并发的其他的都需要stop the worldZGC可以在筛选收集阶段实现并发

新生代的一般是标记-复制,老年代的一般是标记-整理cms标记清除 G1标记复制

G1相对CMS的优点和弱点

1.G1的优秀特点

    1)G1可以设置最大停顿时间  cms不可以

    2)G1是region的内存布局  cms分新生代老年代

    3)G1是按受益来动态确定收集行为

    4)G1采用标记-复制算法,没有内存碎片

2.弱点

    1)内存占用高:

          G1为了解决region问题,每个region上都有一个卡表,所以G1的记忆集会占用超过堆20%的内存空间,cms也使用了卡表来处理跨代指针,但是只有新生代老年代所以占用内存较小

      2)负载高:

          cms需要使用写后屏障维护卡表

          G1需要使用写后屏障维护卡表,还需要使用写前屏障记录指针(G1用了原始快照搜索算法所以需要这个指针)

各个回收器之间的关系:

新生代:  serial  --并行-->  parNew  --吞吐量-->  parallel scavenge 

老年代:  serial old            cms                            parallel old

综合: G1

经典组合: ps + po

                parnew + cms + serial old

                G1

如何选择垃圾收集器?

影响选择的因素:

1.关注点(吞吐量、延迟、内存占用)

2.基础设施(处理器数量、内存大小、操作系统是window还是Linux)

3.JDK的发行商、版本号

几种收集器的特点

C1:综合性能好 花钱

ZGC:使用比较新的软硬件版本,注重延迟

Shenandoah:window

CMS:堆内存在4G到6G,硬件和JDK比较落后

G1:堆内存更大一点考虑G1

注重吞吐量: ps + po

注重低延迟,对停顿时间敏感:

                    内存小: cms

                    内存够大:G1 ZGC

整个内存回收过程是什么样的流程?

1.大对象直接进入老年代  可设置界限

2.多次回收仍存活的进入老年代

分代年龄判定

新生代每回收一次年龄加一,超过15进入老年代

动态年龄判定

相同年龄的对象占用survivor一半内存,那么等于或大于这个年龄的对象直接进入老年代

3.内存担保

  新生代回收时(复制算法 survivor到另一个survivor)不够用,就直接将无法容纳的对象放入老年代,如果老年代也放不下就Full GC

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