Funzione SetProcessWorkingSetSizeEx (memoryapi.h)
Imposta le dimensioni minime e massime del working set per il processo specificato.
Sintassi
BOOL SetProcessWorkingSetSizeEx(
[in] HANDLE hProcess,
[in] SIZE_T dwMinimumWorkingSetSize,
[in] SIZE_T dwMaximumWorkingSetSize,
[in] DWORD Flags
);
Parametri
[in] hProcess
Handle per il processo le cui dimensioni del working set devono essere impostate.
L'handle deve avere PROCESS_SET_QUOTA diritti di accesso. Per altre informazioni, vedere Sicurezza dei processi e diritti di accesso.
[in] dwMinimumWorkingSetSize
Dimensioni minime del working set per il processo, in byte. Il gestore della memoria virtuale tenta di mantenere almeno questa quantità di memoria residente nel processo ogni volta che il processo è attivo.
Questo parametro deve essere maggiore di zero, ma minore o uguale alla dimensione massima del working set. Le dimensioni predefinite sono 50 pagine, ad esempio 204.800 byte nei sistemi con dimensioni di pagina 4K. Se il valore è maggiore di zero ma minore di 20 pagine, il valore minimo viene impostato su 20 pagine.
Se sia dwMinimumWorkingSetSize che dwMaximumWorkingSetSize hanno il valore (SIZE_T)-1, la funzione rimuove il maggior numero possibile di pagine dal working set del processo specificato.
[in] dwMaximumWorkingSetSize
Dimensione massima del working set per il processo, in byte. Il gestore della memoria virtuale tenta di mantenere non più di questa quantità di memoria residente nel processo ogni volta che il processo è attivo e la memoria disponibile è insufficiente.
Questo parametro deve essere maggiore o uguale a 13 pagine (ad esempio, 53.248 nei sistemi con dimensioni di pagina 4K) e minore del valore massimo a livello di sistema (numero di pagine disponibili meno 512 pagine). La dimensione predefinita è 345 pagine (ad esempio, si tratta di 1.413.120 byte nei sistemi con dimensioni di pagina 4K).
Se sia dwMinimumWorkingSetSize che dwMaximumWorkingSetSize hanno il valore (SIZE_T)-1, la funzione rimuove il maggior numero possibile di pagine dal working set del processo specificato. Per informazioni dettagliate, vedere la sezione Osservazioni.
[in] Flags
Flag che controllano l'imposizione delle dimensioni minime e massime del working set.
Valore restituito
Se la funzione ha esito positivo, il valore restituito è diverso da zero.
Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError. Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.
Commenti
Il working set di un processo è il set di pagine di memoria nello spazio degli indirizzi virtuali del processo attualmente residente nella memoria fisica. Queste pagine sono disponibili per l'uso di un'applicazione senza attivare un errore di pagina. Per altre informazioni sugli errori di pagina, vedere Working Set.For more information about page faults, see Working Set. Le dimensioni minime e massime del working set influiscono sul comportamento di paging della memoria virtuale di un processo.
Il working set del processo specificato può essere svuotato specificando il valore (SIZE_T)-1 per le dimensioni minime e massime del working set. In questo modo viene rimosso il maggior numero possibile di pagine dal working set. A questo scopo, è anche possibile usare la funzione EmptyWorkingSet .
Se i valori di dwMinimumWorkingSetSize o dwMaximumWorkingSetSize sono maggiori delle dimensioni del working set corrente del processo, il processo specificato deve avere il privilegio SE_INC_WORKING_SET_NAME . Tutti gli utenti hanno in genere questo privilegio. Per altre informazioni sui privilegi di sicurezza, vedere Privilegi.
Windows Server 2003: Il processo specificato deve avere il privilegio di SE_INC_BASE_PRIORITY_NAME . Gli utenti nei gruppi Administrators e Power Users hanno in genere questo privilegio.
Il sistema operativo alloca le dimensioni dei set di lavoro in base al primo servizio. Ad esempio, se un'applicazione imposta correttamente 40 megabyte come dimensione minima del working set in un sistema da 64 megabyte e una seconda applicazione richiede una dimensione del working set da 40 megabyte, il sistema operativo nega la richiesta della seconda applicazione.
Per impostazione predefinita, l'uso della funzione SetProcessWorkingSetSize per impostare le dimensioni minime e massime del set di lavoro di un'applicazione non garantisce che la memoria richiesta sia riservata o che rimanga sempre residente. Quando un'applicazione è inattiva o una situazione di memoria insufficiente causa una richiesta di memoria, il sistema operativo può ridurre il working set dell'applicazione al di sotto del limite minimo del working set. Se la memoria è abbondante, il sistema potrebbe consentire a un'applicazione di superare il limite massimo del working set. I flag QUOTA_LIMITS_HARDWS_MIN_ENABLE e QUOTA_LIMITS_HARDWS_MAX_ENABLE consentono di assicurarsi che vengano applicati i limiti.
Quando si aumentano le dimensioni del working set di un'applicazione, si elimina la memoria fisica dal resto del sistema. Ciò può compromettere le prestazioni di altre applicazioni e del sistema nel suo complesso. Può anche causare errori di operazioni che richiedono la presenza di memoria fisica , ad esempio la creazione di processi, thread e pool di kernel. Pertanto, è necessario usare attentamente la funzione SetProcessWorkingSetSize . È sempre necessario considerare le prestazioni dell'intero sistema quando si progetta un'applicazione.
Un'applicazione può usare la funzione VirtualLock per bloccare gli intervalli di indirizzi virtuali dell'applicazione in memoria; tuttavia, ciò può potenzialmente compromettere le prestazioni del sistema.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Vista [app desktop | App UWP] |
Server minimo supportato | Windows Server 2003 [app desktop | App UWP] |
Piattaforma di destinazione | Windows |
Intestazione | memoryapi.h (include Windows.h in Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |
Libreria | onecore.lib |
DLL | Kernel32.dll |