托管与非托管资源

区分:

        托管资源是指受 .NET垃圾回收器(GC)管理的资源

        非托管资源是指不受.NET垃圾回收器 (GC)管理的资源

属于非托管资源的:

        文件句柄,如:FileStream、StreamReader、StreamWritert

        数据库连接,如:SqlConnection

        网络套接字,如:Scoket、 TcpClient

       外部进程和线程,如:Process、Thread

       图形资源,如:Bitmap、Pen、Graphics

        内存映射文件,如:MenoryMappedFile

        Windows句柄:Windows API调用产生的句柄,如:xxHandle

        COM对象:与外部系统(如Excel)交互时,COM对象需要使 Marshal.ReleaseComObject 来显式释放

        硬件资源:与外部硬件设备的交互,需要手动释放,如:SerialPort。

释放方法:

        using: using是处理非托管资源的一种简便方式,它能确保对象在使用后被正确释放

using的对象必须实现IDisopsable接口(包含Dispose方法),自动调用dispose释放资源

using (FileStream stream = new FileStream(filePath, FileMode.Create, FileAccess.Write)){workbook.Write(stream);}
public class FileStream : Stream     //FIleStream继承自Streampublic abstract class Stream : MarshalByRefObject, IDisposable   //Stream 实现了 IDisposable方法

        GC.Collect()/GC.WatiForPendingFinalizers():是一种强制触发垃圾回收的方法,用于让GC清理所有的未托管资源和对象。但是,垃圾回收的时机由系统决定,它不会立即清理对象

*如果可以的话,优先使用using释放。而不是依赖GC

        

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

初学者必备:一文读懂大语言模型(LLM)入门攻略!

当前2024年,LLM领域发展日新月异,很多新的实用技术层出不穷,个人认为要跟上LLM的发展,需要掌握以下内容,并需要不断地跟踪学习。 入门LLM前置基础 深度学习基础知识:推荐李宏毅的深度学习课程Python和num…

OpenCV图像分割(2)分水岭算法图像分割函数watershed()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用分水岭算法执行基于标记的图像分割。 该函数实现了分水岭算法的一种变体,即无参数基于标记的分割算法,在文献 [186]…

matlab中在一个图上持续画多条曲线的方法

在数据分析的过程中,会遇到一种情况,就是想对多组数据进行分析,这时就想把他们放在同一张图里,来看他们表现出来的特征。如下图所示: 例如,我这里有几组数据,想对他们的整体趋势进行分析。 1、…

乐观锁处理秒杀超卖问题及悲观锁解决一人一单

Service Transactional//事务控制 public class VoucherOrderServiceImpl extends ServiceImpl<VoucherOrderMapper, VoucherOrder> implements IVoucherOrderService {ResourceSeckillVoucherServiceImpl seckillVoucherService;ResourceRedisIdWorker redisIdWorker;Re…

Navicat连接数据库

一、MySQL地卸载&#xff1a; 二、Navicat连接数据库&#xff1a; 安装navicat的安装&#xff1a; 错误解决方法&#xff1a; 实验过程&#xff1a; 在本地sql数据库可以访问&#xff0c;说明数据库开启 用navicat连接&#xff1a;出现问题&#xff1a; 将mysql用户登录的加密…

图论系列(dfs)9.25

一、主题空间 场地由若干主题空间与走廊组成&#xff0c;场地的地图记作由一维字符串型数组 grid&#xff0c;字符串中仅包含 "0"&#xff5e;"5" 这 6 个字符。地图上每一个字符代表面积为 1 的区域&#xff0c;其中 "0" 表示走廊&#xff0…

计算机毕设选题推荐-基于python的电子健康信息分析系统【源码+文档+调试】

精彩专栏推荐订阅&#xff1a;在下方主页&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f496;&#x1f525;作者主页&#xff1a;计算机毕设木哥&#x1f525; &#x1f496; 文章目录 一、电子健康信息…

H7-TOOL脱机烧录增加国产3PEAK混合信号单片机TPS32和富芮坤FR8008,FR8003和FR2012支持

支持单路&#xff0c;1拖4和1拖16脱机烧录 3PEAKS思瑞浦混合信号单片机TPS32M支持 1、在线烧录&#xff0c;脱机烧录均正常。 2、注意事项&#xff1a;推荐使用整片擦除。 在线烧录&#xff1a; 脱机烧录&#xff1a; 接线效果&#xff1a; 富芮坤FR8008x支持&#xff0c;支…

校园自助打印系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;店长管理&#xff0c;打印店管理&#xff0c;打印服务管理&#xff0c;服务类型管理&#xff0c;预约打印管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&…

java基础课程-spring security基础课程

1. spring security介绍&#xff1a; 1.1 spring security定义&#xff1a; 2. Spring Security使用 2.1 用户身份认证&#xff1a; 2.1.1 写在配置文件中&#xff1a; 2.1.2 不用配置文件&#xff1a;&#xff0c;service实现UserDetailService这个类的的loadUserByUserNam…

CNVD漏洞和证书挖掘经验总结

前言 本篇文章主要是分享一下本人挖掘CVND漏洞碰到的一些问题&#xff0c;根据过往成功归档的漏洞和未归档的漏洞总结出的经验&#xff0c;也确实给审核的大佬们添了很多麻烦&#xff08;主要真的没人教一下&#xff0c;闷着头尝试犯了好很多错误&#xff0c;希望各位以后交一个…

JavaScript类型转换和相等性详解

类型转换 10"objects" //10objects,数字10转换为字符串 "7"*"4" //28&#xff0c;两个字符串均转为数字,只要不是加&#xff0c;其他都按两个数字算 var n 1-"x"// NaN&#xff0c;字符串x无法转化为数字 n"objects"//…

微服务--Docker

Docker是一个开源的应用容器引擎&#xff0c;它基于Go语言并遵从Apache2.0协议开源。Docker提供了一种轻量级、可移植和自包含的容器化环境&#xff0c;使开发人员能够在不同的计算机上以一致的方式构建、打包和分发应用程序。 一、Docker的基本概念 容器&#xff08;Contain…

TON生态系统开发指南:从零开始构建你的Web3应用

随着Web3的不断发展&#xff0c;TON&#xff08;The Open Network&#xff09;生态系统逐渐成为备受瞩目的区块链平台。依托其与Telegram的深度整合&#xff0c;TON生态为开发者提供了一个极具潜力的开发环境&#xff0c;特别是在社交、支付和金融这三个核心领域。本文旨在帮助…

企业源代码也需要加密?2024十款源代码加密软件排行榜

在当今数字化时代&#xff0c;源代码作为企业的核心资产&#xff0c;其重要性不言而喻。源代码不仅是企业技术创新的体现&#xff0c;更是商业机密和竞争优势的基石。然而&#xff0c;随着网络攻击和数据泄露事件的频发&#xff0c;源代码的安全性面临着前所未有的挑战。企业源…

零基础转行学网络安全怎么样?能找到什么样的工作?

网络安全对于现代社会来说变得越来越重要&#xff0c;但是很多人对于网络安全的知识却知之甚少。那么&#xff0c;零基础小白可以学网络安全吗&#xff1f;答案是肯定的。 零基础转行学习网络安全是完全可行的&#xff0c;但需要明确的是&#xff0c;网络安全是一个既广泛又深入…

centos7 更新 yum源 为 阿里云 LTS

centos7 更新 yum源 为 阿里云 按照下面的 步骤 1,2&#xff0c;3,4 来一遍 参考文档 CentOS yum源设置为国内aliyun yum源 https://developer.aliyun.com/article/1523301?spm5176.26934562.main.2.16c938e4ys9prQ CentOS 镜像 https://developer.aliyun.com/mirror/cent…

【每天学点AI】五个阶段带你了解人工智能大模型发展史!

20世纪50年代 NLP的早期研究主要基于规则的方法&#xff0c;依赖于语言学专家手工编写的规则和词典。这些规则通常是关于语法、语义和句法结构的人工规则。 例如一个简单的陈述句通常遵循“主语 谓语 宾语”的结构&#xff0c;每一个陈述句都以这种规则做标记。 那时候的NLP…

SpringCloud之服务网关zuul初级篇

SpringCloud之服务网关zuul初级篇 前面的文章我们介绍了&#xff0c;Eureka用于服务的注册于发现&#xff0c;Feign支持服务的调用以及均衡负载&#xff0c;Hystrix处理服务的 熔断防止故障扩散&#xff0c;Spring Cloud Config服务集群配置中心&#xff0c;似乎一个微服务框…

从 Tesla 的 TTPoE 看资源和算法

特斯拉的 ttpoe 出来有一段时间了&#xff0c;不出所料网上一如既往的一堆 pr 文&#xff0c;大多转译自 演讲 ppt 和 Replacing TCP for Low Latency Applications&#xff0c;看了不下 20 篇中文介绍&#xff0c;基本都是上面这篇文章里的内容&#xff0c;车轱辘话颠来倒去。…