我们的应用程序在一个特定用户的计算机上失败了ERROR_NOT_ENOUGH_MEMORY
(“没有足够的存储空间来处理这个命令”)。
该错误显然是在我们正在使用的 Delphi VCL 框架的某个深处提出的,所以我不确定哪个 Windows API 函数负责。
内存有问题吗? 调用GlobalMemoryStatus
提供以下信息:
- dwTotalPhys - 1063150000 (~1 GB)
- dwAvailPhys - 26735000 (~27 MB)
- dwAvailPage - 1489000000 (~1.4 GB)
对我来说,当页面文件中有这么多可用空间时,Windows 会让可用物理内存变得如此之低,这对我来说似乎很奇怪,但我对 Windows 的虚拟内存管理知之甚少,无法知道这是否正常。是吗?
如果不是内存,那么会达到哪个资源限制?从我在网上阅读的内容来看,ERROR_NOT_ENOUGH_MEMORY
可能是应用程序达到了几个限制(GDI 对象、USER 对象、句柄等)中的任何一个,而不一定是内存。是否有 Windows 强制执行的限制的完整列表?有什么方法可以找出正在达到的限制吗?我尝试了谷歌,但我找不到任何系统的概述。