Mik*_*lov 5 java file-io resource-leak
我的代码库中有一个问题,我们没有正确关闭文件句柄,或者可能是流。我们最终在非常重的负载下得到了一个 TooManyOpenFiles 异常。根据 lsof 的输出,我们非常确定我们知道泄漏在哪里(在我们的日志记录系统中),但我的问题是:如何编写单元测试来检查完成后资源是否已正确关闭?有没有办法查询 JRE 以找出当前打开的文件数量?我可以以某种方式拦截文件操作以便监控它们吗?
我怀疑我将不得不检测我的代码以管理所有文件 I/O、计数引用并确保它们以这种方式关闭,但是如果有人知道类似于我上面提到的那些想法的自上而下的解决方案,那将是一个巨大的帮助!
由于您正在谈论测试,PowerMock http://code.google.com/p/powermock/可能可以解决问题。如果我没有记错的话,它可以模拟静态方法和构造函数。因此,您可以模拟/监视构造函数和关闭方法或释放资源所需的任何内容。
我试图在我的测试中避免它,但在你描述的情况下,这可能是值得的麻烦。
归档时间: |
|
查看次数: |
543 次 |
最近记录: |