Nuestra aplicación está fallando en la computadora de un usuario específico con ERROR_NOT_ENOUGH_MEMORY
("No hay suficiente espacio de almacenamiento disponible para procesar este comando").Solución de problemas ERROR_NOT_ENOUGH_MEMORY
El error aparentemente se está planteando en algún lugar profundo dentro del framework Delphi VCL que estamos usando, así que no estoy seguro de qué función de la API de Windows es responsable.
¿La memoria es un problema? Una llamada a GlobalMemoryStatus
da la siguiente información:
- dwTotalPhys - 1063150000 (~ 1 GB)
- dwAvailPhys - 26735000 (~ 27 MB)
- dwAvailPage - 1489000000 (~ 1,4 GB)
Me parece extraño que Windows permita que la memoria física disponible sea tan baja cuando hay tanto espacio disponible en el archivo de paginación, pero no sé lo suficiente sobre la administración de memoria virtual de Windows para saber si esto es normal o no. . ¿Lo es?
Si no hay memoria, ¿qué límite de recursos está siendo afectado? Según lo que leí en línea, ERROR_NOT_ENOUGH_MEMORY
podría ser el resultado de que la aplicación tocara cualquiera de varios límites (objetos GDI, objetos USER, identificadores, etc.) y no necesariamente la memoria. ¿Hay una lista completa de los límites que Windows impone? ¿Hay alguna forma de averiguar qué límite está siendo golpeado? Probé con Google, pero no pude encontrar ninguna descripción sistemática.
GDI es mi primer puerto de escala. Si bien es extraño que solo esté sucediendo en la máquina de un usuario, ahí es donde comenzaría. También podría ser algo así como el número de mangos que están en uso, etc. ¡Buena suerte! –