A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 路西法 中级黑马   /  2014-1-9 14:45  /  1076 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

视频上都是讲用finally来关闭资源。之前好像讲到jvm有个垃圾回收机制,请问垃圾回收机制难道不会回收这些资源吗

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

5 个回复

倒序浏览
JVM的g垃圾收集机制是指jvm用于释放那些不再使用的对象所占用的内存,与关闭资源是两个概念;

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
流不单在内存中分配了空间,也在操作系统占有了资源,
java的gc是能从内存中回收不使用的对象,
但对操作系统分配的资源是无能为力的,
所以就要调用close()方法来通知OS来释放这个资源。
再说了  gc被调用的时间不确定,甚至在程序结束之前是否调用都不确定。
怎么能把这些事情放在一个不确定的gc上面呢

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
finally是不管程序运行时是否出现异常, finally都是肯定要执行的,如果程序没有出现异常,那么catch中的语句不会执行,如果写在finally中 是肯定能运行的到的

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
对象已被创建jvm有向视图进行监视对象的运行状态,如果对象不被使用jvm就会执行垃圾回收,你也可以手动进行回收system.gc()但是指不执行全靠jvm的意思
回复 使用道具 举报
java中所谓的垃圾回收机制就是周期的检测某个实体是否不再被任何对象所用有,当不存在对一个对象的引用时,该对象成为一个无用对象,java的垃圾收集器自动扫描动态内存区,把没有引用的对象作为垃圾会收起来并释放出去。
finally 关键字是对 Java 异常处理模型的最佳补充。finally 结构使代码总会执行,而不管有无异常发生。使用 finally 可以维护对象的内部状态,并可以清理非内存资源

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马