输出流被close掉后,对象会被系统回收么

不会回收,只要你还持有OutputStream的引用。这里的close是用来关闭外部资源的(比如说文件句柄,网络连接),而程序内的对象回收与此没有关系。同样的,如果你不在持有OutputStream的引用,但是之前没有调用close的话,会造成外部资源的泄露。Java的垃圾回收器针对的是内部资源(其实就是内存),与外部资源没有关系,如果外部资源不关闭的话,会一直等到程序关闭才会由操作系统给你回收掉。


    推荐阅读