Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Утечка памяти в платформе?
Maximus314
Отправлено: 23.01.13, 22:45


Молчаливый
*

Группа: Пользователи
Сообщений: 1
Регистрация: 16.07.12
Пользователь №: 19150


Доброго Вам времени суток!

Столкнулся со странным поведением платформы на казалось бы элементарном алгоритме.

Написал обработку перепроведения базы с определенной спецификой и вполне благополучно ее использовал, но когда количество документов в базе превысило некое критическое количество обработка начала приводить к аварийному завершению работы 1С с выдачей сообщения о нехватке памяти.

Попытка найти ошибку в алгоритме привела к постепенному "выбрасыванию" фрагментов кода пока от алгоритма не остался по сути цикл получения документов и самое странное - проблема нехватки памяти не исчезла.

Вот пример кода, который отрабатывает за 9 секунд и при этом объем занятой памяти процессом 1C8.exe находится на уровне 36Мб
    Выборка = Документы.РасходнаяНакладная.Выбрать();
    Кво = 0;
    Пока Выборка.Следующий() Цикл
        Док = Выборка.ПолучитьОбъект();
        Кво=Кво+1;
        Если Кво>10000 Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;

Однако стоит добавить обращение через ссылку, как ситуация кардинальным образом меняется - обработка длится 32 секунды и процесс выделяет 145Мб памяти:

    Выборка = Документы.РасходнаяНакладная.Выбрать();
    Кво = 0;
    Пока Выборка.Следующий() Цикл
        Док = Выборка.Ссылка.ПолучитьОбъект();
        Кво=Кво+1;
        Если Кво>10000 Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;

Получается, что если получать объект непосредственно из выборки, то все "летает" и работает вполне корректно.

Но стоит попытаться получить объект по ссылке (именно так и был реализован алгоритм работы - ссылка на документ передавалась в процедуру, где выполнялся дополнительный анализ движений регистра и принималось решение о необходимости повторного проведения - в этот момент и получался объект) - система начинает задумываться и выделять память, которую не освобождает даже после закрытия формы обработки.

Заранее благодарю за помощь в решении данного вопроса!

PS: Версия платформы 8.2.17.153

  Форум: Программирование обычных форм 1С 8.2 и не интер... · Просмотр сообщения: #63690 · Ответов: 9 · Просмотров: 6130
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 04.06.24, 14:42
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!