Функция SetProcessWorkingSetSize


Функция SetProcessWorkingSetSize устанавливает минимальный и максимальный размеры рабочего комплекта памяти для заданного процесса.

Синтаксис

BOOL SetProcessWorkingSetSize(

HANDLE hProcess,               // дескриптор процесса

DWORD dwMinimumWorkingSetSize, // минимальный размер 
                              
// рабочего комплекта

DWORD dwMaximumWorkingSetSize  // максимальный размер 
                              
// рабочего комплекта

);

Параметры

hProcess

[in] Дескриптор процесса, размер рабочего комплекта которого будет установлен.

Windows NT/2000/XP: дескриптор должен иметь права доступа PROCESS_SET_QUOTA. Для получения дополнительной информации, см. статью Защита процесса и права доступа.

dwMinimumWorkingSetSize

[in] Минимальный размер рабочего комплекта памяти процесса в байтах. Менеджер виртуальной памяти пытается сохранить, по крайней мере, это количество памяти в процессе резидентно всякий раз, когда процесс активен.

Если и dwMinimumWorkingSetSize и dwMaximumWorkingSetSize имеют значение – (минус) 1, функция временно урезает рабочий комплект памяти заданного процесса до нуля. Это, по существу, выносит процесс за пределы физической оперативной памяти (RAM).

dwMaximumWorkingSetSize

[in] Максимальный размер рабочего комплекта памяти процесса в байтах. Менеджер виртуальной памяти пытается сохранить не более чем это количество памяти в процессе резидентно всякий раз, когда процесс активен, а память находится в ограниченном объеме.

Если и dwMinimumWorkingSetSize и dwMaximumWorkingSetSize имеют значение – (минус) 1, функция временно урезает рабочий комплект памяти заданного процесса до нуля. Это по существу выносит процесс за пределы физической оперативной памяти (RAM).

Возвращаемые значения

Если функция завершается успешно, величина возвращаемого значения - не ноль.

Если функция завершается с ошибкой, величина возвращаемого значения - ноль. Вызовите GetLastError, чтобы получить дополнительные данные об ошибках.

Замечания

Рабочий комплект памяти процесса - набор страниц памяти, в настоящее время видимых процессом в физической оперативной памяти (RAM). Эти страницы являются резидентными и доступны для приложения, чтобы использоваться не вызвав ошибки из-за отсутствия страницы. Минимальный и максимальный размер рабочего комплекта памяти воздействуют на характер работы страничной организации виртуальной памяти процесса.

Рабочий комплект памяти заданного процесса может быть освобождено при помощи установки значения – (минус) 1, и для минимального и для максимального размера рабочего комплекта.

Если значения или dwMinimumWorkingSetSize или dwMaximumWorkingSetSize больше, чем текущий размер рабочего комплекта памяти процессов, заданный процесс должен иметь привилегию SE_INC_BASE_PRIORITY_NAME. Пользователи в группе Администратора и группе опытных пользователей, вообще-то имеют эту привилегию. Для получения дополнительной информации о привилегиях в системе безопасности, см. Привилегии.

Операционная система назначает размер рабочего комплекта памяти по принципу "первым пришел, первым обслужен". Например, если прикладная программа успешно устанавливает 40 мегабайтов как свой минимальный размер рабочего комплекта памяти в системе с 64 мегабайтами, и вторая программа запрашивает размер рабочего комплекта памяти в 40 мегабайт, операционная система дает отказ на запрос второй прикладной программы.

Использование функции SetProcessWorkingSetSize для установки минимального и максимального размера рабочего комплекта памяти прикладной программы не гарантирует того, что требуемая память будет зарезервирована, или что она останется всегда резидентной. Когда приложение бездействует, или ситуация с нехваткой памяти вызывает запрос на память, операционная система может уменьшить рабочий комплект памяти приложения. Прикладная программа может использовать функцию VirtualLock, чтобы заблокировать область виртуального адресного пространства приложения в памяти; однако, это может потенциально ухудшить эффективность системы.

Когда Вы увеличиваете размер рабочего комплекта памяти прикладной программы, Вы забираете физическую память у остальной части системы. Это может ухудшить эффективность других приложений и системы в целом. Это может также привести к сбоям операций, которые требуют, чтобы присутствовала физическая память; например, создавая процессы, потоки и пул (динамически распределяемую область) ядра. Таким образом, Вы должны использовать функцию SetProcessWorkingSetSize с большой осторожностью. Вы должны всегда рассматривать эффективность системы в целом, когда разрабатываете прикладную программу.

Смотри также

Краткий обзор Процессы и потоки, Функции, используемые процессами и потоками, GetProcessWorkingSetSize, VirtualLock

Размещение и совместимость SetProcessWorkingSetSize

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.5 и выше

Windows Me

Нет

Windows 98

Нет

Windows 95

Нет

Используемая библиотека

Kernel32.lib

Заголовочный файл

 

- объявлено в

Winbase.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz