WeakReference(弱引用)
我们平常用的都是对象的强引用,如果有强引用存在,GC是不会回收对象的。我们能不能同时保持对对象的引用,而又可以让GC需要的时候回收这个对象呢?.NET中提供了WeakReference来实现。弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。

使用上 很简单:
Object obj = new Object();
WeakReference wref = new WeakReference( obj );
obj = null;

使用对象A:
Object obj2 = wref.Target;

if( obj2 != null )

{    // 做你想做的事吧。 }

else

{ // 对象已经被回收,如果要用必须新建一个。 }

GC会有两化回收,但这个具体时间不确定,有算法。 所以 =null 了以后,不能保证对像真的消失。 一般情况下不用去管这个 只有当 占用内存资源过大时,需要马上清理,才会考虑。

两轮回收
一般招收 c#程序员,这题必考。
这个跟 COM中的计数有点类似 因为一个对像可能存在交叉占用资源的情况
如果强制立刻回收,需要额外理那些与资源的连接关系,而且这些关系又可能形成再引用,造成递归。
所以干脆点,集中一个时间,共同消灭。

最新文章

  1. linux终端指令总结
  2. 用友NC开发的ListView切换成FormEdit
  3. layer弹窗监控键盘事件
  4. UStore-添加自定义工作流(JDF)到产品
  5. BNUOJ 52325 Increasing or Decreasing 数位dp
  6. python代码风格-PEP8
  7. 【转】用 PHP 内置函数 file_put_contents 写入文件
  8. PHP字符串操作常用函数
  9. SGU 106 The Equation 扩展欧几里得应用
  10. SpringMVC批量上传
  11. 第一个WebAPI项目
  12. JQuery的$.each(list,function(i,a){} 中 i和a 未定义,a取不到值
  13. tfs增加用户
  14. ajax(读取json数据)
  15. docker 14 dockerfile自定义mycentos
  16. Centos 为Nginx 搭建https
  17. spring boot 集成freemarker
  18. file 选取文件/文件夹
  19. camunda 开源的bpm系统
  20. HBase 管理,性能调优

热门文章

  1. python 获取类中除内置方法外的所有方法名
  2. Can't connect to local MySQL server through socket '/tmp/mysql.sock'
  3. C++基础 new和delete
  4. poj 1759 二分搜索
  5. 7 定制10MINs首页2
  6. loadrunner破解出现“license security violation,Operation is not allowed”的错误提示
  7. 四 Android Capabilities讲解
  8. freemaker参考地址
  9. 孤荷凌寒自学python第三十二天python的代码块中的异常的捕获
  10. crontab-用于设置周期性被执行的指令