delphi - 避免 Windows 进程中的大内存提交大小
问题描述
我正在开发一个缓慢泄漏内存(数周或数月)的 32 位应用程序(VC++ 主 exe 和几个 Delphi dll)。虽然我修复了泄漏,但仍然存在一个问题 - 虽然工作集和活动工作内存集仍然相对较低(约 50Mb),但提交大小一直攀升至约 1.7Gb。
我确实意识到 Windows(尤其是 Windows 10)在进程中可能会非常激进地提交内存,但我仍然认为没有明显的原因会发生这种情况。
我使用 Detours 修补了VirtialAlloc
// VirtialAllocEx
/VirtialAlloc2
等,以查看 VC++ 和 Delphi 内存管理器何时会被迫从操作系统请求更多内存,但是在启动时的一些初始请求后,我看不到对这些函数的调用,而提交大小仍然是慢慢成长。
还有什么可以对提交大小的增长负责?任何 I/O 操作?内存映射文件?
解决方案
推荐阅读
- google-apps-script - Google Sheet - 如果复选框处于活动状态,则复制行
- arrays - 将结构嵌套到数组 C#
- c++ - 如何创建 C++ 映射 - 没有构造函数实例
- python - Spacy ValueError [E103] 在创建自定义 NER 时尝试设置冲突的 doc.ents
- docker - Private Gitlab Runner for code quality without Docker-in-Docker
- r - 如何制作循环函数来获取结果并将它们放入 R 中的新列中
- android - 在 Androidx 上使用 registerForActivityResult 选择文件
- android - 无法在 Android 上通过 Mac OS 编译 mediapipe
- java - 双常数的比较
- asp.net-mvc - 如何在服务层访问用户数据?