我的代码库中有一个问题,我们没有正确关闭文件句柄,或者可能是流。我们最终在非常重的负载下得到了一个 TooManyOpenFiles 异常。根据 lsof 的输出,我们很确定我们知道泄漏在哪里(在我们的日志系统中),但我的问题是:我如何编写一个单元测试来检查,当它完成时,资源是否已正确关闭?有没有办法查询 JRE 以了解当前打开了多少文件?我可以以某种方式拦截文件操作以便监控它们吗?
我怀疑我将不得不检测我的代码以管理所有文件 I/O、计数引用并确保它们以这种方式关闭,但如果有人知道类似于我上面提到的那些想法的自上而下的解决方案,那将是一个巨大的帮助!