1Cv7.7 «Недостаточно памяти»

Недавно столкнулся с проблемой, при формировании отчета в ТиС 9.2 за большой период, порядка 6 лет, вылетает ошибка «Недостаточно памяти» и приложение закрывается. Удивлению не было предела, ибо использовал я Windows Server 2003 x64 с 25Gb оперативной памяти. На момент вылета приложения на сервере было свободно порядка 18Gb памяти.

Повторное формирование этого отчета пролило свет на суть проблемы. Дело в том, что вылет происходил, когда процесс потреблял более 2Gb памяти. И тут я вспомнил то, что не следовало забывать. 32 разрядные приложения в обычных условиях могут адресовать только 2 гигабайта памяти, как в 32- так и в 64- битных системах. Под обычными условиями понимается то, что программа была скомпилирована без учета потребеления большего количества памяти, рассказывать всю теорию о виртуальной памяти в windows я не буду, расскажу лишь как решить проблему.

Для начала скачиваем маленькое приложение 4Gb Patch и патчим исполняемый файл (1cv7s.exe), и если у вас Windows x64, то больше ничего делать не нужно.

Если у вас Windows x86:

Windows Vista, Windows 7, Windows 2008:
BCDEdit /set increaseuserva XXXX (где XXXX количество памяти в мегабайтах в диапазоне 2048 — 3072)
BCDEdit /set.

Windows XP, Windows Server 2003:
В фале boot.ini прописать: /3GB /userva=XXXX (где XXXX количество памяти в мегабайтах в диапазоне 2048 — 3072).

[Boot Loader]
Timeout=30
Default=multi(0)disk(0)rdisk(0)partition(2)\WINNT
[Operating Systems]
multi(0)disk(0)rdisk(0)partition(2)\WINNT=»Microsoft Windows Server 2003″ /fastdetect /3GB /Userva=2900

Служба поддержки продуктов корпорации Майкрософт настоятельно рекомендует использовать для параметра /userva=XXXX память в диапазоне 2 900–3 030. Также следует учитывать, что данные изменения коснутся абсолютно всех приложений.

P.S.: Данный метод подходит и для других приложений, но перед тем как патчить приложение, нужно проверить его на наличие флага LARGEADDRESSAWARE. Это можно сделать с помощью таких программ, как: ExeInfo, Program to analyze PE files, CFF Explorer.

1Cv7.7 «Недостаточно памяти»: 5 комментариев

  1. у меня с некоторых пор 1С (порог примерно 1ГБайт) не пишет «недостаточно памяти». а просто вычисления останавливаются, а окно обработки можно закрыть, нажав ESC. загрузка процессора при этом нулевая. после этого 1С не реагирует ни на какие кнопки.
    поставил патч (система 64-разрядная). и преодолел эту проблему. вот уже 1.3Гбайта, и продолжает вычисления…
    причем еще заметил, что такое же зависание происходило при простой передаче данных (списка значений) в обработчике подбора. решил проблему так — в подборе возвращаю короткую строку, а сами данные передаю через файл (значениевфайл — значениеизфайла)

Добавить комментарий для Денис Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *