You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不重启Tomcat的情况下定位持有特定文件描述符的Java类实例

如何在不重启Tomcat的情况下定位持有特定文件描述符的Java类实例

Background

  • 我在Windows系统上开发一个包含两个及以上WAR包的Web应用。
  • 这些WAR包在处理过程中会生成临时文件。

Problem

  • 在程序测试时,我发现有一个临时文件没有被删除。尝试通过资源管理器删除它时,收到提示:The action cannot be completed because the file is open in "java.exe"。
  • 显然是某个WAR包还在占用这个文件(提示里明确是java.exe),但Tomcat上部署了多个WAR包,我无法确定是哪个应用导致的问题。
  • 另外这些应用结构复杂,要排查是哪个类通过FileInputStream/FileOutputStream这类流读写该文件,难度很大。

Question

给定一个特定文件的路径,有没有办法知道是哪个类的实例持有该文件的描述符(比如对应的FileInputStream或FileOutputStream)?

最好能有不需要重启Tomcat的方法(比如使用jcmd这类工具),因为同一台Tomcat上还有其他WAR包在测试中。

备注:内容来源于stack exchange,提问作者SATO Yusuke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:14:36