首页 > 其他分享 >垃圾回收相关概念整理

垃圾回收相关概念整理

时间:2023-03-02 14:56:16浏览次数:32  
标签:对象 回收 GC 垃圾 整理 CLR 引用

1 引用跟踪算法


CLR使用一种引用跟踪算法来确实对象是否回收。

2 根


所有引用类型的变量都叫根。

3 活动根


活动根分为三种:

  1. 当前正在执行的方法(或在其调用栈的任何一个方法中) 的局部变量或者参数;
  2. 静态变量;
  3. 终结队列中的对象。

4 垃圾回收过程


  • 标记阶段
    CLR 遍历堆中所有对象,将同步块索引字段中的一位设为0。然后检查所有的活动根,及其引用的对象,将其同步块索引字段中的一位设为1(可达的)。不可达的对象将会被回收。
  • 压缩阶段
    将幸存下来的对象,紧密排列,并修正引用。压缩避免堆的碎片化。

5 代


CLR 的 GC 是基于代的垃圾回收器,对代码做了三个假设:

  • 对象越新,生存期越短;
  • 对象越老,生存期越长;
  • 回收堆的一部分,速度快于回收整个堆;

大体过程如下:

  • CLR 初始化时,所有对象都是第0代,并给选择一个预算容量(几百KB到几M);
  • 随着程序的运行,如果分配一个新对象造成第0代超预算,就启动GC;
  • 启动GC后,会检查第1代占用了多少内存,如果超出第1代的预算,就会回收第1代和第0代所有不可达对象;
  • 第0代幸存的对象提升至第1代,第1代幸存对象提升至第2代。

6 垃圾回收的触发条件


  • 第0代超出预算;
  • 显示调用GC.Collect()方法;
  • Windows 报告低内存;
  • CLR 卸载AppDomain;
  • CLR 关闭。

7 垃圾回收模式

  • 工作站
  • 服务器

标签:对象,回收,GC,垃圾,整理,CLR,引用
From: https://www.cnblogs.com/yonlin/p/17169341.html

相关文章

  • 1757. 可回收且低脂的产品
    题目链接:https://leetcode.cn/problems/recyclable-and-low-fat-products/题目描述: 由题目可知,我们需要查找低脂可回收的产品编号,用一行就可以搞定:SELECTproduct_i......
  • 知识点整理——最小环
    前言近日刷图论题遇到了多道求解最小环的例题,由于方法众多,用法不尽相同,数次被此所困扰。在互联网上寻找良久,却没能发现什么系统性的整理,所以便有了此文。求解此类问题:......
  • php5和php7垃圾回收的区别
    前言:之前对PHP的GC只是了解了个大概,这次详细了解下PHP的垃圾回收机制(GC)。介于网上大部分都是PHP5.X的GC,虽然php5到php7GC部分做出的改动较小,但我觉得还是一起写下来比......
  • python基础知识整理
    一:pyhton数据类型数字类型:整型(int)/浮点型(float)/布尔型(bool)/复数型(complex)非数字类型:字符串(str)/列表(list)/元组(tuple)/字典(dict)不变类型:整型(int)/......
  • “堆内存持续占用高 且 ygc回收效果不佳” 排查处理实践
    作者:京东零售王江波说明:部分素材来源于网络,数据分析全为真实数据。一、问题背景自建的两套工具,运行一段时间后均出现内存占用高触发报警,频繁younggc且效果不佳。曾经尝......
  • 爬虫代码中Python中random模块的方法整理
    1、random产生0~1之间的随机小数。2、randrange在前两个参数范围内产生一个数字。不包括第二个参数,第三个参数是步长。3、randint在两个参数之间产生一个数字,左右两个参数都......
  • 爬虫代码中Python中time模块的方法整理
    1、时间戳time.time当前时间。2、time.sleep程序暂停三秒钟。3、time.ctime当前时间。年月日时分秒。4、time.localtime()将时间戳转换成元组。显示当前时间的详细信息。tim......
  • 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(9)-Charles如何修改请求参数和
    1.简介宏哥之前一直用postman调接口比较多(web端),也非常容易上手和操作。但有时候想要去修改APP的页面展示,造数据又会比较麻烦,你自己造相对还好些,要是让开发造,还得低眉顺眼......
  • css易掉坑知识点整理之系列(二)
    之前也整理过系列(一),有兴趣的请点击:​​系列一​​。这是我在学习的过程中遇到的易错的或者易掉坑的css知识点的总结整理,嗯,还是会持续更新的2018/6/19今天遇到了一个base64格......
  • TweenMax学习笔记整理
    因为要做一个案例,里面用到了很多动画,TweenMax真的是一个很强大的动画库,所以就学了一点里面的方法,现在整理出来官网​​:https://greensock.com/tweenmax​​注意:这个动画库是......