0

嗨,这里有几行代码。

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

1 回答 1

1

在前一种情况下,您没有关闭“in”资源,这可能会导致内存泄漏。因此,您会收到警告。而在后一种情况下,您已将“in”实例化放在 TRY 块中,该块实际上添加了一个隐含的“finally”供您关闭资源。

希望它澄清。

于 2015-07-30T08:46:36.640 回答