ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JVM-垃圾回收(2)

2022-05-06 16:32:54  阅读:143  来源: 互联网

标签:标记 幸存 回收 XX GC 垃圾 JVM


回收算法补充——分代回收

实际的JVM并不会单独的使用一种算法,分代回收的垃圾回收机制就体现了这一点。
JVM将堆内存划分为两个区域——新生代老年代

  • 新生代使用复制算法
  • 老年代使用标记 - 清除 或者 标记 - 整理 算法

分代


而新生代又细分为 伊甸园、幸存区From、幸存区To

新创建的对象放在伊甸园,当伊甸园无法再放入对象时就会产生垃圾回收
新生代的垃圾回收,我们称为 Minor GC
新生代的垃圾回收采用复制的方法,将存活的对象复制到 幸存区To
同时让幸存的对象存活次数+1
完成一次 Minor GC 后 幸存区From和幸存区To会交换一次位置(指向发生变化,让幸存区To为空的状态)
当下一次垃圾回收的时候,幸存区的对象也会被判断是否回收


当然,幸存区的对象不会一直呆在幸存区,当其存活次数超过一个阈值(默认 15)他就会被移动到老年代中
老年代的空间也有不足的时候,当新生代无法触发回收,老年代的空间也不足的时候就会产生垃圾回收
老年代的垃圾回收,我们称为 Full GC
老年代使用标记 - 清除 或者 标记 - 整理 算法进行垃圾回收


触发Minor GC和Full GC时会引发Stop the World
意思是在新生代和老年代垃圾回收时,其它用户线程必须停止直到垃圾回收过程完成


相关JVM参数

含义 参数
堆初始大小 -Xms
堆最大大小 -Xmx 或 -XX:MaxHeapsize=size
新生代大小 -Xmn 或 (-XX:Newsize=size +-XX:MaxNewSize=size)
幸存区比例(动态) -XX: Initial SurvivorRatio=ratio Al -XX:+UseAdaptiveSizePolicy
幸存区比例 -XX:SurvivorRatio=ratio
晋升阈值 -XX:Max Tentring Threshold-threshold
晋升大小 -XX:+PrintTenuringDistribution
GC详情 -XX:+PrintGCDetails-verbose:gc
Full GC 前 Minor GC -Xx:+ScavengeBeforeFullGC

垃圾回收器

串行垃圾回收器

  • 底层是一个单线程的垃圾回收器
  • 适用于堆内存较小和cpu核数较少(个人电脑)的时候
-XX:+UserSerialGC = Serial + SerialOld

吞吐量优先垃圾回收器

  • 多线程
  • 适用于较大的堆内存,需要多核cpu
  • 目的:尽可能让单位时间内STW(Stop the World)时间最短
-XX:+UseParallelGc ~ -XX:+UseParallelOldGC

吞吐量优先


响应时间优先垃圾回收器

  • 多线程
  • 适用于较大的堆内存,需要多核cpu
  • 目的:尽可能让单次STW(Stop the World)时间最短
- XX:+UseConcMarkSweepGC ~ -XX:+UseParNewGC ~ SerialOld

响应时间优先

过程解释:

  • 初始标记: 仅仅只是标记一下 GC Roots 能直接关联到的对象,速度很快,需要停顿。
  • 并发标记: 进行 GC Roots Tracing 的过程,它在整个回收过程中耗时最长,不需要停顿。
  • 重新标记: 为了修正并发标记期间因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,需要停顿。
  • 并发清除: 不需要停顿。
    在整个过程中耗时最长的并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,不需要进行停顿。

标签:标记,幸存,回收,XX,GC,垃圾,JVM
来源: https://www.cnblogs.com/S2Jgogo/p/16223710.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有