黑马程序员技术交流社区

标题: 为什么要关闭流对象呢? [打印本页]

作者: wahaha    时间: 2013-2-21 15:07
标题: 为什么要关闭流对象呢?
本帖最后由 夏添 于 2013-2-28 19:55 编辑

看到IO流部分,发现只要有数据的读写就一定有流对象的关闭,用到*.close

我理解,关闭资源是为了节省资源,合理分配空间,

我想问的是,还有没有其他原因呢?如果不关闭流对象,会造成什么后果呢?
作者: VOIDMAIN    时间: 2013-2-21 16:21
我从硬件角度理解一下,一般情况下,在单片机程序编写的时候,也存在首先打开寄存器,发送完数据后关闭相关寄存器的操作,有考虑程序稳定性的原因,因为硬件的初始化状态并不一定完全是默认值,当你下次再需要发送的时候,如果这时候单片机的相关寄存器状态发生异常,那程序就出错了,同样的在java中应该也是有这样的考虑。
作者: 铿锵科技    时间: 2013-2-21 16:53
应该就是为了节省资源,你不能一直占用资源吧,用完了就放开是这样吧
作者: 胥文    时间: 2013-2-21 18:43
如果一直不关,久而久之,就会内存溢出,然后电脑就挂了
作者: 占琳    时间: 2013-2-22 22:37
如果不关闭 久了就会造成系统很大的负担 会崩溃 电脑就挂啦
作者: 唐长智    时间: 2013-2-22 23:33
关闭流主要是为了释放资源,虽然java有自动回收垃圾资源的功能,但是如果不关闭流,可能(只是可能)会影响自动回收的效果,造成内存大量占用。另外一个重要的原因,如果不关闭流,可能会被其他的语句访问该数据流,造成数据错误。
作者: 莫嘉伟    时间: 2013-2-22 23:41
垃圾回收机制只能回收流对像的引用,但是回收不了流对像,不在程序中关闭的话它就一直这么开着的了·




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2