zoukankan      html  css  js  c++  java
  • C#弱引用

    1、弱引用可以让您保持对对象的引用,同时允许GC在必要时释放对象,回收内存。对于那些创建便宜但耗费大量内存的对象,即希望保持该对象,又要在应用程序需要时使用,同时希望GC必要时回收时,可以考虑使用弱引用。

    2、弱引用在引用对象的同时仍然允许对该对象进行垃圾回收。

    3、实际存在的是一个对象,可以当n个来使用

    4、以下是msdn中的内容

    公共语言运行库“垃圾回收”机制回收分配给对象的无法访问的(即“不可到达的”)内存。如果对对象的所有引用变得无效(例如,将那些引用设置为空引用(Visual   Basic   中为   Nothing)),则该对象成为不可到达的。

    垃圾回收将调用对象的   Finalize   方法(即执行“终结”),如果存在这样的方法并且指示这样做。终结完成后,如果以某种方式重新获取并重用垃圾回收对象,则将发生不可预知的结果。

    被直接或间接引用的对象是“可到达的”,不允许垃圾回收器回收它。对可到达的对象的引用称为“强引用”。

    “弱引用”也引用可到达的对象(称为“目标”)。用户通过将   Target   属性的值赋给变量来获取对目标的强引用。但是,如果没有对目标的强引用,目标将变得符合垃圾回收条件,即使它仍然有弱引用。

    在对象变为符合垃圾回收条件时的时间和它被回收的时间之间可能有一个延迟。如果用户试图在目标已被回收后检索它,将只会检索到空引用。如果目标尚未被回收,则将检索到有效的引用。

    对象可以是已使用的(即“活着的”);变成未使用的并符合垃圾回收条件(即“死掉的”);然后再被使用(即“复活的”)。但是,如果在终结后访问复活的对象,将导致不可预知的行为。

    WeakReference   对象可以指定在终结之后是否保持对其目标的引用;即弱引用是否应跟踪目标的复活。不跟踪复活的弱引用称为“短弱引用”,跟踪复活的弱引用称为“长弱引用”。

  • 相关阅读:
    python count函数
    kubenetes服务发现
    k8s网络
    k8s创建pod流程
    openstack创建虚拟流程、各组件介绍
    生产者消费者问题
    Date类和Calendar类
    Timer定时器
    Java中的克隆
    注解
  • 原文地址:https://www.cnblogs.com/linlf03/p/2036360.html
Copyright © 2011-2022 走看看