jvm gc,gc算法_GC解释:算法

jvm gc,gc算法

如前一篇文章中所述,HotSpot JVM中有四个可用的垃圾收集器。 它们之间有一些显着差异,但是用于完成实际工作的算法背后的实际概念非常相似。 在这篇简短的文章中,我将尝试解释三种基本算法:

  • 打标
  • 打标紧凑
  • 标记复制

GC根

在进入细节之前,请确保我们对什么是GC根有一个共识。 这些是可以从堆外部直接访问的对象。 例如:

  • 活动线程
  • 静态变量
  • 局部变量(可通过线程堆栈访问)
  • JNI参考

标记

讨论的所有算法都具有相同的标记阶段。 标记阶段是从GC根开始遍历整个对象图。 当GC访问该对象时,它将其标记为可访问并因此处于活动状态。 从GC根无法访问的所有对象都是垃圾。 标记需要暂停(STW)暂停,因为正在运行的应用程序线程可能会干扰。 STW暂停的时间长短主要取决于访问对象的数量。

打标

在标记阶段之后,我们拥有了已访问(可通过GC根访问)和未访问对象占用的内存空间。 扫描阶段将释放包含无法访问对象的内存片段。 这很简单,但是由于死对象不一定彼此相邻,因此最终导致内存碎片化。 这本身还不错,但是尝试将太大的对象放入内存中可能导致OutOfMemoryError 。

打标紧凑

该算法解决了内存碎片的问题。 标记所有活动对象后,它们将移到内存空间的开头。 这有助于避免由于内存碎片过多而导致的OutOfMemoryError ,但是压缩堆并不是免费的。 复制对象和更新对它们的所有引用都需要时间,并且所有操作都在STW暂停期间发生。

标记复制

标记复制算法将所有活动对象复制到新的内存区域。 先前占用的区域被认为是空闲的。 下次执行标记复制时,所有活动对象都移回到上一个存储区。 您可以想象,这当然会导致内存压缩。 不幸的是,它需要额外的额外区域,该区域必须足够大以适合任何给定时间点的所有活动对象。

翻译自: https://www.javacodegeeks.com/2017/09/gc-explained-algorithms.html

jvm gc,gc算法

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

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

相关文章

python 链表倒数第k个节点_链表-删除单链表中倒数第k个节点

题目实现一个函数,一个可以删除单链表中倒数第k个节点难度简单分析本题比较简单,实现方法多种多样,这里提供一种方法首先明确一点,在单链表中删除倒数第k个节点,需要找到他的前一个节点,让前一个节点指向后…

天津计算机中级职称需要什么,天津市中级职称评定条件是什么

天津市中级职称评定条件是什么作者:职称驿站浏览量:5351104时间:2019-04-15转眼间2019年马上就要过完三分之一了,对于2019年的职称评审有很多人早早就开始了相关的准备工作,也有一些人才刚刚想到评审的事情&#xff0c…

jsf el表达式_JSP,JSF和EL简介

jsf el表达式JavaServer页面,JavaServer Faces和表达语言 在本文中,我将研究JavaServer Pages(JSP)和Expression Language(EL),然后将其与JavaServer Faces (JSF)关联。 …

浅谈防火墙对 FTP 的影响及故障排除

FTP 是常见的基于TCP的网络服务,它使用了两个TCP连接来建立逻辑通信信道,即控制连接和数据连接。当客户端与服务器建立一个FTP会话时,使用TCP创建一个持久的控制连接以传递命令和应答。当发送文件和其它数据传输时,它们在独立的TC…

定向输出命令_数据流的世界,带你了解Linux重定向

今天,小编就带大家一起来看看数据重定向。重定向:将原本输出到标准输出的数据重定向到一个文件中。用于终端显示输出的特殊设备:IO重定向是为了改变默认输入、输出的位置:输出重定向(标准输出STDOUT和标准错误输出STDERR)【>】…

SSH(Secure Shell) 介绍一

文章目录基本原理首次建立连接的时候的公钥交换通过ssh来进行密码登录利用公钥来登录基本原理 SSH(Secure Shell)是一套协议标准,可以用来实现两台机器之间的安全登录以及安全的数据传送,其保证数据安全的原理是非对称加密。 传…

gc 堆外_GC解释:堆

gc 堆外世代垃圾收集器 JVM堆分为两个不同的世代。 一种称为“年轻”,第二种称为“老”(有时称为终身制)。 年轻一代又分为两个主要的逻辑部分:伊甸园和幸存者空间。 垃圾收集人员还使用了虚拟空间供年轻人和老年人使用&#xff0…

数据传输协议汇总

