zoukankan      html  css  js  c++  java
  • 该不该将变量设为 null ?

    该不该将变量设为 null ?


    对于引用类型的变量,在什么时候需要将其显式设为 null ,在什么时候不需要呢?

    局部变量

    对于局部变量,在方法结束的时候,变量就会失效,变量指向的对象引用也会减少一个,如果该变量是该对象唯一的引用,那么该对象就会被 GC 回收。这个时候完全没必要显式将变量设为 null,因为这样做只是相当于显式声明了变量作用域的终结。而且,这样做可能会有两个弊端:

    1. 可能会带来 bug 。你在这里将变量显式设为 null ,如果后面有人还要用该变量确却不知道该变量已被设为 null 就会带来 bug
    2. 可能阻止 GC 提前回收该对象。在你最后一次使用该变量后,如果不在后面显式将其设为 null ,那么 CLR 可能会提前检测到该变量后面再无引用,从而提前回收对象资源。如果你在后面显式将其设为 null ,那么 CLR 会认为该变量后面还会被使用,从而不能回收。

    成员变量

    在两种情形下,可能会将某变量显式设为 null

    1. 它是某个长生存期对象的成员,并且再也不会被该对象使用,而且比较大,在这种时候,将其设为 null 是一种优化。
    2. 它是某个长生存期对象的成员,并且再也不会被该对象使用,并且已经被 dispose 了以释放其占用的资源。这里将其设为 null 是一种安全的做法,因为确定某人误用了一个 null 对象比确定某人误用了一个已被 dispose 的对象更容易些。
  • 相关阅读:
    迭代器、可迭代对象、生成器
    提问的智慧
    爬虫【自动登陆github和抽屉】
    爬虫【爬取汽车之家新闻】
    Python多线程-守护线程
    Python的多线程
    一个简单的Python多线程
    Python实现SSH传输文件(sftp)
    Python实现SSH连接远程服务器
    实验吧CTF题库-WEB题(部分)
  • 原文地址:https://www.cnblogs.com/platobeing/p/3918150.html
Copyright © 2011-2022 走看看