Как. Выделяет процессу заданный объм памяти?

Тема в разделе "WASM.BEGINNERS", создана пользователем young_man, 9 авг 2006.

  1. young_man

    young_man New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2005
    Сообщения:
    117
    Адрес:
    Ukraine
    ... Добрый день.
    Хочу написать утилиту которая
    - запускает процесс
    - Выделяет процессу заданный объм памяти
    - контролирует привышение выделенного объема
    - в случае привышения завершает процесс

    Читаю тут Рихтера - в нем описан объект "Задание".
    Функции
    - SetInformationJobObject()
    - элемент PeakProcessMemoryUsed
    - AssignProcessToJobObject()
    ... как я понял подходят, если не ошибаюсь.

    Посмотрел в инете статьи по этим функциям, как то никто их не
    использует только описуют.

    Может кто-то знает как это сделать проще и подскажет?
    Спасибо.
     
  2. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    посмотри SetProcessWorkingSetSize
     
  3. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    The GetProcessMemoryInfo function retrieves information about the memory usage of the specified process.
    Код (Text):
    1. BOOL GetProcessMemoryInfo(
    2.   HANDLE Process,
    3.   PPROCESS_MEMORY_COUNTERS ppsmemCounters,
    4.   DWORD cb
    5. );
    IMHO я бы делал так:
    1) CreateProcess(...)
    2) по таймеру GetProcessMemoryInfo(hProcess, ppsmemCounters, sizeof(PROCESS_MEMORY_COUNTERS))
    3) если ppsmemCounters->WorkingSetSize больше нормы - убиваем Process
     
  4. Bohdan200

    Bohdan200 New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2005
    Сообщения:
    134
    Адрес:
    Lviv
    AFAIK после SetProcessWorkingSetSize операционка будет скидивать все страници, которые превысили лимит в своп.