A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wahaha 中级黑马   /  2013-2-21 15:07  /  4866 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 夏添 于 2013-2-28 19:55 编辑

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

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

我想问的是,还有没有其他原因呢?如果不关闭流对象,会造成什么后果呢?

7 个回复

倒序浏览
我从硬件角度理解一下,一般情况下,在单片机程序编写的时候,也存在首先打开寄存器,发送完数据后关闭相关寄存器的操作,有考虑程序稳定性的原因,因为硬件的初始化状态并不一定完全是默认值,当你下次再需要发送的时候,如果这时候单片机的相关寄存器状态发生异常,那程序就出错了,同样的在java中应该也是有这样的考虑。
回复 使用道具 举报
应该就是为了节省资源,你不能一直占用资源吧,用完了就放开是这样吧
回复 使用道具 举报
如果一直不关,久而久之,就会内存溢出,然后电脑就挂了
回复 使用道具 举报
如果不关闭 久了就会造成系统很大的负担 会崩溃 电脑就挂啦
回复 使用道具 举报
关闭流主要是为了释放资源,虽然java有自动回收垃圾资源的功能,但是如果不关闭流,可能(只是可能)会影响自动回收的效果,造成内存大量占用。另外一个重要的原因,如果不关闭流,可能会被其他的语句访问该数据流,造成数据错误。
回复 使用道具 举报
垃圾回收机制只能回收流对像的引用,但是回收不了流对像,不在程序中关闭的话它就一直这么开着的了·
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马