资源泄漏(资源超出范围)

时间:2015-07-30 08:41:45

标签: java memory-leaks resource-leak

嗨,这里有几行代码。

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;
}

1 个答案:

答案 0 :(得分:0)

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

希望它澄清。