首页 Java java教程 Hotspot--垃圾回收器(JVM)详细讲解

Hotspot--垃圾回收器(JVM)详细讲解

Jul 17, 2017 am 11:51 AM
hotspot 回收 垃圾

  前两篇《JVM入门——运行时数据区》《JVM常见垃圾回收算法》所提到的实际上JVM规范以及常用的垃圾回收算法,具体的JVM实现实际上不止一种,有JRockitJ9等待,当然最有名当属HotSpot JVM。下面是HotSpot JVM的整体架构图,本文着重介绍HotSpot中的垃圾回收器(Garbage Collector)。

  现有的HotSpot垃圾回收器以及之间的关系和应用范围如下图所示:

  其中G1 GC非常显眼的处于新生代和老年代之间,可以猜测这个G1 GC可同时运用在新生代和老年代,确实可以说G1是一个划时代新概念GC

  在介绍上面的垃圾回收器之前要先说明JVM虚拟机的Client模式和Server模式,Java所能做的事一是做客户端简单说就是GUI桌面应用程序,二是可以用作服务器端。两种模式Client模式启动快,启动后性能较差,Server模式启动慢,启动后性能较高。

Serial GC-XX:+UseSerialGC,复制算法,新生代

  这是一个比较古老的垃圾收集器,我理解它为简单粗暴,简单粗暴的方法往往可以应对简单的环境,事实上Serial GCClient模式下正是如此。它是一个串行的垃圾收集器,串行意味着就算是有多核处理器也不会有多个线程来并行回收,在串行的同时,其它的正常工作线程也要停止工作,称为“Stop the world”。这实际很好理解,你在清扫垃圾的时候,总不希望有人同时在丢垃圾吧。当然Serial GC在如今的HotSpot JVMServer模式下已经几乎废弃。另外,它工作使用垃圾回收的复制算法工作在Java堆的新生代。   

ParNew GC-XX:+UseParNewGC复制算法新生代

  ParNew GC实际上是Serial GC的多线程版本。上面提到了Serial GC即使是多核CPU的环境下也是单线程进行垃圾内存的回收。此垃圾收集器侧可以做到多线程环境下进行垃圾内存的回收,这个多线程也仅仅是垃圾回收的多线程,而不是与用户线程并发执行。并且只有它能与CMS老年代的垃圾回收器配合使用,而CMS又恰恰是划时代意义的垃圾回收器,所以当JVM的老年代垃圾回收器是CMS的话,新生代的垃圾回收器通常是ParNew GC

Parallel GC-XX:+UseParallelGC,复制算法,新生代)

  它有点和ParaNew GC类似,从名字上来看也是并行的多线程收集器。我们之前提到过,在进行GC的过程中要“Stop the world”,停顿时间越短当然越好,很多垃圾回收器(包括前两个)关注的就是如何提高停顿时间。而Parallel GC关注的则是吞吐量。它关注的是垃圾回收的整体耗时,如果垃圾回收所占用的整体耗时较短,则吞吐量高,CPU就能将越多的时间用于任务的执行上,(吞吐量 任务运行时间 (任务运行时间 垃圾回收时间))

Serial Old GC-XX:+UseSerialOldGC,标记-压缩算法,老年代)

  它是Serial GC的老年代版本,同样也是单线程,也能与Parallel GC配合使用作为它的老年代GC

Parallel Old GC-XX+UseParallelOldGC,标记-压缩算法,老年代)

  为了避免如果在新生代选择了Parallel GC而老年代则只有选择Serial Old GC的困境,出现了Parallel GC的老年代版本——Parallel Old GC。故如果在一些需要高吞吐量的常量利用Parallel GCParallel Old GC组合将会是一个很好的选择。

☆Concurrent Mark Sweep(CMS) GC -XX:+UseConcMarkSweepGC,标记-清除算法,老年代)

  CMS GC几乎占据着JVM老年代垃圾收集器的半壁江山,它划时代的意义就是垃圾回收线程几乎能用户线程做到同时工作。几乎是因为它还是不能做到完全不需要“Stop the world”,只是它尽可能的缩短了停顿时间。

