java中有垃圾回收GC, 为什么还要调用close
简单说,close()方法是关闭,而GC是销毁。
其实这很象垃圾桶和垃圾工厂的关系,我们把垃圾放入垃圾桶,垃圾并没有被销毁,只是表明:这东西我不要(close())了。而垃圾工厂才是真的把垃圾给处理了。
如果你不把垃圾放入垃圾桶(没有close()),垃圾工厂是不敢冲到你家,把垃圾拿去销毁的。
大概就是这个意思吧,低层工作原理,4楼说得非常准确了,不再重复。
流不单在内存中分配了空间,也在操作系统占有了资源,java的gc是能从内存中回收不使用的对象,但对操作系统分配的资源是无能为力的,所以就要调用close()方法来通知OS来释放这个资源。