jvm的垃圾回收器_java 垃圾回收器

jvm的垃圾回收器_java 垃圾回收器1.GC分类按线程数:并行垃圾回收器:ParallelCollector.同一时间段内只有一个cpu执行垃圾回收操作.用户线程等待. 串行垃圾回收期:SerialCollector.同一时间段内可以有多个cpu执行垃圾回收操作,用户线程等待.按压缩方式:压缩式,内存有序.非压缩式:内存无序.按工作方式:并发式,及并发GC,用户线程和垃圾回收器同时交替进行. 独占式,垃圾回收线程进行时,用户线程需要等待.按工作区分:年轻代,老年代.2.GC性能指标吞吐量:用户线

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1.GC分类

按线程数:并行垃圾回收器:Parallel Collector. 同一时间段内只有一个cpu执行垃圾回收操作.用户线程等待.
	    串行垃圾回收期:Serial Collector.同一时间段内可以有多个cpu执行垃圾回收操作,用户线程等待.
按压缩方式:压缩式,内存有序.  非压缩式:内存无序.
按工作方式:并发式,及并发GC,用户线程和垃圾回收器同时交替进行.
	     独占式,垃圾回收线程进行时,用户线程需要等待.
按工作区分:年轻代,老年代.

2.GC性能指标
吞吐量: 用户线程时间/ 垃圾回收执行时间 + 用户线程执行时间. 吞吐量优先意味着 单位时间内STW时间最短.
暂停时间:垃圾回收的时,用户线程等待的时间.暂停时间优先意味着stw的频率增加.
说明:吞吐量和暂停时间相当于竞争对手, 吞吐量优先意味着,线程的回收频率降低.STW时间即暂停时间加长. 暂停时间优先,意味着垃圾回收频率增强,吞吐量下降.
现在的标准:保证吞吐量的情况下,尽量降低暂停时间.

3.7款经典垃圾收集器和垃圾分代之间的关系

在这里插入图片描述
在这里插入图片描述
Serial GC最开始的GC,
ParNew的多线程版本.
ParallelGC在JDK1.6之后称为HotSpot默认GC.
2017年JDK9中G1变成默认的垃圾收集器,以替代CMS
2019年9月JDK13,增强ZGC

4.如何查看默认的垃圾收集器
jinfo -flag 相关垃圾回收器参数 进程ID
在这里插入图片描述

5.Serial回收器:串行回收器.
最早的垃圾回收期,单个cpu时运行效率高.由于运行Stw时间长,所以不适用于与用户交互性强的应用中.
在这里插入图片描述
6.ParNew 并行回收器:
在这里插入图片描述-XX:ParallelGCThreads限制线程数量,默认开启和CPU数据相同的线程数

7.parallel回收器:吞吐量优先
同样是并行垃圾回收器.和ParNew不同的是Parallel 回收器可以调整吞吐量,可以设置自适应策略.开启自适应策略后,parallel回收器会根据内存情况自动设置年轻代晋升老年代的年龄参数,自动设置吞吐量和暂停时间的比例.
parallel old 使用的是标记压缩回收算法,所以会产生stw,所以该回收器适合做后天工资支付,批量处理,订单处理的应用程序.
parallel的参数设置有:
-XX:+UseParallelGC 手动开启Parallel回收器.jkd8默认开启.
-XX:+UseParallelOldGC 手动开启Parallel Old回收器.jkd8默认开启.
上面这两个参数关联,开启一个,默认开启另一个
-XX:ParallelGCThreads:设置年轻代并行收集器的线程数,一般与CPU数量相同,如果CPU数量大于8个,则值=3+(5*N/8)
-XX:MaxGCPauseMillis:设置暂停时间
-XX:GCTimeRatio:设置吞吐量比例,默认99,取值范围0-100,也就是垃圾回收时间不超过1%
-XX:+UseAdaptiveSizePolicy:设置是否开启自适应测率

