【发布时间】:2015-03-02 15:38:20
【问题描述】:
阅读https://www.airpair.com/java/posts/spring-streams-memory-efficiency 后,我很想将结果从数据库中流出,但正如我与一位同事讨论的那样(cfr. 他在该文章中添加的评论),需要记住使用 try-with-resources构造以避免任何内存泄漏。
- 为什么 Java 8 库不负责在每个 terminal operation 之后自行关闭流(无需将流实例包装在 try-with-resources 中)?
- 如果适用,是否有任何计划将此功能添加到 Java 中,或者提出请求是否有意义?
【问题讨论】:
-
terminal operation是什么意思? -
我认为您将
java.io.InputStream与java.util.stream.Stream混为一谈,这是两个非常不同的概念 -
@Zoltán 不,我说的是
java.util.Stream,它是AutoCloseable,因此可以在try-with-resources中使用。 @MartinSerrano 我添加了一个指向 Java 文档的链接,该链接涉及一般的流,特别是终端操作。 -
我不明白你的第一个问题。这没有太大意义。
-
try-with-resources 语法是准确完成您所要求的事情的正确方法。
标签: java java-8 java-stream