KisaragiEffective.github.io

Yeet.

View on GitHub

結論: IOソースをベースにしている場合は明示的にcloseを呼ぶ必要がある。

まえがき

Stream<T>は大別するとSet<T>List<T>Map<K, V>といったcloseする必要がないソースと、BufferedReaderBufferedInputStreamなどのIOのIをベースにした**使い終わったらcloseする必要があるソースに分けられる。

StreamはCloseableを継承しているが、明示的にcloseする必要があるかはソースに依存する。言い換えると、IOソースから得たStreamはtry-with-resources構文などで閉じ忘れを防ぐ必要がある。 そうしないと、メモリリークの可能性がある。