Ошибка создания потока, недостаточно памяти для обработки команды
Обновлено: 21.11.2024
Если вы получаете сообщение об ошибке Недостаточно ресурсов памяти для обработки этой команды в Windows 10, это означает, что недостаточно памяти для выполнения введенной вами команды, обычно в CMD — командной строке. Это также может произойти при доступе к общим элементам на сервере Windows.
В первом случае это обычно происходит из-за остановки основных служб Windows, вызванной повреждением системных файлов, конфликтами между системными файлами или заражением вредоносным ПО. Мы предлагаем вам попробовать следующие решения.
Обновление: если вы видите ошибку «Недостаточно ресурсов памяти для обработки этой команды» после попытки выполнить команды (и получения таких ошибок, как сбой при попытке скопировать загрузочные файлы или отказ в доступе к fixboot) для попытки исправления цикл отката Windows, вызванный недавним обновлением Windows 10 от апреля 2018 г. версии 1803, вы должны попробовать исправление в этом посте: обновление Windows 10 выбирает раскладку клавиатуры. Если это не сработает, попробуйте следующее: цикл отката Windows после обновления Windows 10.
Исправлено: недостаточно ресурсов памяти для обработки этой команды в Windows 10
Если вы получаете сообщение об ошибке в командной строке, в той же командной строке (убедитесь, что у них есть права администратора) введите следующие команды.
Это запустит сканирование системных файлов для автоматического сканирования и восстановления поврежденных или отсутствующих файлов.
Когда сканирование будет завершено, попробуйте выполнить команды, которые вы вводили ранее, и посмотрите, работает ли это сейчас. Если это по-прежнему не работает или даже sfc /scannow возвращает ошибку «недостаточно ресурсов памяти для обработки этой команды», попробуйте запустить инструмент DISM для восстановления образа Windows.
В командной строке введите следующую команду.
DISM, сокращенно от Deployment Imaging and Servicing Management, представляет собой встроенный в Windows инструмент для обновления файлов и устранения проблем, когда образ Windows становится непригодным для обслуживания.
Восстановить обновление с помощью установочного диска Windows 10
Если ничего из вышеперечисленного не работает, мы рекомендуем вам выполнить обновление с помощью установочного диска Windows 10. Вот как это сделать.
Перезагрузите компьютер и сделайте то, что вы делали, и посмотрите, присутствует ли ошибка, недостаточно ресурсов памяти для обработки этой команды.
Исправить с помощью редактора реестра
Если вы получаете сообщение об ошибке при доступе к общим элементам на сервере Windows, выполните следующие действия, чтобы увеличить значение реестра IRPStackSize.
Перейти в меню «Пуск». Найдите regedit и откройте его. Перейдите к следующей папке реестра.
Если запись IRPStackSize не удается найти в подразделе, создайте ее, щелкнув правой кнопкой мыши в любом месте правой панели. Выберите «Создать», затем значение DWORD (32-разрядное). Назовите его IRPStackSize.
Дважды щелкните запись IRPStackSize, в поле данных введите большее значение, например, значение 20 с десятичным основанием. Мы предлагаем вам сначала попробовать немного увеличить значение. Вернитесь к этой записи реестра, чтобы увеличить значение, если проблема с недостаточно ресурсов памяти для обработки этой команды сохраняется.
Читать:
Описание для общего доступа: как исправить ошибку «Недостаточно ресурсов памяти для обработки этой команды» в Windows 10, особенно при выполнении команд в CMD или доступе к общим элементам в Windows Server.
Опубликовано Ньяу Вай Хоэ. Обновлено 25 августа 2021 г.
В этом посте я покажу вам, как исправить ошибку «Недостаточно ресурсов памяти для обработки этой команды» в командной строке Windows.
"Память" на вашем ПК состоит из жесткого диска и оперативной памяти, которые являются типами областей хранения.
Если оперативной памяти мало или программа, которую вы пытаетесь запустить, использует ее слишком много, вы можете получить ошибку, которую затем необходимо исправить с помощью редактирования реестра, очистки системы или обновления программного обеспечения.
Согласно данным Microsoft, вы можете получить эту ошибку, если у вас недостаточно высокое значение записи реестра IRPStackSize на сервере. Вот почему настройка реестра может быть одним из самых простых решений этой проблемы.
Вы всегда должны быть осторожны при изменении значений реестра, потому что если вы что-то измените неправильно, это может вызвать серьезную системную проблему.
Не забудьте создать резервную копию реестра, прежде чем вносить какие-либо изменения, чтобы вы всегда могли вернуть его в прежнее состояние, если что-то пойдет не так.
5 способов исправить ошибку «Недостаточно ресурсов памяти для обработки этой команды»
Давайте рассмотрим 5 простых способов избавиться от проблемы «Недостаточно ресурсов памяти для обработки этой команды».
- Нажмите одновременно клавиши Windows и R, чтобы открыть диалоговое окно «Выполнить».
- Введите “ regedit ” и нажмите “ OK “.
- Найдите и выберите этот подраздел:
Если запись IRPStackSize недоступна, выполните следующие действия:
- Нажмите «Изменить», затем «Создать», а затем «Параметр DWORD»
- Введите « IRPStackSize » и нажмите Enter.
- Нажмите « Изменить », затем « Изменить »
- Введите большее число в поле "Значение данных" и нажмите "ОК" (значения варьируются от 0x1 до 0xC и относятся к числам от 1 до 12).
Если вы все еще сталкиваетесь с той же проблемой, повторите эти шаги, снова увеличив IRPStackSize.
- Нажмите одновременно клавиши Windows и R, чтобы открыть диалоговое окно «Выполнить».
- Введите “ regedit ” и нажмите “ OK “.
- Найдите и выберите этот подраздел:
- Нажмите на значение Windows, затем «Изменить» и «String»
- Увеличьте параметр SharedSection
В Windows формат будет выглядеть следующим образом
В Windows 2000m XP или Server 2003 формат будет выглядеть следующим образом:
- Увеличьте значение « yyyy » до 12 288 и значение « zzzz » до 1024, если вы используете 32-разрядную систему.
- Увеличьте значение « yyyy » до 20 480 и значение « zzzz » до 1024, если вы используете 64-разрядную систему.
Если у приложения закончилось место в хранилище, вы можете перезапустить приложение, чтобы ошибка исчезла. Однако это лишь временное решение.
Если вы хотите навсегда устранить проблему, вам нужно настроить файл « xyzService.exe », которому не хватает памяти, чтобы избежать разветвлений приложения пользовательского интерфейса в сеансе 0.
Если вы запускаете, например, xyzService.exe в сеансе 0 и используете учетную запись домена DOMAINxyzServiceAccount, это может привести к ответвлению пользовательского интерфейса, при котором приложение пользовательского интерфейса не будет правильно завершено.
Вам потребуется настроить xyzService.exe так, чтобы приложение пользовательского интерфейса не разветвлялось в сеансе 0.
Важно убедиться, что вы установили новейшую версию Microsoft SQL Server, чтобы на вашем компьютере были установлены последние исправления и улучшения.
Перейдите на страницу обновления Microsoft SQL Server, чтобы проверить, актуальна ли ваша версия.
По умолчанию это скрытая папка, так как там находятся файлы конфигурации Windows.
Рекомендуется создать резервную копию папки временных файлов, прежде чем что-либо менять, на случай, если что-то пойдет не так и вам нужно будет вернуть все как было.
Эту папку можно найти в разделе Windows. Установите флажок «Скрытые элементы» на вкладке просмотра, чтобы увидеть их.
В качестве альтернативы вы можете получить к нему доступ следующим образом:
- Нажмите клавишу Windows + R и введите %temp%
- Теперь нажмите « Ctrl + A », чтобы выбрать все файлы, и нажмите «Удалить».
- Перейдите на диск C: или любой другой диск, на котором установлена Windows, и найдите временную папку.
- Также удалите все файлы.
- Перезагрузите компьютер и посмотрите, устранена ли проблема
Заключение
Мы надеемся, что одно из следующих действий поможет вам исправить ошибку « Недостаточно ресурсов памяти для обработки этой команды ».
"Недостаточно памяти для обработки этой команды". Это сообщение об ошибке обычно появляется всякий раз, когда возникает проблема с диапазоном IRPStackSize на устройстве пользователя или при неправильном распределении памяти на устройстве пользователя. Если вы наблюдаете эту проблему на своем устройстве, не волнуйтесь. Доступны исправления для решения вашей проблемы. Но прежде чем переходить к исправлениям, попробуйте эти начальные обходные пути, которые могут решить вашу проблему с минимальными усилиями.
Первоначальные обходные пути —
<р>1. Если вы впервые столкнулись с этой проблемой на своем компьютере, перезагрузите компьютер.2. Если ожидается какое-либо обновление Windows, обновите свое устройство.
3. Проверьте, достаточно ли у вас места на диске, на котором установлена Windows. (Необходимо оставить не менее 30 ГБ свободного места)
Если вы по-прежнему сталкиваетесь с проблемой на своем устройстве, попробуйте эти исправления, которые обязательно решат вашу проблему.
Оглавление
Fix-1 Изменить диапазон IRPStackSize
IRPStackSize означает размер стека запросов ввода/вывода. Размер этого стека отвечает за объем памяти, выделяемой для обработки команд в Windows. Вы сталкиваетесь с сообщением об ошибке «Недостаточно памяти для обработки этой команды», потому что IRPStackSize имеет уменьшенный диапазон, для которого он не может работать с расширенным диапазоном. Неукоснительно выполняйте эти шаги, чтобы расширить диапазон IRPStackSize.
<р>1. Открыв окно Выполнить, нажав клавишу Windows+R, введите «regedit» в окне «Выполнить». <р>2. Теперь нажмите «ОК».<р>3. На левой панели Редактора реестра перейдите в это место-
<р>4. Теперь на правой панели «Параметры» попробуйте найти «IRPStackSize». Если вы можете найти «IRPStackSize», пропустите этот шаг и перейдите к шагу 4.
Но если вы не можете найти «IRPStackSize», вам нужно создать новое значение DWORD.
а. Щелкните правой кнопкой мыши на пустом месте и нажмите «Создать», а затем нажмите «Значение DWORD (32-разрядное)».
б. Переименуйте этот ключ в «IRPStackSize».
<р>5. Дважды щелкните «IRPStackSize».
<р>6. Затем нажмите «Десятичный», затем измените «Значение данных:» на любое значение от «1» до «12» (что эквивалентно от «0x1» до «0xc» в шестнадцатеричной системе).Если вы выберете «шестнадцатеричную» систему, вы можете ввести любое значение от «1» до «c».
[ПРИМЕЧАНИЕ. Чем меньше введенное значение, тем лучше, поскольку будет выделено меньше памяти.]
Теперь перезагрузите компьютер и после перезагрузки проверьте, решена ли ваша проблема.
Если ваша проблема все еще не решена, снова увеличьте «Значение данных» «IRPStackSize» и проверьте, помогает ли это.
Исправить-2 Очистить папку Temp-
Иногда временная папка на вашем компьютере может содержать ненужные/поврежденные файлы, что может вызвать сообщение «Недостаточно памяти для обработки этой команды». Вам следует очистить временную папку на локальном диске. Просто выполните следующие действия, чтобы удалить содержимое папки Temp.
<р>1. Просто нажмите сочетание клавиш Windows+R, чтобы открыть окно «Выполнить». <р>2. введите «%temp%» и нажмите Enter.
Откроется временная папка.
<р>3. Теперь в окне папки Temp нажмите Ctrl+A, чтобы выделить все содержимое папки Temp. <р>4. Теперь нажмите Shift+Delete, чтобы удалить все содержимое папки Temp.<р>5. Нажмите клавиши Windows+E, чтобы открыть Проводник.
<р>6. Теперь перейдите в это место в окне Проводник-
Теперь перезагрузите компьютер и проверьте, сталкиваетесь ли вы с той же проблемой или нет.
Если вы по-прежнему сталкиваетесь с той же проблемой, перейдите к следующему решению.
Если вы хотите дополнительно очистить файлы, вы можете сделать это с помощью инструмента очистки диска.
Исправить-3 Использовать инструмент DISM-
Чтобы проверить, не повреждены ли ваши системные файлы каким-либо сторонним программным обеспечением, вам необходимо запустить инструмент DISM (Управление обслуживанием образов развертывания) в состоянии чистой загрузки. Внимательно выполните следующие действия, чтобы использовать DISM в режиме чистой загрузки.
Чтобы выполнить чистую загрузку компьютера, выполните следующие действия:
Чистая загрузка вашего компьютера гарантирует, что ваш компьютер загружается с минимальным набором драйверов и меньшим количеством запускаемых программ. Чтобы очистить загрузку, выполните следующие действия на вашем компьютере:
<р>1. Нажмите клавишу Windows+R. Откроется окно Выполнить. <р>2. Когда откроется окно «Выполнить», введите «msconfig» и нажмите «ОК».Откроется
Конфигурация системы.
<р>2. Сначала перейдите на вкладку «Общие». <р>3. Затем снимите флажок рядом с «Загрузить элементы автозагрузки». <р>4. На следующем шаге убедитесь, что параметр "Загрузить системные службы" отмечен.<р>5. Затем перейдите на вкладку «Услуги».
<р>6. Затем установите флажок «Скрыть все службы Microsoft» и нажмите «Отключить все». <р>7. Наконец, нажмите «Применить», а затем нажмите «ОК».
Перезагрузите компьютер, он загрузится в чистом режиме.
После загрузки в режиме чистой загрузки запустите этот инструмент DISM через Командную строку (администратор).
<р>1. Окно Выполнить можно открыть, нажав клавишу Windows и клавишу R. <р>2. После этого скопируйте и вставьте или введите следующее в окне Выполнить и нажмите Enter.<р>3. Чтобы запустить команду DISM, скопируйте и вставьте эту команду и нажмите Enter.
Если этой команде не удается выполнить эту команду –
<р>3. Скопируйте и вставьте эту команду и нажмите Enter, чтобы выполнить ее.
Подождите, пока процесс завершится.
Затем перезагрузите компьютер и после перезагрузки проверьте, сталкиваетесь ли вы с той же проблемой или нет. Если вы по-прежнему сталкиваетесь с той же проблемой, воспользуйтесь следующим решением.
Fix-4 Обновление Microsoft SQL Server-
По словам некоторых пользователей, их проблема была решена после обновления Microsoft SQL Server до последней доступной версии. Как правило, это обновление поставляется вместе с Центром обновления Windows. Если ожидается какое-либо обновление Windows, установите его на свое устройство. Если вы хотите обновить Microsoft SQL Server с официального сайта Microsoft, вы можете легко это сделать.
После обновления Microsoft SQL Server перезагрузите компьютер.
После перезагрузки попробуйте запустить ту же службу/приложение, проверьте, сталкиваетесь ли вы с проблемой «Недостаточно памяти для обработки этой команды» или нет. Если вы все еще сталкиваетесь с проблемой, перейдите к следующему исправлению.
Исправить-5 Перезапустите проблемное приложение/службу-
Если вы столкнулись с проблемой с определенным приложением/службой, вы можете столкнуться с этой проблемой, потому что служба создает свой собственный UIservice.exe. Работает как обычно в нормальных условиях. Но это ответвление приложения/службы пользовательского интерфейса не выходит из системы, как обычно, как должно. Таким образом, куча рабочего стола истощается до тех пор, пока материнское приложение/служба не заметит это и не остановит.
Попробуйте перезагрузить приложение/службу, и приложение должно запуститься.
[ПРИМЕЧАНИЕ. Но это временное решение, так как проблема может вернуться снова через несколько месяцев. ]
Самбит — инженер-механик по квалификации, который любит писать о Windows 10 и решениях самых странных проблем.
Теперь у меня есть один тестовый сервер с Windows Server 2019, RDP.
Простой тестовый код, подключение к локальному TCP-серверу и отключение:
После 20 000 операций на тестовом компьютере возникает ошибка:
У меня с машиной все нормально, сделано 1М операций. У меня Delphi XE3, последняя версия Indy, что не так? Может есть какие особенности при работе в RDP?
"Что не так?" - сообщение об ошибке точное: для вашего запущенного процесса память ограничена, и вы заняли ее так много, что вам следует снова освободить ее, прежде чем запрашивать более. Просто представьте себе, что ваша машина «на моей работе» имеет 16 ГБ ОЗУ, а «тестовый сервер» имеет только 512 МБ ОЗУ. Кроме того, сервисы имеют гораздо более жесткие ограничения.
Процесс в памяти не увеличился, его размер всего 100M. Утечек памяти нет, количество дескрипторов и потоков не растет. На одной машине работает нормально, на второй вылетает с этой ошибкой
В вашем коде много странных вещей. Позвольте мне упомянуть только об одном из них: tcpClient := TIdTCPClient.Create(nil); ДОЛЖНА быть строкой ПЕРЕД попыткой .
@Andreas Rejbrand Я согласен, но это не влияет на проблему. Я переместил tcpClient := TIdTCPClient.Create(nil); блокировка try и проблема не исчезла
3 ответа 3
Эта проблема не относится к Indy. Показанный код потенциально может запускать тысячи потоков одновременно, каждый из которых использует объект ядра, используя размер стека по умолчанию 1-4 МБ и т. д. Добавьте это, и это МНОГО потенциально используемые ресурсы памяти и системы. Поэтому вполне логично, что по мере выполнения цикла новые потоки могут завершаться ошибкой с ERROR_NOT_ENOUGH_MEMORY с течением времени.
Один из способов смягчить это — уменьшить размер стека каждого потока, поскольку этот код выполняет очень мало работы в каждом потоке, поэтому ему не нужен большой стек. TThread не предлагал эту опцию для каждого потока до Delphi 10.3 Rio, но Win32 API всегда поддерживал ее (см. Как установить размер стека в TThread?). Или вы можете установить размер стека по умолчанию глобально в настройках проекта для всего приложения или в коде через .
Еще один вариант — уменьшить количество одновременно работающих потоков. Например, с помощью очереди задач, выполняемых пулом потоков, который ограничивает количество запущенных задач.
Читайте также: