今天有一小伙伴问我,javaSE中,有哪些东西是需要关闭的? 我瞬间茫然了,我只记得jdbc中的Connection是需要关闭的,还有其他的呢?Scanner?还有什么?求小伙伴们的帮助啊

解决方案 »

  1.   

    很无赖的解决方案:每次联想一下 看看是否有close 方法,如果有肯定需要关闭,没有自然不需要。这种投机取巧的方式很有必要,因为学习新的类根本不知道是否需要关闭等等之类的。
      

  2.   

    所有implements closable 的都需要CLOSE。 最明显的就是JAVA.IO里面的CLASSES. 除了PRINTSTREAM
      

  3.   

    不依赖java语言自己实现的一般需要关闭。
    如java在windows平台上操作io时,实际上时java调用了c语言的api,而c语言是不能自己回收内存的。所以这个时候如果不关闭,则会造成内存泄露。java虽然语法级别上没有内存泄露,但是内存泄露可以是由java 引起的。 一般这样的资源就需要关闭。一般用得多的也就io操作和数据库操作时需要关闭了。
      

  4.   

    如果是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()方法
    }
      

  5.   

    关闭了省内存,不关闭的端口多了容易出故障。IO,SOCKET,Connection等等