它的整个垃圾回收过程可分为以下4个步骤:

  1. 初始标记

  2. 并发标记

  3. 重新标记

  4. 并发清理

  这4个步骤初始标记重新标记需要进行短暂的“Stop the world”,并发标记的过程实际上就是和用户线程同时工作,也就是一边丢垃圾,一边打扫,这样就会带来一个问题,如果垃圾的产生是在标记后发生,那么这次垃圾就只有等到下次再回收。当然等到标记完了过后垃圾自然不会和用户线程产生冲突,而清理过程就能和用户线程同时处理了。对于此垃圾回收器有一个比较显著且不可避免的一个问题就是它所采用的是标记-清除算法,也就是说它不同会压缩存活的对象,这样就会带来内存空间碎片化的问题,如果出现需要分配一个连续的较大的内存空间则只能触发一次Full GC。上一篇《JVM常见垃圾回收算法》中谈到了在新生代的垃圾回收称为“Minor GC”,老年代的垃圾回收称为“Major GC”,而“Full GC”则是在整个堆上触发一次垃圾回收,可想而知代价会相当高,而且此时不得不暂停用户线程,只能针对具体使用场景通过调整CMS GC的参数对其进行调整优化。

Garbage-First(G1) GC(-XX:+UseG1GC)

  G1 GC较之前所有的垃圾回收器都不同,从开头的第二幅图就能看出,它涵盖了新生代和老年代,或者说仅仅是从逻辑上还保留新生代老年代这种说法,实际上它已不存在内存分代,它在JDK6中仅仅是实验版,在JDK7u4过后才正式商用,对于此垃圾回收器我将会单独对其讲解,另外它的论文地址在:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.63.6386&rep=rep1&type=pdf

以上是Hotspot--垃圾回收器(JVM)详细讲解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何设置win7为wifi热点 如何设置win7为wifi热点 Dec 31, 2023 pm 10:14 PM

win7系统是一款被用户认可的高性能系统。最近很多的win7小伙伴们在问win7怎么做wifi热点?今天小编就为大家带来了win7wifi热点开启设置的方法一起来看看吧。win7怎么做wifi热点设置:1、要想开启wifi热点,首先得要有无线网卡,笔记本是有自带的,pc的话可以购买一个随身wifi来分享wifi,这里就不叙述了;首先按下键盘上的windows键打开“开始菜单”,在其下方的搜索栏中输入“cmd”并点击放大镜图标进行搜索;2、在搜索结果中找到CMD程序后用鼠标右键点击打开菜单,选择“

win10清理系统垃圾的步骤教程 win10清理系统垃圾的步骤教程 Jul 13, 2023 pm 09:53 PM

一些用户在使用电脑的时候,出现了win10系统清理垃圾的情况,当遇到win10系统清理垃圾这种情况,我们应该如何解决呢?如今还有很多用户不知道如何处理win10系统清理垃圾的情况,那么接下来就来看看win10清理系统垃圾的步骤教程,大家一起来看看吧。1、在电脑桌面上,点击“此电脑”,管理。2、选择磁盘管理3、选择你要清理的磁盘,右击选择属性。4、点击页面下方的“磁盘清理”按钮5、在出现的界面中,选择要清理的文件,点击“确定”,点击“删除文件”即可。以上就是win10清理系统垃圾的步骤教程啦,希望

win10怎么清理垃圾 教你怎么清理修复垃圾文件 win10怎么清理垃圾 教你怎么清理修复垃圾文件 Jan 12, 2024 am 08:18 AM

电脑使用时间久了C盘中的垃圾文件越来越来多,垃圾文件的存在会在一定程度上影响系统的运行速度,所以电脑使用的感觉会越来越慢,为了让电脑流畅运行,不影响正常的操作,下面,小编这就跟大家展示win10清理垃圾的操作。win10作为新系统,很多用户都已经安装了win10正式版,不过最近不少朋友反映自己安装了win10后系统盘变得过于拥挤了,导致运行系统的速度越来越慢,那么该如何去清理win10系统的垃圾呢?下面小编就给大家分享彻底清理win10系统的方法。win10怎么清理垃圾在Windows10桌面上

