java内存回收机制与对象close()方法的问题 我们在使用java编写程序的时候,很多时候用到java提供的类创建对象后都需要使用close()方法来释放对象。但是java不是有自己的垃圾回收机制吗,我们即使不用close()方法释放对象,jvm自己也会去回收这部分内存资源的,为什么还要自己手动去调用close方法,那岂不是和c/c++一样了,每次new一个对象还要调用delete来释放这个对象。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 close方法仅仅是为了释放该对象所持有的对象引用或通过该close方法释放资源。如:connection.close();connection=null; 那我可以这样理解不,就是 即使不用close()也没关系,反正最后jvm都会去回收垃圾的, 但是使用close()后就可以及时释放资源,不必非等到最后资源占用完了才开始痛苦的回收过程,而且从良好的编程习惯来说,创建了对象,就应该考虑到用完后就要释放内存资源,要养成一个良好的编程习惯。 java的内存回收机制,也是要等到资源达到一定限度才开始回收,也是有生命周期的。 用close()可以及时回收资源,更加高效 close释放的是资源,而不是持有资源的对象java可以自动回收的是对象,表现为回收对象分配的内存但不能回收资源,如果不执行close,可能会造成资源耗尽 这个解释我觉得很合理,jvm回收的是由java创建的对象占用的内存资源,但是有close()方法的java内置对象(比如:套接字对象,数据库连接对象)这些实际都占用了计算机的其他资源,所以实际释放的是计算机其他资源,而非java创建的对象占用的内存资源。所以close()方法是必须的。(比如使用了数据库的连接对象,如果不调用close()方法将会导致数据库的连接资源耗尽) java获取程序运行时间 关于JTABLE的问题 请高手教我如何修改~~~ jar包引用问题 请问java中内存是怎么分配的? TreeMap这个类怎么用? jdk安装好后,环境变量也配置好了,但是出了这种问题 推荐几本java里关于线程介绍得比较多的书吧~~~~~~~ 谁能告诉我,在JAVA中,哪个函数和ASP中的Int()函数等同,也就是取整函数 我是非计专业,请问vj比vc难学吗?我学vj,合适吗? 请教age定义合法问题 cdm,pdm,E/R图的关系和区别
如:
connection.close();
connection=null;
用close()可以及时回收资源,更加高效
java可以自动回收的是对象,表现为回收对象分配的内存
但不能回收资源,如果不执行close,可能会造成资源耗尽