分享好友 最新动态首页 最新动态分类 切换频道
JVM内存管理------垃圾搜集器简介
2024-12-26 12:11

 

        上一章我们已经探讨过GC的各个算法,那么垃圾搜集器是什么呢?

        通俗的讲,使用编程语言将算法实现出来,产生的程序就是垃圾搜集器了。既然谈到了编程语言的实现,那么在讨论垃圾搜集器的时候,就已经涉及到具体的虚拟机实现了。

        或许有不少做JAVA开发的猿友还不知道,我们平时使用的JDK中,默认的JVM是hotspot,换句话说,我们大部分时候使用的JVM都是hotspot的实现版本,因此,本次LZ讨论垃圾搜集器都是基于hotspot版JVM来进行的,请各位猿友要知晓这一点。

        更直观的,我们可以在我们平时开发的机子上,输入java -version来查看JVM的版本,相信大部分猿友对这个命令都不陌生吧,LZ的机子截图如下。

 

 

        上面我们已经提到,垃圾搜集器实际就是算法的编程语言实现。既然牵扯到编程语言,那么必然离不开线程,而且我们在前面讲解算法的时候也一直假设是一条GC线程在做着GC的事情。

        因此,垃圾搜集器大致分为以下三类。

        串行搜集器(serial collector):它只有一条GC线程,且就像前面说的,它在运行的时候需要暂停用户程序(stop the world)。

        并行搜集器(parallel collector):它有多条GC线程,且它也需要暂停用户程序(stop the world)。

        并发搜集器(concurrent collector):它有一条或多条GC线程,且它需要在部分阶段暂停用户程序(stop the world),部分阶段与用户程序并发执行。

        

        

       看完上面的定义,相信有一部分猿友已经蒙了,一会单线程,一会多线程,一会串行,一会并行,一会并发,这都神马玩意?

       单线程和多线程就不必多说了,这个很好理解,串行与并行也比较好理解,难于分辨的就是并行(parallel)与并发(concurrent)。

       对于很多有关并发的解释,LZ觉得有一个最贴切。它是这么解释的,并发就是两个任务A和B需要相互独立的运行,并且A任务先开始后,B任务在A任务结束之前开始了

       并发本身是比较好理解的,那么它与并行的关系与区别是什么呢?

       事实上,并行是并发的一种实现方式。LZ觉得这么说各位可能会更好理解,当然,并行并不是并发的唯一实现方式,还有一种就是我们所熟悉的时间片切换。也就是A任务执行一会,B任务执行一会,交替执行。

       并行必须在多核多处理器或者分布式系统(本质还是多核多处理器)的前提下才能发生,而交替执行或者说时间片切换是在单核的处理器上发生的

 

 

       我们上面已经简单探讨了垃圾搜集器的分类,在hotspotJVM中,每一个种类的垃圾搜集器都有对应的实现,如下。

       串行搜集器的实现:serial(用于新生代,采用复制算法)、serial old(用于年老代,采用标记/整理算法)

       并行搜集器的实现:ParNew(用于新生代,采用复制算法)、Parallel Scavenge(用于新生代,采用复制算法)、Parallel old(用于年老代,采用标记/整理算法)

       并发搜集器的实现:concurrent mark sweep[CMS](用于年老代,采用标记/清除算法)

       可以看到,上面每一种垃圾搜集器都是针对不同内存区域所设计的,因为它们采用的算法不同,凡是用于新生代的都是使用的复制算法,而用于年老代的都是使用的标记/清除或者标记/整理算法。

       在实际应用中,我们需要给JVM的新生代和年老代分别选择垃圾搜集器,可以看到无论是新生代还是年老代都分别有三种实现,换句话说,我们应该有3*3=9种选择。但是,事实并非如此。

       事实上,这六种垃圾搜集器只有六种选择,因为有的垃圾搜集器由于具体实现的方式等一系列原因无法在一起工作,如下图。

         针对上图,红的就是串行搜集器,绿的是并行搜集器,唯一一个黄的是并发搜集器。上面三个是新生代的搜集器,下面三个是年老代的搜集器。两者之间有连线,则表示两者可以配合工作。

         这六种组合并没有说哪个组合最强,哪个组合最弱,还是那句话,只有最合适的,没有最好的。因此这就需要我们对每一种组合有一定的认识,才能在使用的时候选择更适合的垃圾搜集器。

 

 

         本次大致介绍了一下六种垃圾搜集器,以及它们的关系。每一种垃圾搜集器的特点与执行方式,我们在下一章再一起探讨。

