結論: IOソースをベースにしている場合は明示的にcloseを呼ぶ必要がある。
まえがき
Stream<T>は大別するとSet<T>やList<T>、Map<K, V>といったcloseする必要がないソースと、BufferedReaderやBufferedInputStreamなどのIOのIをベースにした**使い終わったらcloseする必要があるソースに分けられる。
StreamはCloseableを継承しているが、明示的にcloseする必要があるかはソースに依存する。言い換えると、IOソースから得たStreamはtry-with-resources構文などで閉じ忘れを防ぐ必要がある。
そうしないと、メモリリークの可能性がある。