Java常见的垃圾回收器GC

本节讲解一下常见的垃圾回收器。需要特别注意的是,每一种垃圾回收器都会存在用户线程(即用户程序)暂停的问题,只不过每种回收器用户线程暂停的时长优化程度不一样。在启动JVM时,可以通过“指定参数-xx:+垃圾回收器名称”来自定义JVM使用何种垃圾回收器进行垃圾回收。如果未指定的话,JVM将根据服务器的CPU核数和JDK版本,自动选择对应的默认垃圾回收器。

(1)Serial(-XX:+UseSerialGC)  

这是一个单线程运行的串行垃圾收集器,是JVM中最基本、比较早期的垃圾回收器。在JDK1.3之前是JVM唯一的新生代垃圾回收器。当JVM需要进行垃圾回收的时候,会暂停所有的用户线程直到垃圾回收结束。它采用复制算法进行垃圾回收。

(2)SerialOld(-XX:+UseSerialGC)   

这是串行垃圾回收器的老年代回收器版本,同样是单线程运行的垃圾回收器。它采用标记-整理算法进行垃圾回收。

(3)ParNew(-XX:+UseParNewGC)  

串行垃圾回收器的多线程并行运行版本。它采用复制算法进行垃圾回收。由于采用多线程运行,因此如果服务器是单核CPU的,那么其效率会远低于单线程串行垃圾回收器。

(4)ParallelScavenge(-XX:+UseParallelGC)    

和ParNew 回收器有点类似,它是一个新生代收集器,俗称吞吐量优先收集器。它采用复制算法进行垃圾回收。所谓吞吐量就是CPU用于运行用户代码(用户线程)的时间与CPU总消耗时间的比值,即吞吐量 = 运行用户代码(用户线程)时间 / (运行用户代码时间 + 垃圾收集时间)。

(5)ParallelOld(-XX:+UseParallelOldGC)       

是老年代的并行垃圾回收器,是老年代吞吐量优先的回收器,和ParNew很类似。它采用标记-整理算法进行垃圾回收。在服务器CPU核数较多的情况下,可以优先考虑使用该回收器。

(6)CMS (-XX:+UseConcMarkSweepGC)     

这是一个多线程并发低停顿的老年代垃圾回收器,全称为Concurrent Mark Sweep,简称CMS。如果响应时间的重要性需求大于吞吐量要求并且要求服务器响应速度高的情况下,建议优先考虑使用此垃圾回收器。CMS垃圾回收器用两次短暂的暂停来代替串行或并行标记-整理算法时出现的长暂停。它采用标记-清除算法进行垃圾回收,因此很容易产生内存碎片,但是CMS回收器做了一些小的性能优化,优化措施是把未分配的内存空间汇总成一个内存地址列表,当JVM需要分配内存空间时会搜索这个列表,找到符合条件的内存空间来存储这个对象,如果寻找不到符合条件的内存空间,就会产生Full GC。并且由于该垃圾回收器是多线程并发的,很多时候GC线程和用户应用程序线程是并发执行的,因此垃圾回收时会占用很高的CPU资源。

(7)G1-GarbageFirst(-XX:+UseG1GC)    

这是JVM新推出的垃圾回收器,同时支持新生代和老年代回收,能充分利用多核CPU的硬件优势,可以并行来缩短用户线程停顿的时间,也可以并发让垃圾收集与用户程序同时进行。该垃圾回收器虽然保留了传统的分代概念,但JVM堆的内存布局已经和传统的JVM堆布局不一样了,G1将整个堆划分为很多个大小相等的独立Region区域, 新生代和老年代不再是被隔离开的,它们都是一部分不需要连续的Region区域的集合。G1同时采用标记-整理和复制等多种回收算法进行垃圾回收。

本文节选自《软件性能测试、分析与调优实践之路(第2版)》,获作者和出版社授权发布。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/760077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

贵价茶叶产区成谜,竹叶青茶是“行业黑马”还是“韭菜镰刀”?

撰稿|行星 来源|贝多财经 近日,央视“315”晚会曝光了自诩“高端商务白酒”的听花酒。这款白酒号称拥有提升免疫力、改善睡眠、保障男性功能等多种保健功能,标准装售价5860元,精品装售价更是达到5.86万元,昂贵程度令人瞠目结舌。…

jmeter的函数助手使用方法

