java - 任何用于查找 "Too Many Files Open"原因的 Java 调试技巧

标签 java debugging stream filenotfoundexception

我在 linux 环境下开发,系统打算在很长一段时间内连续运行。经过一夜的测试后,我们看到 FileNotFoundException 和一条消息“打开的文件太多”。我们开始在系统中的不同时间记录 lsof 命令的输出,以查看我们是否可以看到正在发生的事情。我们注意到打开了许多未命名的管道。所以我认为这些是由于文件流没有关闭。我在源代码中搜索了所有使用过的 *Stream 对象,并确保它们都在 finally{} block 中关闭。是否有任何其他我可以搜索的 Java 对象类型,我可能不会关闭它会导致所有这些未命名的管道被打开?

此外,我的 ulimit 是 1024,我还搜索了 *Writer 并确保它们都已关闭。

最佳答案

YourKit也许值得一瞧。它的probes旨在帮助解决此类问题,尽管我自己从未有机会尝试过该功能。

关于java - 任何用于查找 "Too Many Files Open"原因的 Java 调试技巧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7435512/

相关文章:

c# - 如何使用WPF MediaKit播放YouTube视频?

java - 调用同步的 getter 和 setter

java - 电话号码分割(国际版)java

swift - 如何在XCode调试器中查看Swift float2、float3、float4等的值?

c# - 在 Visual Studio 中调试时出现底层连接已关闭错误

php - 通过 PHP 提供 C 程序,无需写入/上传权限

c# - solr的java和dotnet版本之间的区别

java - JSpinner 不允许用户输入内容

c# - Debug类和Trace类有什么区别?

dart - 如何将多个数据流合并到一个 BLOC 中?