详细教你清理win11中D盘的垃圾文件 详细教你清理win11中D盘的垃圾文件 Jan 05, 2024 pm 11:53 PM

每个用户基本多有自己的d盘用来下载软件,但是在最新的win11系统中有很多还是不清楚该怎么去清理其中的垃圾,所以今天就给你们带来了win11清理d盘垃圾详细教程,快来一起学习操作一下吧。win11怎么清理d盘垃圾:1、首先进入桌面的此电脑,然后右击你的d盘。2、然后点击菜单中的“属性”设置。3、之后你可以看到常规工具下面的“磁盘清理”功能。4、最后点击出现的“清理系统文件”就可以全部解决了。

win7如何在清理C盘垃圾时确保不影响系统正常运行 win7如何在清理C盘垃圾时确保不影响系统正常运行 Dec 28, 2023 am 09:54 AM

c盘中一般都是装了我们电脑的一些重要文件,如果不小心删除了就会直接影响到我们电脑的使用,那么win7系统下,该怎么清理C盘的垃圾,才会不误删系统文件呢?现在就一起来看看吧。win7清理c盘垃圾怎么清理不影响系统1、双击计算机图标,进入资源管理器。2、右击C盘,选择属性3、点击常规,点击磁盘清理。4、勾选需要清理的文件点击确定即可。

菜鸟绿色回收活动升级,每次可领 0.1 元回收金 菜鸟绿色回收活动升级,每次可领 0.1 元回收金 Oct 31, 2023 pm 06:29 PM

本站10月31日消息,菜鸟今年双11期间将对绿色回收进行升级,除往年持续开展的快递包装回收外,服饰、鞋靴和旧书等品类均可回收。菜鸟在前两年回箱换蛋的基础上,升级为参与活动领取回收金。11月1日-20日期间,消费者在菜鸟驿站取件后将快递包装留下,再通过现场扫码或菜鸟App内承诺回箱,以及线上预约回收旧衣等,即可领取回收金。回收来的快递包装会被用于二次寄件或再生再利用。本站注意到,回收金活动分为三种类型:回箱、回收和分享回箱(快递纸箱):0.1元/次,每天每位用户4次回箱上限回收(旧衣服等物品)的价

苹果回收机器人来到中国:从iPhone中回收钨和稀土 苹果回收机器人来到中国:从iPhone中回收钨和稀土 Apr 22, 2024 pm 12:40 PM

4月22日消息,苹果公司大中华区董事总经理葛越在地球日到来之际宣布,苹果的回收机器人Dave和Taz已经抵达中国。她强调,为了响应地球日的环保理念,苹果正与合作伙伴紧密合作,旨在充分利用回收材料,减少环境损害,共同守护我们的地球。苹果公司首席执行官蒂姆·库克指出,这些先进的回收机器人能够帮助从iPhone中回收钨和稀土元素等珍贵材料,从而帮助打造下一代Apple产品。据统计,在2023年,苹果公司共回收了近4万吨电子废料。值得一提的是,在所有已售出的Apple产品中,有22%的材料是来自于回

PHP开发的二手回收网站实现用户购物车功能 PHP开发的二手回收网站实现用户购物车功能 Jul 02, 2023 pm 08:25 PM

PHP开发的二手回收网站实现用户购物车功能随着互联网的发展,线上二手回收市场逐渐兴起。为了提升用户的购物体验和便利性,我们需要在网站中集成购物车功能。在这篇文章中,我们将介绍如何使用PHP开发一个二手回收网站,并实现用户购物车功能。首先,我们需要创建一个数据库来存储用户的购物车信息。我们可以创建一个名为"shopping_cart"的数据库,并在其中创建一个

See all articles