开发者社区> 问答> 正文

java中io等非托管资源close与赋值为null有什么区别

io操作如果没有close而直接赋值为null有什么后果,而close之后又没有赋值为null,也就是还有对象的引用,那这个对象会不会释放内存,垃圾回收器会不会回收它
Reader reader = new InputstreamReader(new FileInputStream()); 如果reader.close()关闭了reader的资源 则FileInputStream的资源有没有关闭 ,没关闭的话如何关闭

展开
收起
蛮大人123 2016-06-07 14:44:38 2903 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    close()操作是关闭资源的作用,没close的话,如果另一个程序也要打开写,或读这个文件就会出问题。
    close是为了释放系统资源。close操作不执行,可能会影响其他进行的操作,并没有什么大的后果。
    java的对象,不置为null,也会被垃圾回收的,内存回收跟是否close操作无关。一般对象的作用域中,方法调用完成,对象空间会自动回收的。

    2019-07-17 19:30:09
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
多IO线程优化版 立即下载