最新文章
2024年335期[洹上柳畔]排五十位杀码专家
335期洹上柳畔排五十位杀码专家:236 开:334期洹上柳畔排五十位杀码专家:159 开:74681[十位:8]333期洹上柳畔排五十位杀码专家:124 开:84859[十位:5]332期洹上柳畔排五十位杀码专家:678 开:67957[十位:5]331期洹上柳畔排五十位杀码专家:247
AI赋能未来营销:客服智能化,精准推荐与分析
2025AI感悟图像,仅供参考  随着科技的飞速发展和互联网的普及,营销领域正经历着一场由人工智能(AI)驱动的变革。AI技术在营销中的应用逐渐广泛,不仅提升了营销效率,更为消费者带来了前所未有的个性化体验。智能客服、智能推荐和智能分
147SEO视频采集发布优化SEO教程-指定网站滚动轻松高效采集工具!
下载地址:https://www.cxyxt.com/30764.html网站内链批量采集-文章链接-图片链接-分类链接-翻页链接 — 支持倒出TXT-html-XML-文档格式 站长工具提交链接快速收录-百度api免费提交-360站长-搜狗站长 — 支持一键导入链接-自动化多线程提交
2024华为诺亚方舟实验室招聘AI算法实习生
(北京内推,长期有效)【招聘岗位】诺亚方舟实验室-AInbsp;算法实习生【工作地点】北京【岗位职责】实习生将参与多模态VLM,视频生成(T2V),SAM轻量化等计算机视觉算法研究与落地;【任职要求】1、nbsp;人工智能、计算机科学、自动化、机
2025年最有效的Facebook推广与引流策略指南
Facebook作为社交媒体领域的佼佼者,不仅仅是一个供朋友们保持联系的平台。很多人在购物前都会在此搜索公司的基本信息,以作参考。以下是几种高效的Facebook推广策略。寻找目标受众是关键。在扩大人际圈时,应着重寻找有影响力、知名度较高
18c.micios.mic:“探索18c.micios.mic的无限可能与创新前景”
Micos.Mic主题概述用户体验的重要性游戏设计的关键要素社交互动与社区建立营销策略与用户吸引力持续更新和内容创作  Micos.Mic是一款创新型手机游戏,旨在提供独特的娱乐体验。该游戏结合了多种元素,包括角色扮演、社交网络及实时战略,
360手机助手旧版本
360手机助手是一款功能十分强大的手机管理软件,软件提供了大量的游戏、软件、音乐、小说、视频、图片。它可以轻松下载、安装和管理手机资源。同时提供信息资源,均经过360安全检测中心审核认证。它绿色、无毒、安全,可以管理设备上的应用
2024双十一苹果手机购买攻略:最划算的时机和省钱妙招
预售期(10月14日-10月31日):这是双十一的预热阶段,消费者可以通过预付定金来锁定心仪的iPhone 16,并享受定金膨胀、优先发货的政策。此外,利用这个阶段,消费者还能够提前参与优惠活动,保证在双十一正式来临时以更有利的条件购买。开
5款好用的AI写作神器,AI写论文也嘎嘎香!
写作是一项需要耐心和时间以及精力的事情,随着科技的不断进步,AI写作软件已然在在写作领域扮演着越来越重要的角色。本文将为大家推荐几款国内好用的AI写作软件,详细介绍每款软件的功能特点,帮助您提高写作效率和质量。爱制作AI作为我常
2024 春节:百年变局中休闲大博弈的序幕,被掼蛋悄无声息地拉开!
本文系中国国家历史原创文章,转载请后台留言,欢迎转发到朋友圈!全文共3750字 | 阅读需8分钟1959年12月28日 《第一届全国运动会》邮票全国智力运动会是继全运会、城运会、全国体育大会等全国综合性运动会之后,又一个由国家体育总局主办
相关文章
推荐文章
发表评论
0评