Java有垃圾回收器 为什么还要调用close方法

来源:百度知道 编辑:UC知道 时间:2024/05/27 16:04:37
有关流的问题

Java有垃圾回收器 为什么还要调用close方法?

垃圾回收器只能处理java虚拟机所产生的内存垃圾 而流所消耗的操作系统资源、硬件、网络资源等的外部资源 这不是java虚拟机能管的 当然也不是垃圾回收器能处理的

打个比方吧,java垃圾回收就像你家人,如果你的房间不是脏得不得了,她是不会动手的。用close()就是像你养成了良好的习惯,用完东西随手放好,所以房间永远都那么整洁。

垃圾回收只是针对内存空间的,其它资源不会被回收,而且回收的时机一般也是不可预知的,在不需要了以后及时释放占用的文件句柄 数据库连接等非内存资源可以提高资源利用效率,避免问题

像输入输出流I/O用完后就得关闭,如果不关闭意味着还将继续使用,系统会等待相关的输入数据或输出数据,占用资源,垃圾回收器并不会回收,垃圾回收器是用来收集程序中失去引用的对象,对象失去引用,程序无法找到其所在内存的地址,java垃圾回收器就会将其回收。