资源泄漏(资源超出作用域)



嗨,这里有几行代码。

UserAccountVO fun() {
  // ...
  ObjectInputStream in = xstream.createObjectInputStream(is);
  return (UserAccountVO)in.readObject();
}

现在给出如下警告:

leaked_resource: 中的变量超出作用域时会泄漏它所引用的资源。

有谁能解释一下吗?

我是这样解决的:

try(ObjectInputStream in = xstream.createObjectInputStream(is);) {
  return (UserAccountVO)in.readObject();
} catch (IOException e) {
  s_logger.error(e.getMessage());
  return null;
}

在前一种情况下,您没有关闭资源' In ',这可能导致内存泄漏。因此你会得到一个警告。而在以后的情况下,您已经将'in'实例化放入TRY块中,这实际上为您添加了一个隐式的'finally'来关闭资源。

最新更新