如何诊断临时文件“泄漏”

本文关键字:临时文件 泄漏 诊断 何诊断 | 更新日期: 2023-09-27 18:34:21

我们的应用程序最近开始以相当高的速度创建(而不是清理(临时文件(尽管当我们用完临时文件名时,仍然需要几天的高使用率来阻塞我们的 CI 服务器(。 这是一个大型应用程序,有一个大型团队在处理它,因此很难通过审查提交来跟踪这个问题。有没有诊断此类问题的好方法?

我注意到了一些额外的事情(尽管它们还没有让我得到任何地方(:

  • "泄漏的"临时文件显示在 c:''windows''temp 中,无论 %temp% 设置为
  • 它们
  • 总是空的,好像有人得到了它们而什么都不做

最后,我们最近开始使用 sqlite 在本地存储一些文件,而不是直接使用文件系统。 稍微搜索一下表明SQLite在那里写了一些临时文件,但所有的论坛帖子都表明它们很大,我有0字节的文件。 有人有过SQLite创建这样的问题的经验吗?

如何诊断临时文件“泄漏”

最有可能出现问题的方法是 Path.GetTempFileName。检查是否所有对它的调用都删除了生成的临时文件。

可以使用进程监视器监视这些文件的创建,然后在创建文件时查看调用线程的堆栈。这应该告诉您谁在制作文件,然后您也可以观察文件的使用情况。

只需将筛选器设置为仅包含"进程名称为 XXX.exe"(其中 XXX 是程序的名称(和"路径以 c:''windows''temp 开头"。