你是说垃圾收集吗?
这意味着垃圾收集器必须对正在清理的对象了解很多。我认为GC实现不需要担心这一点。
清理稀缺资源是你作为开发人员的责任。这就是try/最终诞生的目的。
根据Stream
javadoc,
流具有基流。方法并实现自动关闭,但几乎所有流实例在使用后实际上都不需要关闭。通常,只有源为IO通道的流(例如由文件行(路径,字符集)返回的流)才需要关闭。大多数流由集合、数组或生成函数支持,不需要特殊的资源管理。(如果流确实需要关闭,则可以在try with resources语句中将其声明为资源。)
因此,听起来您需要使用一个try with resources语句。
问题内容: 阅读https://www.airpair.com/java/posts/spring-streams-memory- efficiency后 ,我很想将结果从数据库中流式传输,但是正如我与同事讨论的那样(他在评论中补充)文章),需要记住使用try-with- resources构造以避免任何内存泄漏。 为什么Java 8库在每次终端操作后都不负责关闭流本身(而不必将流实例化包装在tr
主要内容:1 什么是Java IO流,2 什么是Stream(流),3 OutputStream和InputStream1 什么是Java IO流 Java I/O(输入和输出)用于处理输入并产生输出。 Java使用流的概念来加快I/O操作的速度。java.io软件包包含输入和输出操作所需的所有类。 我们可以通过Java I/O API 在Java中执行文件处理。 2 什么是Stream(流) Stream是数据序列。在Java中,流由字节组成。之所以称其为流,是因为它就像不断流动的水流一样。
在Java8中,有一个新方法返回表示字符代码的s()流。我猜很多人会希望这里有一个s流。以这种方式设计API的动机是什么?
在Java 8中,流类实现了自动关闭。这意味着应该显式关闭流实例。 我理解为什么文件处理程序和数据库连接是可关闭的。但为什么是流呢?
对终端操作的任何调用都会关闭流,使其无法使用。这个‘特性’带走了很多权力。 我想这不是技术上的原因。这个奇怪的限制背后的设计考虑是什么? 编辑:为了演示我所讲的内容,请考虑以下C#中快速排序的实现:
为什么JSF2/Facelet的ui:repeat不接受java。util。迭代器的值?可以在迭代器后面隐藏如此多的实现和内存节约,因为长度不需要知道,所以拥有它是非常有用的。但是相反,我需要将迭代器转换为列表,并抛弃所有优点,以便ui:repeat。 可能有阶段、时间或可序列化的原因,但我对可用文档的浏览并没有给出这些原因。我们还没有使这一不可能成为可能的科学吗?