楼猪的上一篇“实现IDisposable接口,手动完成资源回收”本是无心之作,自己的本意是实现类似于微软.net里的某些类,外部调用的时候using一下完事。看了园子里几位高手的留言,楼猪在这里统一感谢他们的不吝赐教。下面楼猪就简单总结并回答一下他们的观点:

1、资源回收代价大,代码中慎用GC回收
楼猪:完全赞同。一直以来楼猪肤浅的认识就是,.net是自动回收机制,早晚它都会调用GC帮我们处理释放内存的。在平时的项目中楼猪从来没有写过用GC回收什么东西,但是看过其他人的一段服务端处理excel的代码中用了GC,第一感觉还是蛮恐怖也蛮高级的。现在想想,那段代码的GC显式回收的应该是非托管资源,估计是怕操作excel占用服务器资源过多,内存飙升,所以才手动启动GC回收的。

2、托管资源就交给系统(“系统”是CLR还是GC还是其他什么呢?)处理
楼猪:部分赞同。
(1)、如果是framework里的非托管的基础类库,那些有Close或者Dispose方法的类(比如数据库连接,流和文件的操作等等),通常楼猪都是不带思考的using一下就over了;其他没有实现IDisposable接口的类,在使用完了之后再让某个实例变量指向null空引用或者什么也不写就让GC自动回收。这个当然完全赞同。
(2)、对于一个自己设计封装完成某些用途的类,比如上文里的Sample4GC类,它里面包含了一个文本流对象,假如现在要在Sample4GC里写三个不同的读写文件的方法,难道我们有必要每次都在类的三个方法里面using一下或fs.Dispose一下或fs.Close;fs=null一下吗?为什么不放在一个公共的地方比如Dispose方法里处理呢?外部调用的时候,using一下然后调用需要使用的方法不是也很方便吗?所以自己设计封装的类,看具体使用情况,该手动及时回收的还是需要自己写点代码处理的(nc楼猪又装13了。虽然一直自命也是个明白人吧,而且确实曾经也写过几个继承自IDisposable接口的公共处理类,但是Dispose基本上都是空方法,没有手动实现过资源回收,请原谅楼猪偏执浅薄的理解,呵呵)。

3、非托管资源由.net显式释放。
楼猪:完全赞同。GC的自动回收设计主要是针对托管资源,非托管资源你不控制它去管,它也管不了啊。

再抛砖,欢迎来拍。

转载于:https://www.cnblogs.com/jeffwongishandsome/archive/2010/04/25/1719879.html

无心插柳,再次浅谈.net资源的回收相关推荐

  1. 无心插柳OR志在必得?阿里推“来往”的意图

    近年来,阿里巴巴在外围的动作确实不少,投资新浪微博.投资陌陌,配合阿里自身的一些战略调整,让人觉得这家公司似乎正在经历一场前所未有的"蜕变".其实这也不难理解,在BAT三国演义中, ...

  2. 浅谈python的垃圾回收机制以及内存管理

    背景介绍 Python语言默认采用的垃圾收集机制是『引用计数法 Reference Counting』,该算法最早George E. Collins在1960的时候首次提出,50年后的今天,该算法依然 ...

  3. 浅谈MaxCompute资源规划管理及评估

    简介: 本文主要介绍如何进行MaxCompute存储资源和计算资源的评估及规划管理. 一.MaxCompute资源规划背景介绍 MaxCompute资源主要有两类:存储资源.计算资源(包含cpu和内存 ...

  4. Android偷偷进了PC村,Google是无心插柳还是扮猪吃虎?

    Android瓜分手机操作系统市场几成定局,Google眉开眼笑的背后应该更是得意洋洋,因为一个更大的阴谋即将实现. 我们知道,Android的本质就是Linux+Java.别小看这两个难兄难弟,li ...

  5. 在计算机中 音乐被数字化了 被一,音乐课题:浅谈数字化资源在幼儿园音乐教学中的运用...

    传统幼儿园音乐教学存在诸多弊端,影响了幼儿园音乐教育活动.数字化资源在幼教音乐教育活动中的应用,使在原先的教育活动设计理念的变化,同时,也给教师在组织和设计活动时,提供了更广阔的空间,从而提高了音乐活 ...

  6. 一个计算机爱好者的不完整回忆(四十五)无心插柳的收获

    我做的第一个应用本来是在新浪先提交申请上线的,不过新浪的审核速度太慢,在腾讯虽然晚了几天开始提交,但却比新浪先上线好几天.在新浪上线后一直不愠不火,不过三天时间超过了1000个授权,使我可以申请新浪S ...

  7. JMSN 起步,无心插柳,反成荫

    来今天随便看看JAVA的东西的,然后看到CSDN上有个MSN机器人梦工厂,就去看看. 为了学习JAVA,偶也看了点书,终于也懂点JAVA的语法了.看了一段代码,不知道rath.msnm.MSNMess ...

  8. 无心插柳——ZUN和“东方Project”对游戏女性角色设计的影响

    本文首发于"青花会游戏百科"(公众号ID:QingHua_Game) 在国内ACG圈有一种说法,把"寒蝉""月姬""东方Proje ...

  9. 浅谈虚拟机的垃圾回收

    最近在极客时间上的<深入拆解Java虚拟机>课堂上学习,所以记录下了学习的笔记,与及对其相关的内容进行思考和拓展. 1. 如何辨别一个对象是存是亡? 用来辨别的计算方法有两种: 引用计数法 ...

最新文章

  1. “数学不行,干啥也不行!”骨灰级程序员:其实你们都是瞎努力
  2. 基于C4.5神经网络集成
  3. 和我一起构建私有物联网云平台
  4. ESXi安装时遇到不识别的硬件的处理
  5. 黑马程序员vue前端基础教程-4个小时带你快速入门vue
  6. 上网账号口令怎么获取_如何获取自己路由器的上网账号和上网口令
  7. linux pt远程下载,Linux中使用Transmission下载BT/PT[zz]
  8. ( cf1249 )Codeforces Round #595 (Div. 3)部分题解
  9. matlab 单相整流电路,MATLAB的单相桥式整流电路研究
  10. 从平安保险出来后,我考察了大童、明亚、永达理,客观说说它们的不同
  11. hdu 2087 剪花布条 kmp小水
  12. SAS编程|ADAM阶段性小结
  13. HTML5 视频网站
  14. 软妹子之心,智能硬汉子们可懂?
  15. 雷石 扩展文件服务器,雷石发布KTV软硬件新品:智能手表可点歌
  16. 微信weui之actionSheet应用
  17. win11_中文包/中文输入法(微软拼音)设置/键盘/输入法移除win10启用单词输入法/基于英语语言包的美式键/半角切换设置开关
  18. 腾讯云数据库TDSQL-单机安装体验安装脚本分析
  19. 商城快递查询 (快递100)
  20. 什么是 API?电商API接口的用处是什么?

热门文章

  1. Android 中流量、电量、弱网环境怎么测?
  2. ORACLE RAC运行在300G内存以上需要考虑的东西
  3. Linq原理相关(隐式类型var、匿名类型、实例化类、集合初始化)
  4. portal启用自动 JSP 重新装入
  5. 逆向工程平台 Radare2
  6. 寻找 时间轴网页设计灵魂
  7. 抛弃jQuery 深入原生的JavaScript
  8. CenterNet原理详解
  9. 配置 sql server linux,配置SQL Server on Linux(2)
  10. xshell密码保存位置_一键安装宝塔面板后哪里找账号密码?