如某个上传文件接口,一个文件只能同时被一个接口调用,如果被并发同时调用就会报错 创建多个测试文件 比如50并发,创建更多的文件防止并发多时随机数生成重复 生成随机数函数 工具–函数助手-选择random-输入范围(1-696&#…

网络学习:IPV6基础配置

目录 一、配置接口的全球单播地址 二、配置接口本地链路地址 三、配置接口任播地址 四、配置接口PMTU 配置静态PMTU: 配置动态PMTU: 五、接口配置IPV6地址示例: 一、配置接口的全球单播地址 全球单播地址类似于IPv4公网地址&#xff0…

Redis技术学习|实战项目记录|短信登录(重点:拦截器)+ Redis代替session存储用户登录信息

学习资料声明 黑马程序员的Redis学习视频:黑马程序员Redis入门到实战教程 需要用到的知识:linux(推荐韩顺平老师的教程,学到p30,创建好虚拟机和简单的几个命令就好。)SSM。SpringBoot。 还用到了MybatisPl…

5G里面NR,gNB,en-gNB,ng-eNB是什么意思

不得不提一个国际组织,叫国际电信联盟(ITU, International Telecommunication Union),简称国际电联。我们先看看国际电联的自我介绍: 国际电信联盟 『国际电联 (国际电信联盟) 是主管信息通信技术事务(ICT)的联合国机…

微信打卡小程序怎么做_用户的每日习惯培养神器

微信打卡小程序:你的每日习惯培养神器 在这个快节奏的现代社会,我们每天都在忙碌中度过,有时候甚至会忘记自己曾经立下的那些小目标、小习惯。然而,随着科技的不断发展,微信打卡小程序的出现,为我们的生活…

早期零撸项目,预注册即将截止, AI身份项目GenomeFi明牌空投教程

简介:GenomeFi基金会旨在用个人基因信息推动生物产业发展,他们通过AI大数据平台和区块链技术验证身份、保护个人信息、提升收入。GenomeFi和CLINOMICS(一家基于基因组学疾病早期诊断的领先公司)合作提供基因诊断、早期疾病检测、个…

朋友圈之于私域的意义

朋友圈作为社交媒体的一种,是品牌主进行私域流量营销的主要载体,具有推动产品销售、传播信息等多种作用。具体来说,朋友圈在私域中的意义可以体现在以下几个方面: 1. 传播信息:朋友圈可以成为品牌主向其潜在客户传递信…

代码随想录阅读笔记-字符串【重复的子字符串】

题目 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab"输出: True解释: 可由子字符串 "ab" 重复两次构成。 示例 2: 输入: "aba…

爬虫入门系列-HTML基础语法

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” HTML基础语法 bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简…

敏捷开发最佳实践:学习与改进维度实践案例之会诊式培养敏捷教练

自组织团队能够定期反思并采取针对性行动来提升人效,但2022年的敏捷调研发现,70%的中国企业在学习和改进方面仍停留在团队级。本节实践案例将分享“会诊式培养敏捷教练”的具体做法,突出了敏捷以人为本的学习和改进,强调了通过人员…

javaweb遇到的servlet问题,jar包问题

有时候会遇到这种问题,有的地方会报红 这是因为这个找不到这个包,这个项目缺少jar包 在tomcat9之前还不是Jakarta这个名字,我的运行环境与服务器是jdk17与tomcat10 解决方法: 在项目结构中,找到模块,再…

nacos 更新报错“发布失败。请检查参数是否正确”

文章目录 🔊博主介绍🥤本文内容起因解决方案结果 📢文章总结📥博主目标 🔊博主介绍 🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华…

随机小案例

一个小案例: function random(n, m) {return Math.floor(Math.random() * (m - n 1)) n;}let randomNumber random(4, 10); // 修正变量名为 randomNumber while (true) {let num prompt(请输入猜想:); // 提示用户输入猜想 if (num randomNumber…

第八篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读使用Python库清洗处理从PDF文件提取的文本

传奇开心果博文系列 系列博文目录Python自动化办公库技术点案例示例系列 博文目录前言一、Python清洗处理文本的常见步骤二、使用Python库去除非文本元素示例代码三、使用Python库去除格式化元素的示例代码四、使用Python库去除空白字符示例代码五、使用Python库合并段落和行示…

聚类算法之层次聚类(Hierarchical Clustering)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 层次聚类是一种非常独特和强大的聚类方法,与众多其他的聚类技术相比,它不仅为数据集提供了一个划分,还给出了…

【阅读笔记】Adaptive GPS/INS integration for relative navigation

Lee J Y, Kim H S, Choi K H, et al. Adaptive GPS/INS integration for relative navigation[J]. Gps Solutions, 2016, 20: 63-75. 用于相对导航的自适应GPS/INS集成 名词翻译 formation flying:编队飞行 摘要翻译 在编队飞行、防撞、协同定位和事故监测等许多…

怎么轻松制作证件照?推荐这三款制作工具!

在日常生活中,我们经常需要制作各种证件照,如身份证、护照、驾驶证等。为了帮助大家快速、便捷地制作证件照,我将在本文中推荐三款优秀的证件照制作工具,包括国内外的软件,满足不同用户的需求。1.水印云 水印云是一款国…

自动装箱和拆箱

自动装箱(autoboxing)和拆箱(unboxing):将基本数据类型和包装类自动转换。 自动装箱: 基本类型的数据处于需要对象的环境中时,会自动转为“对象”。 以 Integer 为例: Integer i …