面试中如何回答JVM垃圾回收机制[通俗易懂]

面试中如何回答JVM垃圾回收机制[通俗易懂]JVM中的垃圾回收了解吗首先是如何标记存活对象,主要有两个算法,分别是引用计数法和可达性分析算法。引用计数法:给一个对象添加一个引用计数器,当一个地方引用它时,计算器+1,不引用的时候-1,当引用计数器为0时说明该对象可回收。但是一旦出现互相引用的情况,就会出现无法回收的现象。所以JVM采用的是可达性分析算法。可达性分析算法:首先会标记所有GCroot能够直接关联的对象。GCro…

大家好,又见面了,我是你们的朋友全栈君。

JVM中的垃圾回收了解吗

首先是如何标记存活对象,主要有两个算法,分别是引用计数法和可达性分析算法。

  • 引用计数法:给一个对象添加一个引用计数器,当一个地方引用它时,计算器+1,不引用的时候-1,当引用计数器为0时说明该对象可回收。但是一旦出现互相引用的情况,就会出现无法回收的现象。所以JVM采用的是可达性分析算法。

  • 可达性分析算法:首先会标记所有GC root能够直接关联的对象。GC root能够直接关联的对象包含:Java虚拟机栈中引用的对象,本地方法栈中引用的对象,方法区中静态变量引用的对象和常量池中引用的对象。然后,再进行GC root 的tracing,标记GC root间接关联的对象。

标记完存活对象之后便是是进行垃圾回收,垃圾回收算法主要有三种:标记清除、标记整理、标记复制

  • 标记清除:标记存活的对象,然后将垃圾对象直接清除,优点是清除效率高,缺点是内存碎片多

  • 标记整理:标记存活的对象,然后将存活的地方移动到一个连续的区域,将该区域外的对象全部清除。缺点是需要移动对象,清除效率比标记清除低。优点是不会产生内存碎片。

  • 标记复制:将内存区域分成两个部分,标记存活的对象,将存活的对象复制到另外一个区域,然后将本区域全部清除。缺点是空间利用率不高

JVM垃圾回收机制采用的分代回收,新生代的垃圾回收采用的是标记复制算法,老年代的垃圾回收采用的是标记清除或者标记整理算法。

大多数情况下,对象在新生代Eden区上进行分配,大对象则直接分配到老年代。当Eden区空间不够时,则需要发起Minor GC清理垃圾对象。当对象经过Minor GC依然存活,将移动到Survivor中,年龄+1,增加到一定年龄则移动到老年代中。如果在survivor区中相同年龄的所有对象大小大于survivor空间的一半,则大于或等于该年龄的对象直接进入老年代,无需等到MaxTenuringThreshold中要求的年龄。当老年代空间不足时会进行Full GC。

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

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

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


相关推荐

  • 电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]

    电工电子电力拖动及自动化技术考核实训台QY-DG800D[通俗易懂]一、产品简介QY-DG800D高性能电工电子电拖及自动化技术实训与考核装置是针对我国高等院校、职业技术教育的需求而开发的综合性实训考核装置。装置融合了电工、电子、电力拖动、PLC、变频器等实训内容,配备多块可自由组合的实训挂箱,适用各类职业院校、中专、技校电工、电子、电拖、机电一体化、自动化等专业的教学和从事相关专业的技术人员实训考核。二、产品特点装置实训屏上380V交流输出处设有单片机全程监控的一套过流保护装置,相间、线间直接短路或过载,电流超过设定值,系统即告警并切断总电源,确保设备安全.

    2022年6月6日
    38
  • elasticsearch集群搭建_Linux如何关闭kafka集群

    elasticsearch集群搭建_Linux如何关闭kafka集群安装包自己自行准备,或者用我百度网盘的安装包,ElasticSearchLogstashKibanaFileBeat:**链接:**https://pan.baidu.com/s/1_Iv2R8pmYaHkoaOk_m8OuQ提取码:5ezt复制这段内容:后打开百度网盘手机App,操作更方便哦创建普通用户ES不能使用root用户来启动,必须使用普通用户来安装启动。这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。创建一个es专门的用户(必须)使

    2022年10月13日
    2
  • Windows和Linux下查看Apache、MySQL、PHP版本

    Windows和Linux下查看Apache、MySQL、PHP版本

    2021年10月8日
    74
  • strtok()函数详解!

    strtok()函数详解!strtok()函数详解!1.定义分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。在头文件#include<string.h>中。2.原型char*strtok(chars[],constchar*delim);3.说明(1)当…

    2022年7月14日
    15
  • matlab 加权回归估计_matlab代码:地理加权回归(GWR)示例

    matlab 加权回归估计_matlab代码:地理加权回归(GWR)示例【实例简介】地理加权回归(GWR)matlab代码,亲测可用,该代码利用matlab实现了地理加权回归的代码,内附实际算例。【实例截图】【核心代码】functionresult=gwr(y,x,east,north,info);%PURPOSE:computegeographicallyweightedregression%—————————–…

    2022年10月6日
    2
  • 【PCIe】配置空间

    【PCIe】配置空间介绍PCI/PCIe配置空间。

    2022年6月17日
    25

发表回复

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

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