我正在尝试追踪一个恶意进程,该进程锁定了特定目录中的文件,从而阻止了日志的追加。这种锁定大约每周发生一到三次,所以不用说,我希望 ProcMon 能够长时间无人值守地运行。
不幸的是,大约每小时一次,ProcMon 会开始稳步增加其内存使用量,超过 2 GB。此时我执行“清除显示”,内存使用量又回到了约 200 MB。
我已打开“删除已过滤事件”。
我将备份文件设置为桌面上的一个文件(奇怪的是,该文件的大小从 4mb 开始从未改变过)。
我已设置过滤,以便它仅包含访问该目录的进程。
我还排除了应该访问该目录的 3 个进程。
附注:当进入“进程监视器支持文件”对话框时,会显示以下内容:
ProcMon 负载:100.0% @ p-1717994043 (2,210,277,644...)
答案1
为了减少长时间捕获的内存使用量,有一种方法可以告诉 ProcMon 将其捕获的数据存储到文件中而不是虚拟内存中。
只需使用“文件-->备份文件...”选项并将备份文件从“使用虚拟内存”更改为“使用命名文件”,并在具有大量可用存储空间的快速磁盘上指定一个文件。
然后,ProcMon 会将捕获的数据写入指定文件,而不是缓冲在虚拟内存中。
答案2
删除过滤事件只会过滤它们...它们仍然被收集......
...但是,2 GB 太多了,在我的计算机上,它占用了大约 5MB 的内存。你确定你看到的是正确的统计数据吗?
进程监视器每秒都会收集大量信息,并且它确实在页面文件中存储了大量数据......如果这些数据很低,则它可能正在使用您的内存。
不幸的是,我认为除了增加页面文件的大小之外,您无法采取任何其他措施来解决这个问题。
答案3
1.6GB/24.9GB并不多。
当我使用 Sysinternals Process Monitor 在安装大型程序时监视所有 IO 活动并且关闭所有过滤器时,所有内容都会被捕获,但一段时间后 RAM 和页面文件的使用量会急剧上升。
例如,我让它监控大型程序 Visual Studio Community 2015 的安装。它已经运行了大约一个小时,我的页面文件使用了 47.8GB,而页面文件大小为 55.6GB。幸运的是,我有一块 SSD,所以系统仍然可以使用,尽管速度很慢。
当我转到任务管理器 (Windows 8+) 的“详细信息”窗格时,对于 procmon64.exe,它显示工作集 (内存) 在 60-90MB 之间徘徊。提交大小约为 375MB。因此,任务管理器不会显示 procmon64.exe 正在使用的大页面文件使用情况,这很有趣。
过了一段时间,安装终于在几个小时后完成了(由于页面文件不断与 SSD 交换,而 VS 2015 的安装程序效率非常低),procmon64.exe 的工作集(内存)约为 700MB,提交大小为 821MB。在“性能”选项卡 ->“内存”“已提交”下;73.4GB/89.5GB,我的 SSD 空间不足,页面文件为 90GB!Procmon64.exe 记录了超过 1.2 亿个事件。保存的 .pml 文件为 62GB,但 7z 压缩为 3GB。
此程序确实会占用页面文件空间,请小心。几张图片。https://i.stack.imgur.com/4toOR.jpg