首页 > 编程语言 >C# 垃圾回收机制

C# 垃圾回收机制

时间:2024-06-16 21:55:09浏览次数:27  
标签:C# 托管 回收 对象 垃圾 资源

C# 垃圾回收机制

C#的资源分类

托管资源

C#的申请的内存空间都是在CLR上自动管理,像

string[] arr= new string[10]
//或者new class等等

托管资源是.Net平台CLR提供的内存管理方式,由.Net自动释放,托管资源:栈资源(根据函数运行的时候自动分配释放)、托管堆内存(用户需要的时候new,不需要自动释放)

非托管资源

CLR只能跟踪生存周期,不能决定如何释放资源,例如:数据库链接,文件句柄和指针结果等。

垃圾收集

垃圾收集通过从程序的根对象开始层层遍历在堆上分配的对象,当不再被引用到的对象,即为垃圾被收集,可被引用到的对象被称为Reachable Object。
root对应的对象(全局对象,静态变量,栈上现存变量,CPU寄存器中变量)

Mark-Compact算法

具体分为两个阶段,Mark和Compact
阶段1,标记所有对象都可以回收,找出不能回收的对象,再打上标记。
阶段2,压缩不连续的内存,从heap的基址开始排列。

如图所示
image

到这里C#的垃圾回收就简单介绍到这了

标签:C#,托管,回收,对象,垃圾,资源
From: https://www.cnblogs.com/AndreaDO/p/18251258

相关文章

  • 安卓应用开发——Android Studio中This project contains Java compilation errors, w
    这个提示信息表明你的Java项目中存在编译错误,这些错误可能会导致自定义视图(customviews)的渲染失败。要解决这个问题,你需要先修复这些编译问题。以下是一些步骤,你可以按照这些步骤来查找并修复Java编译错误:查看编译错误:在你的集成开发环境(IDE)中,通常会有一个编译错误或警......
  • HNUCM-2024年春季学期《算法分析与设计》练习15
    问题A:简单递归求和题目描述使用递归编写一个程序求如下表达式前n项的计算结果: (n<=100)1- 3+5-7+9-11+......输入n,输出表达式的计算结果。输入多组输入,每组输入一个n,n<=100。输出输出表达式的计算结果。样例输入 Copy12样例输出 Copy......
  • 百度翻译逆向Acs-Token逆向百度翻译爬虫(调试篇)
    文章声明本文章中所有内容仅供学习交流,严禁用于商业用途和非法用途,否则由此产生的一切后果均与文章作者无关,若有侵权,请联系我立即删除!概要-该篇文章是基于translate接口的分析-用到的工具Edge浏览器逆向目标求参数Acs-Token上一篇百度翻译是技巧篇,这篇来带着......
  • springcloud-config配置中心
    配置中心主要解决微服务数量多了之后的公共配置文件问题,比如通用配置列表之类,数据库,三方件连接参数之类。配置中心分为服务端(可集群)和客户端服务端:引入服务端依赖<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spr......
  • C++智能指针
    std::unique_ptr:独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对......
  • Linux 文件的权限信息解读 chmod修改权限 数字序号表示权限
    ls-l#列出当前文件显示详细信息drwxr-xr-x.2dpctest6Jun1507:45test.txt共分为三部分drwxr-xr-x.:表示文件和文件夹的权限信息dpc:文件,文件夹所属的用户test:文件和文件夹所属的用户组drwxr-xr-x解读d表示为文件夹rwx表示dpc的权限r-x所属用户组......
  • 【JavaScript脚本宇宙】提升Markdown工作流:不可错过的六个JavaScript库
    优化你的Markdown体验:六大JavaScript库一网打尽前言在现代Web开发中,Markdown作为一种轻量级的标记语言,凭借其简洁易读的语法和广泛的适用性,迅速成为开发者们的宠儿。为了更有效地解析和处理Markdown内容,JavaScript社区涌现了许多功能强大的库。这些库不仅能够高效地将Mark......
  • [240615] X-CMD 发布 v0.3.11,增加对 elvish 的支持
    目录X-CMD发布v0.3.11,增加对elvish的支持,并优化对nushell,fish,xonsh,tcsh的支持✨co模块-copilot✨elv模块✨hubX-CMD发布v0.3.11,增加对elvish的支持,并优化对nushell,fish,xonsh,tcsh的支持✨co模块-copilot新增功能:现在可以在--co|,子命......
  • SM4 CFB算法实现详解(七)
    1、SM4CFB说明  CFB(CipherFeedback,密文反馈)模式是一种将块密码(如SM4)转换为流密码的模式。CFB模式将前一个加密块的密文作为当前加密块的输入,同时产生密钥流来加密数据。该模式适用于流式数据传输。2、SM4-CFB模式的优点不需要填充由于CFB模式是流模式,不需要对数......
  • 【flink实战】flink-connector-mysql-cdc导致mysql连接器报类型转换错误
    文章目录一.报错现象二.方案二:重新编译打包flink-connector-cdc1.排查脚本2.重新编译打包flink-sql-connector-mysql-cdc-2.4.0.jar3.测试flink环境三.方案一:改造flink连接器一.报错现象flinksql任务是:mysql到hdfs的离线任务,flink在消费mysql时报如上错误......