Función SetProcessWorkingSetSize (memoryapi.h)
Establece los tamaños mínimo y máximo del conjunto de trabajo para el proceso especificado.
Sintaxis
BOOL SetProcessWorkingSetSize(
[in] HANDLE hProcess,
[in] SIZE_T dwMinimumWorkingSetSize,
[in] SIZE_T dwMaximumWorkingSetSize
);
Parámetros
[in] hProcess
Identificador del proceso cuyo tamaño del conjunto de trabajo se va a establecer.
El identificador debe tener el derecho de acceso PROCESS_SET_QUOTA . Para obtener más información, consulte Derechos de acceso y seguridad de procesos.
[in] dwMinimumWorkingSetSize
Tamaño mínimo del conjunto de trabajo para el proceso, en bytes. El administrador de memoria virtual intenta mantener al menos esta cantidad de memoria residente en el proceso siempre que el proceso esté activo.
Este parámetro debe ser mayor que cero, pero menor o igual que el tamaño máximo del conjunto de trabajo. El tamaño predeterminado es de 50 páginas (por ejemplo, es de 204 800 bytes en sistemas con un tamaño de página de 4 000). Si el valor es mayor que cero pero menor que 20 páginas, el valor mínimo se establece en 20 páginas.
Si dwMinimumWorkingSetSize y dwMaximumWorkingSetSize tienen el valor (SIZE_T)–1, la función quita tantas páginas como sea posible del conjunto de trabajo del proceso especificado.
[in] dwMaximumWorkingSetSize
Tamaño máximo del conjunto de trabajo para el proceso, en bytes. El administrador de memoria virtual intenta mantener no más de esta cantidad de memoria residente en el proceso siempre que el proceso esté activo y la memoria disponible sea baja.
Este parámetro debe ser mayor o igual que 13 páginas (por ejemplo, 53 248 en sistemas con un tamaño de página 4K) y menor que el máximo de todo el sistema (número de páginas disponibles menos 512 páginas). El tamaño predeterminado es de 345 páginas (por ejemplo, es de 1413 120 bytes en sistemas con un tamaño de página de 4 K).
Si dwMinimumWorkingSetSize y dwMaximumWorkingSetSize tienen el valor (SIZE_T)–1, la función quita tantas páginas como sea posible del conjunto de trabajo del proceso especificado.
Valor devuelto
Si la función se realiza correctamente, el valor devuelto es distinto de cero.
Si la función no se realiza correctamente, el valor devuelto es cero. Llame a GetLastError para obtener información de error extendida.
Comentarios
El conjunto de trabajo de un proceso es el conjunto de páginas de memoria en el espacio de direcciones virtuales del proceso que residen actualmente en memoria física. Estas páginas están disponibles para que una aplicación se use sin desencadenar un error de página. Para obtener más información sobre los errores de página, vea Working Set. Los tamaños mínimos y máximos del conjunto de trabajo afectan al comportamiento de paginación de memoria virtual de un proceso.
El conjunto de trabajo del proceso especificado se puede vaciar especificando el valor (SIZE_T)–1 para los tamaños mínimo y máximo del conjunto de trabajo. Esto quita tantas páginas como sea posible del espacio de trabajo. La función EmptyWorkingSet también se puede usar para este propósito.
Si los valores de dwMinimumWorkingSetSize o dwMaximumWorkingSetSize son mayores que los tamaños del conjunto de trabajo actual del proceso, el proceso especificado debe tener el privilegio SE_INC_WORKING_SET_NAME . Por lo general, todos los usuarios tienen este privilegio. Para obtener más información sobre los privilegios de seguridad, consulte Privilegios.
Windows Server 2003 y Windows XP: El proceso especificado debe tener el privilegio SE_INC_BASE_PRIORITY_NAME . Los usuarios de los grupos Administradores y Usuarios avanzados suelen tener este privilegio.
El sistema operativo asigna tamaños de espacio de trabajo por primera vez, servidos por primera vez. Por ejemplo, si una aplicación establece correctamente 40 megabytes como su tamaño mínimo de espacio de trabajo en un sistema de 64 megabytes y una segunda aplicación solicita un tamaño de espacio de trabajo de 40 megabytes, el sistema operativo deniega la solicitud de la segunda aplicación.
El uso de la función SetProcessWorkingSetSize para establecer el tamaño mínimo y máximo del conjunto de trabajo de una aplicación no garantiza que se reserve la memoria solicitada o que permanecerá residente en todo momento. Cuando la aplicación está inactiva o una situación de poca memoria provoca una demanda de memoria, el sistema operativo puede reducir el espacio de trabajo de la aplicación. Una aplicación puede usar la función VirtualLockpara bloquear intervalos del espacio de direcciones virtuales de la aplicación en memoria; sin embargo, esto puede degradar potencialmente el rendimiento del sistema.
Al aumentar el tamaño del espacio de trabajo de una aplicación, se quita la memoria física del resto del sistema. Esto puede degradar el rendimiento de otras aplicaciones y el sistema en su conjunto. También puede provocar errores en las operaciones que requieren que haya memoria física (por ejemplo, crear procesos, subprocesos y grupo de kernels). Por lo tanto, debe usar la función SetProcessWorkingSetSize cuidadosamente. Siempre debe tener en cuenta el rendimiento de todo el sistema al diseñar una aplicación.
Requisitos
Cliente mínimo compatible | Windows XP [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Encabezado | memoryapi.h |
Library | onecore.lib |
Archivo DLL | Kernel32.dll |
Vea también
Conjunto de trabajo de procesos