什么占用了我的内存?

什么占用了我的内存?

我已经知道是什么原因造成的——这是缓存,是我自己安装的。

但正如你所见,截图中并没有告诉我任何有关此事的信息。我只是碰巧知道而已。

所以问题是,如果我没有知道这一点,我如何才能知道是什么占用了这么多的RAM?

(供参考:目前已使用 1.7 GiB,而“缺失”的数量——对于 FancyCache——是 512 MiB。显然,那额外的半 GB 并没有出现在我下面看到的任何地方。)

截屏

答案1

实际上,看起来我错了;有一种方法可以监视设备驱动程序的内存分配,使用驱动程序验证程序。此工具内置于所有当前版本的 Windows 中。尽管它是为程序员调试设备驱动程序问题而设计和记录的,但似乎没有理由不能使用它来查找哪个设备驱动程序正在使用“丢失”的内存。

您可以调出驱动程序验证器管理器只需在“开始”菜单或命令提示符下键入“verifier”即可。您需要以提升的权限运行它,即在“开始”菜单上按 control-shift-ENTER 或从提升的命令提示符运行它。 “创建标准设置”选项应该合适;然后您可以选择要监视的驱动程序(基本上,任何您怀疑的驱动程序;所有非 Microsoft 驱动程序通常都是明智的选择)。将应用默认验证选项,包括池跟踪。由于您感兴趣的内存已分配,因此您需要重新启动。

重新启动后,再次运行驱动程序验证器管理器并选择“显示有关当前已验证驱动程序的信息”。单击下一步,直到到达“特定于每个当前已验证驱动程序的计数器”页面,然后浏览驱动程序,直到找到一个分配了大量内存的驱动程序。希望它是 FancyCache 的驱动程序。

因为内核模式就是内核模式,所以我认为驱动程序验证程序不会一直有效;它依赖于驱动程序遵循规则,至少大致如此。驱动程序可能使用各种奇怪的方法来分配内存,从而避开驱动程序验证程序的计数器。但它应该在大多数情况下都能正常工作。

答案2

在阅读了 FancyCache 的相关内容后,我猜想它会因为是一个驱动程序而不是一个进程而不会直接显示在进程列表中。但是它确实使用 RAM 来缓存磁盘访问,因此无论您如何配置它,它都会从可用内存中消失,也许 Windows 会以某种方式向后报告这一点。同样,系统驱动程序确实需要一些内存来执行其工作,而这可能不会直接显示在进程列表中(请记住它们不是直接的进程 - 请记住,您也不会在进程列表中看到网卡或视频适配器的驱动程序...)

我还注意到上面的截图只显示了工作集大小。这只是一种内存类型,对于大多数进程来说,它很有用,但在某些极端情况下可能无法显示全貌(例如这种情况)。

无论如何,结果是现代操作系统中的内存管理非常复杂,因此当您加入使用半 GB 作为缓存的系统过滤驱动程序并且它没有出现在第三方进程列表实用程序中时,正如您可能期望的那样,考虑到应用程序通常会出现的情况,不要感到惊讶或沮丧 - 就是这样:)

相关内容