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

时间:2018-09-03 13:02:14

标签: java session connection httpsession

考虑以下这段代码:

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

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

2 个答案:

答案 0 :(得分:0)

不必将局部变量设置为null,这是CERT Oracle安全编码标准的Recommendations

的一部分
  

不需要将局部引用变量设置为null来“帮助垃圾收集器”。这会给代码增加混乱,并使维护变得困难。 Java即时编译器(JIT)可以执行等效的活动度分析,并且大多数实现都可以执行。

答案 1 :(得分:0)

在对象本身变得无用的情况下(在本例中为封闭会话),将变量设置为null可能很有用。这样的对象通常证明在调用close或类似方法之后,对该对象的所有进一步操作将失败,例如抛出IllegalStateException。在这些情况下,删除此类实例无疑是有意义的,尤其是在代码的其他部分期望并检查空实例作为“无连接”的迹象的情况下。

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

相关问题