jvm的垃圾回收机制是什么_垃圾回收过程图片

jvm的垃圾回收机制是什么_垃圾回收过程图片如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题,netty,springboot,springcloud等系列文章,一系列干货随时送达,超神之路从此展开,BTAJ不再是梦想!垃圾回收的过程分为两步:1.判断对象是否死亡(1)引用计数器法:①每当有一个对象引用是,计数器加一,当计数器为0是对象死亡②缺点:无法解决循环引用的问题,假设A引用B,B引用A,那么这两个对象将不会被回收,造成内存泄漏(2)可达性算法分析①通过一系列可作为GCRoot

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

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

如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达, 超神之路从此展开, BTAJ不再是梦想!

架构殿堂
垃圾回收的过程分为两步:

1.判断对象是否死亡

(1)引用计数器法:

①每当有一个对象引用是,计数器加一,当计数器为0是对象死亡

②缺点:无法解决循环引用的问题,假设A引用B,B引用A,那么这两个对象将不会被回收,造成内存泄漏

(2)可达性算法分析

①通过一系列可作为GC Roots的节点为起始点,从这些节点开始往下搜索,所走过的路径称为引用链。

②当一个对象到GC Roots节点没有引用链时,说明对象不可用

③可作为GC Roots节点的对象

虚拟机栈中引用的对象

本地方法栈中引用的对象

方法区中静态变量引用的对象

方法区中常量引用的对象

2.垃圾回收算法进行回收

(1)标记-清除:即直接将标记为死亡的对象清除,缺点是会产生垃圾碎片

(2)标记-整理:即将可用的对象同意向一端移动,将边界外的对象清除

(3)复制算法:即将堆分为了Eden,SurvivorFrom,SurvivorTo空间

①每次在Eden空间上分配对象

②SurvivorFrom空间为上次垃圾回收是还存活的对象

③SurvivorTo空间为本次垃圾回收是生存的对象存放的位置

④本次垃圾回收结束后交换SurvivorFrom与SurvivorTo

⑤复制算法需要担保空间,当有一个大的对象要分配,而Eden空间又不足时会直接分配到老年代

⑥在对象生存率较高时会进行大量的复制操作,降低效率

(4)分代回收算法:根据新生代与老年代对象的特点而使用不同的垃圾会回收算法

①新生代:对象生存周期较短,只有少量的生存对象,适合使用复制算法

②老年代:对象生存周期较长,只又少量需要回收的对象,且无担保空间,所以使用标记-整理算法或者是标记-清除算法

如果大家对java架构相关感兴趣,可以关注下面公众号,会持续更新java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达, 超神之路从此展开, BTAJ不再是梦想!

架构殿堂

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 中几种常用数据结构「建议收藏」

    java 中几种常用数据结构「建议收藏」Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。一、几个常用类的区别 1.ArrayList:元素单个,效率高,多用于查询 2.Vector:元素单个,线程安全,多用于查询 3.LinkedList:元素单个,多用于插入和删除 4.H

    2022年7月8日
    19
  • phpstudy nginx配置_phpstorm配置php环境

    phpstudy nginx配置_phpstorm配置php环境前言:首先来了解一下nginx工作原理:https://blog.csdn.net/hguisu/article/details/8930668一.nginx实现php动态解析原理nginx是一个高性能的http服务器和反向代理服务器。即nginx可以作为一个HTTP服务器进行网站的发布处理,也可以作为一个反向代理服务器进行负载均衡。但需要注意的是:nginx本身并不会对php文…

    2022年9月22日
    0
  • phpstorm2021.12永久激活码【2021最新】

    (phpstorm2021.12永久激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    411
  • latex 引用文献_latex引用多个参考文献

    latex 引用文献_latex引用多个参考文献LaTeX插入参考文献,简单高效Latex参考文献的引用Latex中用Bibtex来引用文献一、使用thebibliography标签<spanstyle=”font-size:18px;”>\begin{thebibliography}{}\bibitem[显示符号]{引用标签}BookTitle,Author\end{thebibliography}</s…

    2022年9月10日
    0
  • 一个空间主机安装多个网站的方法

    一个空间主机安装多个网站的方法

    2021年10月8日
    32
  • mvc与三层结构终极区别[通俗易懂]

    mvc与三层结构终极区别[通俗易懂]注:本文章内所有内容都来自互联网,本人主要是起了一个收集的作用http://www.cnblogs.com/zhhh/archive/2011/06/10/2077519.html又看到有人在问三层架构和MVC的关系,感觉这种问题有点教条化了。因为它们都在逻辑上将应用程序划为三块,凑了一个数字3,就有人非要把它们联系到一起了。  这两个东西我接触有几年了,有一点体会,表达一下:

    2022年6月25日
    17

发表回复

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

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