8.CMS并发回收器
Cms回收器主打低延迟.
在JDK1.5推出了Current Mark Sweep回收器主打低延迟.可以让用户线程和垃圾回收线程同时进行.
运行过程:
初始标记: 初始标记阶段,同样需要STW,只是初始阶段标记只标记与GOOT ROOTS 直接关联的对象.所以STW的时间很短.
并发标记:并发标记阶段用户线程和垃圾回收线程同时进行.
再次标记阶段:再标记阶段,标记在并发阶段产生的新垃圾对象,但是没有被标记为垃圾的对象.
清除阶段:采用了标记-清除算法,会产生内存碎片,无法采用标记-压缩算法是因为标记压缩的时候,用户正在使用的内存没法使用,就没法并发进行.
在这里插入图片描述
总结:如果想要最小化使用内存和cpu优先使用serial回收器,如果先要高吞吐量优先使用parallel,如果想要前台反应时间慢,优先使用cms,但是在jdk9将cms标为废弃.jdk14正式废弃.

9.G1整堆区域化分代回收器
Garbage First 是一个并行回收器.把堆内存分割为很多不想关的region区域,G1会根据region垃圾堆价值大小,维护一个优先列表,价值高的优先回收
优点:分代收集,小region之间使用复制算法.整体上算是标记-压缩算法.所以不会产生内存碎片,不会为了放置放对象,频繁出发垃圾回收.在内存较大的时候G1效率比cms好,内存小的时候CMS更好点.平衡点在6~8G.

10.垃圾回收器总结

在这里插入图片描述
11.GC日志分析
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/194985.html原文链接:https://javaforall.net

(0)
上一篇 2025年10月26日 上午9:15
下一篇 2025年10月26日 上午9:43


相关推荐

  • stat函数的用法_Str函数

    stat函数的用法_Str函数stat和lstat是兄弟函数,都是用于获取文件信息如果文件不是链接文件,则二者没有区别,如果是链接文件有如下区别:stat:获取链接文件的信息时,具有穿透能力,直接穿越链接文件,获取所被链接文件的信息。lstat:获取链接文件的信息,无穿透能力函数原型intstat(constchar*pathname,structstat*buf);intlstat(constcha…

    2022年8月21日
    8
  • 人工智能马尔可夫模型_高斯马尔科夫模型

    人工智能马尔可夫模型_高斯马尔科夫模型(马尔可夫与马尔科夫都可以,所以也别纠结)马尔可夫模型(MarkovModel)是一种统计模型,广泛应用在语音识别,词性自动标注,音字转换,概率文法等各个自然语言处理等应用领域。经过长期发展,尤其是在语音识别中的成功应用,使它成为一种通用的统计工具。      ———–百度对于马尔科夫实际上是根据根据历史数据和其中的规律,总结出变化的规律,使用概率转移图的形式来推断…

    2026年4月16日
    4
  • angsrom linux opkg update 失败 解决方案[通俗易懂]

    angsrom linux opkg update 失败 解决方案[通俗易懂]在这篇文章的指导下解决了,Opkgupdate失败的问题,问题出在开发板的网络DNS配置,开发板可以访问局域网的,但是不能访问互联网,另外angstromlinux软件源feeds地址改变了不在是原来的所有需要更改/etc/opkg/*下的conf文件。这样就可以执行opkgupdate命令来安装软件了How-toupdateopkgpackagefeeds

    2022年5月12日
    105
  • KindEditor配置步骤

    KindEditor配置步骤KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE、Firefox、Chrome、Safari、Opera等主流浏览器。KindEditor使

    2022年7月3日
    25
  • 程序员,在北上广深杭赚够100万,就逃回二三四线城市生活,靠谱吗?

    程序员,在北上广深杭赚够100万,就逃回二三四线城市生活,靠谱吗?无意间刷到一个话题,北漂程序员,赚够100万,然后回三四线城市享受生活,不确定这个想法靠不靠谱。讲真,我觉得我在这个话题上还是挺有话语权的。就来给大家唠唠,看能不能提供一丢丢参考价值。我没有在北京搬砖过,但在苏州搬砖过,苏州和北上广深杭比起来,肯定有差距,但不得不承认,苏州的发展速度确实是有目共睹的。目前已经在三线城市洛阳生活了多年,生活品质不能说有多高,但生活的基础条件我觉得都还过得去。尤其是其中很重要的一点,教育资源是能跟得上的。01、十分怀念那苏州说实话,还是挺怀念苏州那段时光的。苏州不

    2022年7月26日
    8
  • C多线程编程实例 线程与窗体交互

    C多线程编程实例 线程与窗体交互C 多线程编程实例线程与窗体交互代码 publicpartia Form 声明线程数组 Thread workThreads newThread 10 publicForm1 InitializeCo

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号