为什么很多类提供close方法
一个对象在没有引用变量指向它时会在内存中变成垃圾,java虚拟机会提供垃圾回收器回收这些垃圾. 但对于一些资源如:网络连接,数据库连接,文件输入输出流, 这些资源需要我们调用特定的方法去释放这些资源呢?
其实,资源分两种,一种是java虚拟机的内存中的资源,一种是操作系统控制的资源, 以网络连接来说,当java程序与目标机建立连接以后,java程序会生成一个网络连接的对象,同时操作系统也会生成支持这个应用的网络资源,如占用某个端口. java程序生成的网络连接对象可以被垃圾回收器回收,可是没法回收操作系统占用的资源, 得调用close方法去触发操作系统回收它占用的资源.