流和网络连接为什么要关闭
要系统底层的原因,不要说什么流是珍贵的资源...这些大家都知道的没营养的话
个人感觉应该从内存和端口找原因

解决方案 »

  1.   

    什么流?
    如果是fileInputStream, 在往文件里写数据的时候,如果不关闭,就相当于没有  ctrl+s 一样,你写入的数据不会保存到文件中去的。许多情况下,如果在一些比较频繁的操作中,不对流进行关闭,很容易出现输入输出流经超越了JVM的边界,所以有时可能无法回收资源。
    所以刘操作的时候
    原则:凡是跨出虚拟机边界的资源都要求程序员自己关闭,不要指望垃圾回收。网络连接和服务端的线程有关。
    一个服务允许的最大连接是有限的,如果每次操作之后对应的链接都不进行关闭,那么相关的数据库连接等许多链接也有可能没有关闭掉,这样的话会造成服务器压力越来越大。
      

  2.   

    数据传输完不就应该关闭连接嘛。一直保持连接肯定要占用系统资源(内存、cpu等)
    关闭连接了,相应的端口号也就得到释放了。
      

  3.   

    需要自己close的东西,一般都是用了虚拟机之外的资源,例如端口,显存,文件等,虚拟机无法通过垃圾回收释放这些资源,只能你显式调用close方法来释放。例如你读一个文件,忘记关闭了流,你在操作系统里对这个文件的写,删除等操作就会报错,告诉你这个文件被某个进程占用。
      

  4.   

    我想主要还是资源回收的问题,即使提到“内存和端口”,那也是资源另外有些类,关闭流直接包含了flush,有些上层流关闭会连带关闭下层流
      

  5.   

    因为要释放OS的资源
    流主要是对OS资源的操作,如果不释放OS的资源,对大量流的操作就有可能导致当机
    之前有一篇很好的问题你去找找