Delphi 避免Windows进程中的大内存提交大小

Delphi 避免Windows进程中的大内存提交大小,delphi,winapi,visual-c++,memory-management,memory-leaks,Delphi,Winapi,Visual C++,Memory Management,Memory Leaks,我正在开发一个32位的应用程序(VC++main exe和几个Delphi DLL),它会慢慢泄漏内存(数周或数月)。虽然我修复了漏洞,但仍然存在一个问题——虽然工作集和活动工作内存集仍然相对较低(约50Mb),但提交大小一直攀升到约1.7Gb 我确实意识到Windows(尤其是Windows 10)在一个进程中提交内存时可能非常具有攻击性,但我仍然看不到发生这种情况的明显原因 我修补了VirtialAlloc/VirtialAllocEx/VirtialAlloc2/等。使用迂回的方法来查看V

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

我确实意识到Windows(尤其是Windows 10)在一个进程中提交内存时可能非常具有攻击性,但我仍然看不到发生这种情况的明显原因

我修补了
VirtialAlloc
/
VirtialAllocEx
/
VirtialAlloc2
/等。使用迂回的方法来查看VC++和Delphi内存管理器何时会被迫从操作系统请求更多内存,但在启动时发出一些初始请求后,我没有看到对这些函数的调用,而提交大小仍在缓慢增长


还有什么可以对提交规模的增长负责?有I/O操作吗?内存映射文件?

您试图解决什么问题?内存提交大小不断增加,最终导致进程的地址空间不足。这意味着您的代码
ntdll.ZwAllocateVirtualMemory
中仍然存在错误和泄漏,您是否钩住了它?这是需要先做的,而不是
VirtialAlloc
hook<代码>ZwMapViewOfSection。。并需要查看进程虚拟内存映射-添加了哪些具体的内存空间类型。这里的数据似乎没有相关设置。是否要限制进程的内存使用?你可以用。