前段时间在Windows 7上遭遇了奇怪的内存泄漏问题,一些进程随着运行时间的推移,内存提交大小会不受控制的逐渐上升(如下图中的Avira.systray.exe)。
从VC运行库、MSHTML.DLL 、.NET挨个怀疑了一遍,都不是。
最后使用ProceXP检查挂载的DLL时发现有问题的进程都挂载了几个字体缓存文件
这些字体的缓存文件位于 C:WindowsServiceProfilesLocalServiceAppDataLocal 目录,以 (~)Font 开头,以及 C:WindowsSystem32FNTCACHE.DAT 。
引导到恢复模式后,启动命令提示符删掉了目录中的所有字体缓存文件。
再次引导回系统,观察24小时后,内存使用未见异常。
这些字体的缓存文件位于 C:WindowsServiceProfilesLocalServiceAppDataLocal 目录,以 (~)Font 开头,以及 C:WindowsSystem32FNTCACHE.DAT 。
引导到恢复模式后,启动命令提示符删掉了目录中的所有字体缓存文件。
再次引导回系统,观察24小时后,内存使用未见异常。
目前初步怀疑有三种可能: 1. 磁盘逻辑损坏,可能某次异常断电或者强制关机损坏了这些字体缓存文件。 2. MacType,之前使用过MacType,虽然后来停用了,但是可能导致Windows的字体缓存出现了不正确的缓存或者异常。 3. Windows 用的太久了(8年没重装),可能触发了某种Windows的BUG。