Было у меня задание разработать парсер для сайта, что собственно мной было и сделано и сдано заказчику на тестирование. В процессе тестирования заказчик пожаловался, что уже в финале обработки платформа падает с ошибкой о "недостаточно памяти".
При разборе "полетов" я обнаружил, что ошибка сваливается при сохранении промежуточных данных в json формате, которые, в свою очередь, до сохранения в файл лежали в переменной типа "строка". Т.к. к финалу работы данных набиралось много, то происходило переполнение, казалось бы "бесконечной", строки. В итоге, чтобы определить, а сколько надо то памяти написал крохотную обработку, которая заполняла строку рандомным набором символов. Верхний предел я установил длинной примерно в 600 млн символов или, учитывая то, что строки в платформе 8.2 хранятся в utf-8, ~1.2 Гб памяти.
Результат - падение платформы на 350 млн символах.
Решение данной проблемы на просторах интернета есть, вот одно из них. Если ссылка битая, то вот, собственно, решение:
bcdedit /set increaseuserva 3000
таким образом, мы увеличили количество доступной памяти для процесса до 3 тыс Мб. Скорее всего поможет, не проверял.
Собственно код обработки
Процедура КнопкаВыполнитьНажатие(Кнопка)
генЧисел = Новый ГенераторСлучайныхЧисел(Секунда(ТекущаяДата()));
БольшоеСлово = "";
СчетчикСтрок = 0;
ВсегоСтрок = 0;
Для сч = 0 По 600 Цикл
СреднееСлово = "";
Для сч1 = 0 По 1024 Цикл
МалоеСлово = "";
Для сч2 = 0 По 1024 Цикл
МалоеСлово = МалоеСлово + Символ(генЧисел.СлучайноеЧисло(64,122));
КонецЦикла;
ВсегоСтрок = ВсегоСтрок + 1;
СчетчикСтрок = СчетчикСтрок + 1;
ОбработкаПрерыванияПользователя();
СреднееСлово = СреднееСлово + МалоеСлово + Символы.ПС;
Если СчетчикСтрок >= 50 Тогда
Состояние("Прошли - " + Строка(ВсегоСтрок));
НадписьПройдено = "Прошли - " + Строка(ВсегоСтрок);
СчетчикСтрок = 0;
КонецЕсли;
КонецЦикла;
БольшоеСлово = БольшоеСлово + СреднееСлово;
КонецЦикла;
КонецПроцедуры