关于close的问题

菜鸟的脚印 2013-10-11 08:19:19
今天有一小伙伴问我,javaSE中,有哪些东西是需要关闭的? 我瞬间茫然了,我只记得jdbc中的Connection是需要关闭的,还有其他的呢?Scanner?还有什么?求小伙伴们的帮助啊
...全文
244 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
朗晴 2013-10-15
  • 打赏
  • 举报
回复
关闭了省内存,不关闭的端口多了容易出故障。IO,SOCKET,Connection等等。。。
郑涛 2013-10-15
  • 打赏
  • 举报
回复
如果是1.6,可以总结为流,连接需要关闭,1.7,新增AutoCloseable接口,所有需要关闭的对象都直接或间接实现它,有close()方法,新增下面语法 public static void main(String[] args) { try(FileInputStream in=new FileInputStream(new File("d:/a"))){ //TODO operation }catch (IOException | RuntimeException e) { //不能有继承关系,否则编译错误 }//不需要finally,自动回调close()方法 }
ego_ecust 2013-10-14
  • 打赏
  • 举报
回复
引用 6 楼 ch656409110 的回复:
很无赖的解决方案:每次联想一下 看看是否有close 方法,如果有肯定需要关闭,没有自然不需要。这种投机取巧的方式很有必要,因为学习新的类根本不知道是否需要关闭等等之类的。
很好,存在自然是有必要的,哈哈
ifvlr 2013-10-14
  • 打赏
  • 举报
回复
不依赖java语言自己实现的一般需要关闭。 如java在windows平台上操作io时,实际上时java调用了c语言的api,而c语言是不能自己回收内存的。所以这个时候如果不关闭,则会造成内存泄露。java虽然语法级别上没有内存泄露,但是内存泄露可以是由java 引起的。 一般这样的资源就需要关闭。一般用得多的也就io操作和数据库操作时需要关闭了。
水暖冰 2013-10-14
  • 打赏
  • 举报
回复
引用 1 楼 xxhhbb1538 的回复:
所有不在虚拟机管理范围内的,操作系统级别的都需要关闭,如文件流,数据库连接等等
正解+1
AJAXHu 2013-10-12
  • 打赏
  • 举报
回复
你最好对照官方文档一个一个看,这个没有笼统的说法的。
蓝阳 2013-10-12
  • 打赏
  • 举报
回复
引用 7 楼 soton_dolphin 的回复:
所有implements closable 的都需要CLOSE。 最明显的就是JAVA.IO里面的CLASSES. 除了PRINTSTREAM
路过学习了
soton_dolphin 2013-10-11
  • 打赏
  • 举报
回复
所有implements closable 的都需要CLOSE。 最明显的就是JAVA.IO里面的CLASSES. 除了PRINTSTREAM
  • 打赏
  • 举报
回复
很无赖的解决方案:每次联想一下 看看是否有close 方法,如果有肯定需要关闭,没有自然不需要。这种投机取巧的方式很有必要,因为学习新的类根本不知道是否需要关闭等等之类的。
  • 打赏
  • 举报
回复
socket,io流
qq_wwwhj 2013-10-11
  • 打赏
  • 举报
回复
这个真说不好,没总结过,不过一般用的时候就知道了
尘缘udbwcso 2013-10-11
  • 打赏
  • 举报
回复
所有有close方法的都需要close
菜鸟的脚印 2013-10-11
  • 打赏
  • 举报
回复
这个不在虚拟机管理范围内,能不能说得具体点呢?
  • 打赏
  • 举报
回复
所有不在虚拟机管理范围内的,操作系统级别的都需要关闭,如文件流,数据库连接等等

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