Função SetProcessWorkingSetSizeEx (memoryapi.h)
Define os tamanhos mínimo e máximo do conjunto de trabalho para o processo especificado.
Sintaxe
BOOL SetProcessWorkingSetSizeEx(
[in] HANDLE hProcess,
[in] SIZE_T dwMinimumWorkingSetSize,
[in] SIZE_T dwMaximumWorkingSetSize,
[in] DWORD Flags
);
Parâmetros
[in] hProcess
Um identificador para o processo cujos tamanhos de conjunto de trabalho devem ser definidos.
O identificador deve ter PROCESS_SET_QUOTA direitos de acesso. Para obter mais informações, consulte Direitos de Acesso e Segurança do Processo.
[in] dwMinimumWorkingSetSize
O tamanho mínimo do conjunto de trabalho para o processo, em bytes. O gerenciador de memória virtual tenta manter pelo menos essa quantidade de memória residente no processo sempre que o processo estiver ativo.
Esse parâmetro deve ser maior que zero, mas menor ou igual ao tamanho máximo do conjunto de trabalho. O tamanho padrão é de 50 páginas (por exemplo, são 204.800 bytes em sistemas com um tamanho de página de 4K). Se o valor for maior que zero, mas menor que 20 páginas, o valor mínimo será definido como 20 páginas.
Se dwMinimumWorkingSetSize e dwMaximumWorkingSetSize tiverem o valor (SIZE_T)–1, a função removerá o máximo possível de páginas do conjunto de trabalho do processo especificado.
[in] dwMaximumWorkingSetSize
O tamanho máximo do conjunto de trabalho para o processo, em bytes. O gerenciador de memória virtual tenta manter não mais do que tanta memória residente no processo sempre que o processo estiver ativo e a memória disponível estiver baixa.
Esse parâmetro deve ser maior ou igual a 13 páginas (por exemplo, 53.248 em sistemas com um tamanho de página de 4K) e menor que o máximo de todo o sistema (número de páginas disponíveis menos 512 páginas). O tamanho padrão é de 345 páginas (por exemplo, são 1.413.120 bytes em sistemas com um tamanho de página de 4K).
Se dwMinimumWorkingSetSize e dwMaximumWorkingSetSize tiverem o valor (SIZE_T)–1, a função removerá o máximo possível de páginas do conjunto de trabalho do processo especificado. Para obter detalhes, consulte Observações.
[in] Flags
Os sinalizadores que controlam a imposição dos tamanhos mínimo e máximo do conjunto de trabalho.
Retornar valor
Se a função for bem-sucedida, o valor retornado será diferente de zero.
Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError. Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.
Comentários
O conjunto de trabalho de um processo é o conjunto de páginas de memória no espaço de endereço virtual do processo que atualmente residem na memória física. Essas páginas estão disponíveis para um aplicativo usar sem disparar uma falha de página. Para obter mais informações sobre falhas de página, consulte Conjunto de trabalho. Os tamanhos mínimo e máximo do conjunto de trabalho afetam o comportamento de paginação da memória virtual de um processo.
O conjunto de trabalho do processo especificado pode ser esvaziado especificando o valor (SIZE_T)–1 para os tamanhos mínimo e máximo do conjunto de trabalho. Isso remove o maior número possível de páginas do conjunto de trabalho. A função EmptyWorkingSet também pode ser usada para essa finalidade.
Se os valores de dwMinimumWorkingSetSize ou dwMaximumWorkingSetSize forem maiores que os tamanhos atuais do conjunto de trabalho do processo, o processo especificado deverá ter o privilégio SE_INC_WORKING_SET_NAME . Todos os usuários geralmente têm esse privilégio. Para obter mais informações sobre privilégios de segurança, consulte Privilégios.
Windows Server 2003: O processo especificado deve ter o privilégio SE_INC_BASE_PRIORITY_NAME . Os usuários nos grupos Administradores e Usuários do Power geralmente têm esse privilégio.
O sistema operacional aloca tamanhos de conjunto de trabalho por itens por 1 a 0. Por exemplo, se um aplicativo definir com êxito 40 megabytes como seu tamanho mínimo de conjunto de trabalho em um sistema de 64 megabytes e um segundo aplicativo solicitar um tamanho de conjunto de trabalho de 40 megabytes, o sistema operacional negará a solicitação do segundo aplicativo.
Por padrão, usar a função SetProcessWorkingSetSize para definir os tamanhos mínimos e máximos do conjunto de trabalho de um aplicativo não garante que a memória solicitada será reservada ou que ela permanecerá residente o tempo todo. Quando um aplicativo está ocioso ou uma situação de memória baixa causa uma demanda por memória, o sistema operacional pode reduzir o conjunto de trabalho do aplicativo abaixo do limite mínimo do conjunto de trabalho. Se a memória for abundante, o sistema poderá permitir que um aplicativo exceda o limite máximo do conjunto de trabalho. Os sinalizadores QUOTA_LIMITS_HARDWS_MIN_ENABLE e QUOTA_LIMITS_HARDWS_MAX_ENABLE permitem garantir que os limites sejam impostos.
Quando você aumenta o tamanho do conjunto de trabalho de um aplicativo, você está tirando a memória física do restante do sistema. Isso pode prejudicar o desempenho de outros aplicativos e do sistema como um todo. Ele também pode levar a falhas de operações que exigem a presença de memória física (por exemplo, criação de processos, threads e pool de kernel). Portanto, você deve usar a função SetProcessWorkingSetSize cuidadosamente. Você sempre deve considerar o desempenho de todo o sistema ao criar um aplicativo.
Um aplicativo pode usar a função VirtualLock para bloquear intervalos do espaço de endereço virtual do aplicativo na memória; no entanto, isso pode prejudicar potencialmente o desempenho do sistema.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows Vista [aplicativos da área de trabalho | Aplicativos UWP] |
Servidor mínimo com suporte | Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP] |
Plataforma de Destino | Windows |
Cabeçalho | memoryapi.h (inclua Windows.h no Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Biblioteca | onecore.lib |
DLL | Kernel32.dll |