让我担心的主要事情是,看起来程序实际上并没有使用它所要求的所有 RAM。我还没有看到私有工作集内存超过 4GB。
它必须是 32 位,在这种情况下 WS 永远不会爬升超过 4GB。
请在此处查看我的答案。
https://stackoverflow.com/a/44615376/8177258
在任务管理器中:工作集不是内存使用的衡量标准。提交费用是。这就是 W8 中的任务管理器图表现在显示已提交而不是 WS 的原因。
WS 是操作系统平衡管理器为一个或多个进程锁定的 RAM 量。它不是负载。
允许 32 位应用程序在 RAM 中锁定最大 4GB。64位最大可以LOCK 8GB。
在 x64(Intel64/AMD64)上,32 位应用程序的 WS 无关紧要,因为任何进程可用的地址空间都是 256TB。它仅受 CPU 和可用存储的限制。
32 位应用程序使用的内存很容易超过它的 WS,它只是没有被计算在内,因为 32 位 API 已有 20 年历史,并且 4GB 以外的页面被视为在页面文件上。
现在有一半的机器没有页面文件和 8GB-16-32GB 的 RAM。
然而,CPU 报告的系统提交费用仍会攀升。
打开 RamMap 并在物理页面中查找备用页面,在 32 位应用程序上,缺少工作集数据所在的位置。
关于 RAMMap 和 VMM。
RAMMapp 很棒,因为它显示了物理内存地址(在某种程度上)。你可以从字面上看到页面在哪里。
任务管理器中的已提交内存更可靠,因为这就是 CPU 报告的内容。VMM 为进程视图之外的任何内容显示页面文件,因为进程在它的小虚拟世界之外什么都看不到。
尽管 W7/W8/W10 对其进行了改进。任务管理器仍然不可靠...... W7中的资源监视器还不错......虽然有限。
正如有人已经提到的那样,由于该应用程序不会耗尽所有资源,因此它可能不是泄漏。当提交的页面未解除提交时,通常会发生泄漏。
我刚刚注意到OP问题有多老了......
@里克布兰特
Windows 显示为“已提交”的存储不是 RAM。如果需要,它是存储可用性的保证。如果曾经使用过,则存储可能部分位于 RAM 中,部分位于页面文件中(假设您有一个页面文件)。
错误的。任务管理器中的已提交内存由 CPU 报告。它知道的唯一页面是写入物理存储的页面,无论是 RAM 还是 HDD,因为 CPU 将它们放在那里。
任务管理器中的承诺量绝对是 RAM。
顺便说一句,你前几天给我看的那个截图看起来像是在虚拟机上拍摄的。你有哪个 Intel 处理器有 3 个内核?
也相关:第二次测试是泄漏测试,页面没有被解除,这并不意味着它们不在 RAM 中。PS..是什么让您认为 DB2 是相关的?