TrueCrypt 卷上的 Dropbox 占用了超过 6GB 的 RAM,内存映射文件可能存在内存泄漏

TrueCrypt 卷上的 Dropbox 占用了超过 6GB 的 RAM,内存映射文件可能存在内存泄漏

我在 HP Pavilion Touch 14-N009LA 上使用 TrueCrypt 卷上的 Dropbox 文件夹,该电脑配有 AMD A8-4555 APU、8 GB RAM 和 Windows 8.1。当我运行 Dropbox 时,大约 15 分钟后,我的 RAM 使用量飙升至 7.5 GB,Windows 变得无法使用。关闭 Dropbox 不会有任何作用。但是当我卸载卷时,POOF!所有使用的 RAM 都被释放,内存使用量恢复正常。

这使得我无法将 Dropbox 与任何其他东西一起使用,老实说,我想不出任何原因。这是怎么回事?


更新 1:似乎每次 Windows 读取 Dropbox 文件夹时都会发生这种情况,因为我刚刚在将文件夹从当前容器移动到新容器时遇到了同样的问题。我查看了 Process Explorer,它没有显示任何使用超过 2 GB RAM 的进程(Superfetch 占用了非常多的内存,大约 2 GB,所以我关闭了它,但它并没有真正起作用)。但是,Process Explorer 确实显示有超过 5 GB 的 RAM 被分配为“缓存 WS”。我正在调查此事。

根据 Process Explorer 查看内存使用情况


更新 2:RAMMap 显示,5 GB 内存被用作“映射文件”。我从未使用过内存映射文件,所以我对此的了解全都来自谷歌搜索,这可能是 Dropbox 似乎无法很好地处理 TrueCrypt 卷的原因。我猜 TrueCrypt 将加密卷作为内存映射文件进行访问,这意味着我可能对内存映射文件无能为力。

但是,有一件有趣的事情:当我使用 RAMMap 清空所有工作集时,我的内存使用量会恢复正常,但由于 Windows 正在从我的加密卷中读取内容,内存使用量会再次填满。我对 Windows 的内存管理不太了解,但有一件事我很确定,那就是两周前没有发生过这种情况。就好像 Windows 发生了内存泄漏,导致工作集没有被清除之类的。(C:\ 上的硬盘使用量突然增加是由于系统将传输到页面文件的所有内容传输回 RAM,以便为 5 GB 的工作集腾出空间)。

此外,资源监视器列出了所有用作备用内存的 RAM。这意味着它可能与 Windows 用于磁盘 I/O 的读取或写入缓存有关,我相信当 TrueCrypt 卷作为普通磁盘安装时,这些缓存在 TrueCrypt 卷上处于活动状态。我将看看将我的卷安装为便携式设备是否可行,因为据我所知,在这些情况下磁盘缓存默认是禁用的。

更新 3:将卷安装为便携式设备不起作用,系统仍然会占用所有 RAM。计划中的下一步是看看我是否可以在我姐姐的电脑上重现这个问题,这台电脑的型号和操作系统与我的一模一样,以及在我使用 Windows 7 的台式电脑上重现这个问题。

根据 RAMMAP 的内存使用情况
(点击图片放大)

清除工作集后的内存使用情况

更新 4:跟踪这个问题。我刚刚尝试在我姐姐的电脑上重现这个问题。但我没能成功。我在那台电脑上安装了所有最新的 Windows 更新,创建了一个 10 GB 的 TrueCrypt 卷,在其中填充了足够多的东西以填满其 4 GB 的 RAM,而 RAM 使用率保持不变。我用我的一个文件夹运行 Dropbox,RAM 使用率保持不变。

现在,当我在安装了卷的计算机上运行 RAMMap 并向其中写入内容后会发生什么?我系统的所有 RAM 都被列为映射文件的备用或已修改内存。映射文件的活动内存从未超过 150 MB。

结论?我的 Windows 8 出现问题。结果,Windows 没有清除内存映射的 TrueCrypt 卷的工作集,或者由于某种原因声明其内存使用处于活动状态而不是待机状态,或者诸如此类的情况。

其他计算机上的内存使用情况 根据 RAMMAP 查看其他计算机上的内存使用情况

(请注意,由于 TrueCrypt 已被淘汰,我决定将所有加密数据迁移到 dm-crypt。我现在使用 Gentoo Linux 作为我的主要操作系统,只使用 Windows 玩游戏。如果出于某种原因我需要访问我的加密磁盘,我会启动 Linux VM,将加密驱动器连接到 VM,挂载它们,启动 Samba,并将 Windows 上的共享目录映射为网络驱动器)。

相关内容