此标题可以为“.NET 框架如何正确的释放资源”。参考:https://www.cnblogs.com/fdyang/p/3456258.html

托管的内存资源,这是不需要我们操心的,系统已经为我们进行管理了。

对于非托管的资源,这里再重申一下,就是Stream,数据库的连接,GDI+的相关对象,还有Com对象等等这些操作系统资源,需要我们手动去释放。

如何去释放,应该把这些操作放到哪里比较好呢。.Net提供了三种方法,也是最常见的三种,大致如下:

1. 析构函数;

2. 继承IDisposable接口,实现Dispose方法;

3. 提供Close方法。

析构函数

Dispose方法

Close方法

意义

销毁对象

销毁对象

关闭对象资源

调用方式

不能被显示调用,会被GC调用

需要显示调用

或者通过using语句

需要显示调用

调用时机

不确定

确定,在显示调用或者离开using程序块

确定,在显示调用时

 

C#如何正确的释放资源相关推荐

  1. HttpClient的释放资源到底在释放什么?如何正确的释放资源?

    ApacheHttpClient github地址:https://github.com/apache/httpcomponents-client/tree/4.5.x ApacheHttpClien ...

  2. HttpClient 如何正确的释放资源

    HttpClient 需要关闭的资源 使用HttpClient 访问会涉及到三个层次的资源, 从上往下依次是: HttpClient 类型的对象.这是Http 呼叫的客户端. Http的请求的对象,一 ...

  3. .Net操作Excel后彻底释放资源

    .Net操作Excel后彻底释放资源 和同事在工作中遇到的: 在.net中,有时候需要对Excel文档进行操作,但通常我们并不能真正的正确释放Excel占用的资源. 我们在代码中通常会这样操作Exce ...

  4. Servlet监听器Listener

    2019独角兽企业重金招聘Python工程师标准>>> 0.Listener是Servlet的一个功能组件: (1)用于application,session,request三个对象 ...

  5. Listener 监听器

    Listener 监听器 前言:之前写了一篇关于Filter的文章:http://tianweili.github.io/blog/2015/01/26/java-filter/,现在再来一篇List ...

  6. pthread_cleanup_push与pthread_cleanup_pop的目的、作用

    首先你必须知道pthread_cleanup_push与pthread_cleanup_pop的目的(作用)是什么. 比如thread1:执行 pthread_mutex_lock(&mute ...

  7. BOOST内存管理(二) --- boost::pool

    Boost库的pool提供了一个内存池分配器,用于管理在一个独立的.大的分配空间里的动态内存分配.Boost库的pool主要适用于快速分配同样大小的内存块,尤其是反复分配和释放同样大小的内存块的情况. ...

  8. C++ 智能指针 :内存泄漏、 RAII、智能指针、auto_ptr、unique_ptr、shared_ptr、weak_ptr、定制删除器deleter

    文章目录 内存泄漏 什么是内存泄漏 内存泄漏的危害: 如何避免内存泄漏 RAII 智能指针 auto_ptr unique_ptr shared_ptr 循环引用问题 weak_ptr 定制删除器 内 ...

  9. C# GC 垃圾回收机制原理

    转载参照自以下文章: http://www.cnblogs.com/fdyang/p/3456258.html (c#) 销毁资源和释放内存 https://www.cnblogs.com/Jessy ...

最新文章

  1. 0607am抽象类接口析构方法tostring小知识点
  2. Win10如何打开软键盘?
  3. gtp6 linux 启动_Win10更新后导致双系统(LinuxWindows)开机引导失败出现grub rescue的修复办法...
  4. php mysql生日提醒_基于AIML的PHP聊天机器人
  5. Sass函数-数字函数-floor()函数
  6. 坑爹的UICollectionView
  7. linux mysql -d_在linux中无法启动mysqld 服务
  8. c语言1234为什么不是常量,C语言学习1
  9. mysql中join各种形式大全及操作和图片
  10. D-Link service.cgi远程命令执行漏洞复现
  11. matlab保存图片saveas,matlab saveas 图片
  12. 一文读懂增强现实(AR)技术
  13. 当代最值得收藏的画家作品_当代最具潜力和收藏价值的十大画家
  14. 入行物联网8年后的自白,机智云系“物联网创业者”的希望承载者
  15. getaddrinfo的用法详解 .
  16. 您玩儿转手机通讯录了吗?
  17. 【LAB1-Ruijie】验证分别在console口和vty接口下的login、login local、no login的区别
  18. 黑莓开发之环境的搭建
  19. java的rsa加密算法_用java编程实现RSA加密算法
  20. 照片如何加滤镜?一步一步教会你给图片加上滤镜

热门文章

  1. 阿里云服务器升级node版本
  2. 大数据处理 - Bitmap Bloom Filter
  3. 程序员的乐趣,那些可爱的 Linux 命令
  4. mysql gbk编码 字节数,mysql中utf-8编码数据库转换成GBK编码的问题
  5. SuperOneClick一键Root工具使用方法
  6. python俄罗斯方块落地展示_Python 竟能开发如此精美的俄罗斯方块!
  7. 2009年国庆再回桂林(有图片)
  8. 【Java刷题笔记】牛客网Java入门 1~4
  9. JZOJ 3809 【NOIP2014模拟8.25】设备塔
  10. 导出功能: 导出为excel文档,后端做导出处理,js代码发送接口直接下载