本帖最后由 吴愿涛 于 2012-11-3 16:29 编辑
close()方法释放的是正在占用的资源,而不是持有资源的对象;
java垃圾回收机制(GC)回收的是对象,表现为回收对象分配的内存;但不能回收资源,如果不执行close,可能会造成资源耗尽。
也可以这么理解,jvm回收的是由java创建的对象占用的内存资源,但是有close()方法的java内置对象(比如:套接字对象,数据库连接对象)这些实际都占用了计算机的其他资源,所以实际释放的是计算机其他资源,而非java创建的对象占用的内存资源。所以close()方法是必须的。(比如使用了数据库的连接对象,如果不调用close()方法将会导致数据库的连接资源耗尽) |