我在 linux 环境下开发,系统打算在很长一段时间内连续运行。经过一夜的测试后,我们看到 FileNotFoundException 和一条消息“打开的文件太多”。我们开始在系统中的不同时间记录 lsof 命令的输出,以查看我们是否可以看到正在发生的事情。我们注意到打开了许多未命名的管道。所以我认为这些是由于文件流没有关闭。我在源代码中搜索了所有使用过的 *Stream 对象,并确保它们都在 finally{} block 中关闭。是否有任何其他我可以搜索的 Java 对象类型,我可能不会关闭它会导致所有这些未命名的管道被打开?
此外,我的 ulimit 是 1024,我还搜索了 *Writer 并确保它们都已关闭。
最佳答案
关于java - 任何用于查找 "Too Many Files Open"原因的 Java 调试技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435512/