首页 > 解决方案 > 避免 Windows 进程中的大内存提交大小

问题描述

我正在开发一个缓慢泄漏内存(数周或数月)的 32 位应用程序(VC++ 主 exe 和几个 Delphi dll)。虽然我修复了泄漏,但仍然存在一个问题 - 虽然工作集和活动工作内存集仍然相对较低(约 50Mb),但提交大小一直攀升至约 1.7Gb。

我确实意识到 Windows(尤其是 Windows 10)在进程中可能会非常激进地提交内存,但我仍然认为没有明显的原因会发生这种情况。

我使用 Detours 修补了VirtialAlloc// VirtialAllocEx/VirtialAlloc2等,以查看 VC++ 和 Delphi 内存管理器何时会被迫从操作系统请求更多内存,但是在启动时的一些初始请求后,我看不到对这些函数的调用,而提交大小仍然是慢慢成长。

还有什么可以对提交大小的增长负责?任何 I/O 操作?内存映射文件?

标签: delphiwinapivisual-c++memory-managementmemory-leaks

解决方案


推荐阅读