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' でリソースを閉じていないため、メモリ リークが発生する可能性があります。したがって、警告が表示されます。後のケースでは、TRY ブロック内に「in」インスタンス化を配置しましたが、これにより、リソースを閉じるための暗黙的な「finally」が実際に追加されます。

それが明確になることを願っています。

于 2015-07-30T08:46:36.640 に答える