文章目录一、FTP(File Transfer Protocol 文件传输协议)(一)FTP 通讯端口(二)FTP 支持两种连接模式(三)缺点(四)FTP 命令(五)FTP 响应码(六&#…

得力科学计算机怎么求余,山商“郭叔”:妙招讲高数 考研路上得力导师

山东工商学院数学与信息科学学院教授郭林大众网海报新闻记者 屈晨晨 烟台报道“郭老师人特别和蔼,能够和学生们打成一片,不仅讲课风趣,同时也给予了我们很多帮助,私底下我们都喊他郭叔。”这是山东工商学院很多毕业生对郭老师的评…

如何打开笔记本电脑的摄像头_Win8系统笔记本电脑摄像头无法使用的解决办法...

Win8系统电脑摄像头不能用怎么办?使用Win8系统笔记本电脑的用户反映,电脑摄像头无法使用了,这是怎么回事呢?如何解决这个问题?请看下文。解决方法:1、打开计算机中的“控制面板”,如图所示&…

浅析文件传输协议 (ftp) 的工作原理

起初,FTP并不是应用于IP网络上的协议,而是ARPANEt网络中计算机间的文件传输协议, ARPANET是美国国防部组建的老网络,于1960-1980年使用。在那时, FTP的主要功能是在主机间高速可靠地传输文件。目前FTP仍然保持其可靠性…

vb.net 同时给多个属性赋值_Python尚学堂高淇|1721时间表示unix时间点毫秒微秒time模块浮点数自动转换强制转换增强赋值运算符...

017浮点数-自动转换-强制转换-增强赋值运算符浮点数称为float用a*b^10形式表示的科学计数法,比如:3.14,314E-2或者314e-2这些数字在内存当中也是按照科学计数法存储、>>>float(3)3>>>314E-23.14>>>float(“3.14”)3.14>>>int(3…

计算机键盘复制键是哪个,键盘按什么键复制粘贴_键盘上复制粘贴快捷键是哪个键-win7之家...

使用电脑的时候经常会需要使用到复制粘贴功能,许多用户可能会习惯使用右键来复制粘贴,其实这样有点麻烦,比较简单的就是使用快捷键来操作,但是有部分用户还不知道键盘按什么键复制粘贴,如果你也有一样需求的话&#xf…

我的世界java无法安装包_手把手教你搭建java环境

前文由于一些历史原因,开发java程序需要技术人员自行搭建环境,而搭建环境对于新手来说并不友好,不像其他语言那般方便,现如今,为帮助想入门java却无法顺利搭建的同学,编写该教程,如果觉得本文有用,请添加关注,更多java教程,后续更新~第一步 下载JDK可自行前往Oracle官网下载指定…

vs 2019 社区版许可证过期_Switch版《最终幻想12:黄道时代》对比PS4版 就没差

2017年7月发布的“最终幻想12”重制版《最终幻想12:黄道时代》登陆PS4平台,4月30日这款经典游戏还将登陆Xbox One和Switch平台,都将支持60帧运行。那么游戏在Switch这款掌机上的表现到底如何呢?油管频道Direct-Feed Games就为大家…

局域网限速软件_8款Windows实用软件推荐,纯干货,总有一款是你必备的

开学后,有些小伙伴得走进大学校门,有些小伙伴走向公司大门,不管你做出了哪种选择,最终都会走向社会,走向岗位。我已经毕业走向社会近10年了,珍藏了一些小视频,呃说错了,是珍藏了一些…

javaserver_什么是JavaServer Faces(JSF)

javaserver这是一个分为两部分的系列,其中我介绍了JSF 2及其如何适合Java EE生态系统。 在第1部分中,我将介绍JavaServer Pages(JSF)背后的基本思想 ,在第2部分中,我将介绍Facelets声明语言 。 在构建Web…

安装计算机一级出现appcrash,win10系统运行程序出现appcrash错误的办法

win10系统使用久了,好多网友反馈说win10系统运行程序出现appcrash错误的问题,非常不方便。有什么办法可以永久解决win10系统运行程序出现appcrash错误的问题,面对win10系统运行程序出现appcrash错误的图文步骤非常简单,只需要1、同…

winpe镜像文件iso下载_下载:微软正式发布Win10 2004版并即日起开始推送

PS:关于Windows 10 v2004版蓝点网早前已建立专题,目前该专题已收录关于该版本的101篇文章,微信篇幅有限无法全部发过来,准备升级的用户建议点击阅读原文按钮或使用电脑访问蓝点网首页查看Windows 10 v2004专题。刚刚微软在官方博客…

iphone固件降级_我在iPhone上装了个安卓

目前使用Android系统设备的好处就是可以执行更多的操作。主要是因为安卓拥有自己的开源计划AOSP(Android Open Source Project),比iOS开放了更多的应用接口API,商家可以用Android源码进行二次开发,相对iOS开放很多。图片来自百度iPhone跟Andr…