如果FileInputStream未关闭,应用程序是否会崩溃?

时间:2015-05-11 00:01:01

标签: java java-ee

我使用FileInputStream在我的Web应用程序中读取.jks文件。不幸的是,我忘了在代码中关闭流,它被转移到生产。 FileInputStream不是静态流,而是局部变量。

我将有机会在一个月或两个月内解决这个问题。

与此同时,由于这个错误,我的应用程序是否有可能崩溃。我是否需要尽快移动修复程序,或者可以等待两个月。

请建议我。

2 个答案:

答案 0 :(得分:0)

保持文件打开时间超过必要时间至少会产生以下有害影响:

  1. 资源泄漏,因此您的文件句柄用完了。
  2. 将文件锁定到需要使用它的下一个进程。
  3. 立即修复。

答案 1 :(得分:0)

很可能没有。只要FileInputStream对象可由Java垃圾收集器回收。 FileInputStreamFileOutputStream以及包围系统资源的许多其他对象(如文件句柄)使用finalize方法在Garbage Collection中执行清理。这不是依赖此行为的最佳解决方案,因为GC不是确定性的,并且文件句柄可能在您使用完毕后很久就会返回到操作系统。

只有在使用文件锁定并且您尝试过快地重新打开同一文件或阻止GC收集流对象时,它才会真正崩溃。