路漫漫之-理解java虚拟机

java 内存垃圾回收机制

1. 堆内存结构

  • 年轻代: (包含eden,s0,s1) 此区域主要是存储新创建或新创建不久的对象
  • 老年代 : 用来存储存活时间比较久的对象
  • 永久代: 保存类的信息以及其他一些高级特性,如字符串池 。 注:JDK 8 开始把类的元数据放到本地堆内存(native heap)中,这一块区域就叫 Metaspace
    堆内存结构.png

2. YongGC (minor gc) 过程:

  • 触发原因: 当Young gen的 eden 区满的时候。

  • 使用的算法: 复制算法

  • 发生STW

  • GC过程:

    1. 当应用启动后,当一个对象创建并被分配时,如果此时年轻代的s0,s1内存还未被使用,并且eden的空间足够使用,此时对象存储在eden区域。

    2. 随着系统的运行,java创建的一些对象不断的分配到堆中eden的剩余空间不断的变小,当eden的空间不足与分配新创建的对象时,触发垃圾收集器收集,eden区被标记存活的对象复制到s0并且对象的年龄+1为1,未被引用的对象随着eden 区域的清理而被删除。
    3. 当eden满时进行下一次YGC时,eden的被标记对象移动到s1区域此时对象年龄加1为1,s0的被标记的对象移动到s1,因为上次s0对象的年龄为1所以这次年龄加1为2,eden和s0的未标记对象将被清空。
    4. 等到下一次YGC时重复上次动作,eden对象复制到s0,s1对象复制到s0,然后它们的年龄+1,eden和s1的空间被清空,也就是所说的两个s区互换。
    5. 当年轻代的对象,这里指s区年龄到达一定年龄时,年轻代里的对象将被移动到老年代
  • 年轻代收集器: 这里先讨论下面三款年轻代收集器(G1下次讨论)

区别 \ 名称 Serial 收集器 ParNew Parallel Scavenge收集器
是否多线程 单线程串行 多线程并发 多线程并行
能和哪些老年代配合使用 CMS , SerialOld CMS , SerialOld Serial Old,Parallel Old
优势 单核cpu效率比较高 能充分利用多核cpu的优势 系统的吞吐量
  • 收集过程
  1. serial :
    serial.png
  2. parnew:


    ParNew.png
  3. Parallel:


    Parallel.png
  • 所带来的影响: young gc 中有 可能 部分存活对象晋升到老年区 , 所以young gc后 old gen的内存空间 通常 有所提升

3. Old GC (回收过程):

  • 由于能回收老年代的收集器有 cms ( Concurrent Mark Sweep),Parallel Old ,serial old (单线程) 注:G1下次讨论
区别 \ 名称 Serial Old Parallel Old cms
使用算法 标记整理 标记整理 标记清除
串行、并行、并发 串行 并行 并发
使用场景 单CPU环境下的Client模式、CMS的后备预案 在后台运算而不需要和客户端太多交互的任务 吞吐量优先”收集器终于有了比较名副其实的应用组合,在注重吞吐量以及CPU资源敏感的场合 互联网站或者B/S系统的服务端上,希望服务的响应速度,系统停顿时间最短
  • cms 收集器运行过程
    1. 初始标记(CMS initial mark): 发生STW ,标记GCRoots关联的对象,速度很快,应用线程暂停
    2. 并发标记(CMS concurrent mark): 进行GC Roots Tracing的过程,在整个过程中耗时最长。
    3. 重新标记(CMS remark): 重新标记阶段则是为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间一般会比初始标记阶段稍长一些,但远比并发标记的时间短。
    4. 并发清除(CMS concurrent sweep)


参考: 深入理解java虚拟机 , oracle 文档

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

推荐阅读更多精彩内容