Windows 7: Task Scheduler / Engine уменьшает рабочий набор / память приложений, есть ли способ остановить это?
Я пытался автоматически запускать некоторые сценарии Auto-HotKey с помощью планировщика задач, поскольку он позволяет сценариям запускаться с правами администратора без запроса UAC.
Обычно скрипты выходят из строя через несколько часов. При запуске через папку UAC / explorer.exe / startup все эти сценарии выполнялись в течение нескольких дней. (Единственное, что я видел, надежно работает через планировщик задач, это простое, которое выскакивает окно сообщения «Hello World».)
Используя Process Explorer, я заметил, что у дочерних процессов taskeng.exe всегда были уменьшены размеры их рабочих наборов (с ~ 3000 К до 512 КБ или около того), в то время как дочерние процессы UAC / explorer.exe оставались постоянными.
Я попытался с помощью некоторого кода AHK проверить, может ли он изменить размер рабочего набора:
pid := DllCall("GetCurrentProcessId") handle := DllCall("OpenProcess", "UInt", 0x001F0FFF, "Int", 0, "Int", pid) DllCall("SetProcessWorkingSetSize", "UInt", handle, "Int", 10000000, "Int", 20000000) DllCall("CloseHandle", "Int", handle)
Это не похоже на буксировку, так что я не уверен, что есть какая-то проблема.
Решением было скомпилировать исполняемый файл как 64-битный, а не 32-битный. Я не пробовал это раньше, потому что 32-битная версия работала отлично через папку «Автозагрузка» в течение месяцев, которые я использовал.
Я полагаю, что проблема возникла из-за того, что клавиатура-хук загружалась в память, а затем выгружалась во время сбора мусора. Были затронуты только горячие клавиши, назначенные для подключения к клавиатуре, но не назначенные с помощью RegisterHotkey.
Я использую 64-битные исполняемые файлы уже более недели, и ни один из них не вышел из строя, хотя некоторые из них реагировали немного медленно (возможно, что-то было связано с фоновыми процессами или поглощением ресурсов Chrome). Устранение или перезапуск родительских процессов taskeng.exe и svchost может решить эту проблему, так как это был единственный способ остановить перераспределение рабочего набора (все еще не удалось решить 32-разрядную проблему, и уничтожение родительского svchost создало некоторые новые проблемы). ).
[2018-10-03 Обновление: Я в основном решил проблему.] Task Scheduler может устанавливать задачи для выполнения с различными приоритетами, но пользовательский интерфейс не показывает это.
Чтобы изменить приоритет:
- Экспортируйте задачу как файл XML.
- Отредактируйте файл XML и измените тег Приоритет. Смотрите эту страницу для списка приоритетов.
- Установите для StopOnIdleEnd значение «false». (Не проверял это, но это могло вызывать отставание мыши / ввода.)
- Импортируйте измененный файл XML как задачу, и она должна работать.
Повышение приоритета таким образом также увеличивает память и приоритет ввода / вывода.
Компиляция AHK-скриптов как 64-битных может потребоваться.
0 ответов на вопрос
Похожие вопросы
-
2
Windows 7 Home Premium запоминает пароли общего доступа к сети?
-
4
Как заблокировать выровненные по правому краю панели инструментов в Windows 7, чтобы они не выглядел...
-
4
Функция Windows 7 «Aero Snap» в Ubuntu GNOME
-
-
3
Мой второй жесткий диск не виден в Windows 7
-
7
Как заменить Блокнот в Windows 7?
-
2
Как расположить значки панели задач Windows 7 в 2 ряда?
-
1
Проблемы во время сна на Windows 7
-
6
Как управлять функцией привязки Windows 7 с помощью двух мониторов?
-
10
Как мне обновить Windows 7 RC до Windows 7 RTM?
-
3
Какая защита от шпионского ПО доступна для Windows 7?