栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么close()一个inputstream很好?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么close()一个inputstream很好?

InputStream占用了一个很小的内核资源,一个低级文件句柄。此外,只要您可以打开该文件以进行读取,该文件就会在某种程度上被锁定(删除,重命名)。假设您不在意锁定的文件。最终,如果您需要读取另一个文件,并使用新的InputStream打开它,内核将为您依次分配一个新的描述符(文件流)。这最终将加起来。如果它是一个运行时间长的程序,那么直到您的程序失败只是时间问题。

处理器的文件描述符表通常大小有限。最终,文件句柄表将耗尽该进程的可用插槽。即使是成千上万的文件,对于长时间运行的应用程序,您仍然可以轻松用尽它,此时,您的程序无法再打开新文件或套接字。

流程文件描述符表就像以下内容一样简单:

IOHANDLE fds[2048];  // varies based on runtime, IO library, etc.

您首先要占用3个插槽(STDIN,STDOUT,STDERR)。同样,任何网络套接字和其他类型的IPC都将在同一表中使用插槽。填写该内容,您就对程序执行了拒绝服务。

所有这些都很高兴知道;如何最好地应用它?

如果您依靠本地对象超出范围,则取决于垃圾收集器,垃圾收集器可以在自己的美好时光(不确定性)中收获它。不要依赖GC,显式关闭流。

对于Java,您想在实现java.lang.AutoCloseable的类型上使用try-with-
resources,“每个文档都包含实现java.io.Closeable的所有对象”:https
//docs.oracle.com/javase
/tutorial/essential/exceptions/tryResourceClose.html

使用C#,等效项是实现IDisposable的对象上的“ using”块



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/453561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号