在 session.close() 之后设置 session=null 有意义吗?

Does it make sense to set session=null after session.close()?

考虑这段代码:

public void foo(){
       try{
        //some cool statements here
      }
      finally {
         if(session != null){
             session.close();
             sesssion = null;
          }
     }
   }

由于会话已关闭,分配给会话的值是否有意义?请提供一些有价值的见解。

将局部变量设置为 null 是不必要的,也就是说,它是 CERT Oracle 安全编码标准的一部分 Recommendations

Setting local reference variables to null to "help the garbage collector" is unnecessary. It adds clutter to the code and can make maintenance difficult. Java just-in-time compilers (JITs) can perform an equivalent liveness analysis, and most implementations do so.

在对象本身变得无用的情况下,将变量设置为 null 可能很有用,在本例中是一个关闭的会话。此类对象通常记录在调用 close 或类似方法后,对该对象的所有进一步操作都将失败,例如通过投掷 IllegalStateException。在这些情况下,擦除这样的实例可以说是有意义的,特别是如果代码的其他部分期望并检查空实例作为 "no connection".

的标志

如其他答案所述,垃圾回收并不是将变量设置为 null 的正当理由。