gpt4 book ai didi

java - 我可以关闭由不属于我的代码打开的文件句柄吗?

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:22 26 4
gpt4 key购买 nike

我正在使用第三方商业库,它似乎正在泄漏文件句柄(我在 Linux 上使用 lsof 验证了这一点)。最终,服务器 (Tomcat) 开始收到臭名昭著的“打开的文件太多错误”,我不得不重新启动 JVM。

我已经联系了供应商。但是,与此同时,我想为此找到一个解决方法。我没有可以访问他们的源代码。在 Java 中,有什么方法可以无需访问原始 File 对象(或 FileWriterFileOutputStream)来清理文件句柄 等)?

最佳答案

一个有趣的方法是编写一个动态库并使用 LD_PRELOAD 为您正在启动的 Java 实例加载它......这个 DLL 可以覆盖适当的底层 open(2) 系统调用(或使用一些其他逻辑)来在将调用传递给 libc 实现(或内核)之前关闭进程的现有文件描述符。您需要做一些认真的核算并可能处理线程;但这是可以完成的。特别是如果您从/proc/pid/fd/获取提示来确定关闭是否适合目标 fd。

关于java - 我可以关闭由不属于我的代码打开的文件句柄吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157263/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com