Поможет ли удаление лишних объектов из конфигурации снизить потребление оперативной памяти?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

Многие разработчики сталкиваются с тем, что типовые конфигурации, такие как 1С:Бухгалтерия 3.0, потребляют значительный объем оперативной памяти. Возникает логичный вопрос: если мы удалим из конфигурации неиспользуемые макеты, драйверы БПО и прочие «тяжелые» объекты, станет ли система работать быстрее и потреблять меньше RAM? Давайте проанализируем, как на самом деле работает платформа 1С с памятью и стоит ли тратить время на «обезжиривание» конфигурации.

Принципы работы платформы 1С с памятью

Важно понимать фундаментальный принцип: платформа 1С не загружает всю конфигурацию в оперативную память при запуске. Работа построена по принципу ленивой загрузки (lazy loading). Метаданные (описания справочников, документов, регистров) считываются в память только в момент обращения к ним. Например, если вы открыли список документов, платформа подгрузит только те метаданные, которые нужны для работы этой формы.

Простое наличие «тяжелого» бинарного макета или неиспользуемого драйвера в файле .cf практически не влияет на базовое потребление памяти рабочим процессом rphost. Пока объект не вызван кодом, он не занимает место в оперативной памяти сеанса.

Почему потребление памяти растет?

Если дело не в «весе» конфигурации, то почему с годами потребление памяти только растет? Разберем основные причины:

  1. Кеширование данных: Платформа активно использует кеши для ускорения работы. Эти данные хранятся в памяти, чтобы избежать лишних обращений к СУБД.
  2. Качество кода: Потребление памяти критически зависит от алгоритмов конфигурации. Некорректное использование кешируемых данных, утечки памяти в расширениях или неоптимальные выборки данных в отчетах могут «высасывать» память гораздо быстрее, чем любой макет.
  3. Особенности серверной архитектуры: 1С стремится к высокой производительности, что часто приводит к тому, что занятая память не возвращается операционной системе мгновенно. Это сделано для того, чтобы при повторном обращении не тратить ресурсы на перераспределение памяти.

Механизмы оптимизации памяти

Вместо того чтобы удалять объекты из конфигурации, что усложнит последующие обновления, давайте рассмотрим, на что действительно стоит обратить внимание при оптимизации:

1. Использование модулей с повторным использованием возвращаемых значений

Для оптимизации работы с часто запрашиваемыми данными используйте Модули с повторным использованием возвращаемых значений. Это позволяет платформе кешировать результат вызова функции на уровне сеанса. Однако будьте осторожны: не храните там огромные объемы данных, которые редко используются.


// Пример использования функции с повторным использованием:
Функция ПолучитьНастройкиСистемы() Экспорт
    // Платформа закэширует результат выполнения этой функции
    Возврат Конфигурация.Настройки;
КонецФункции

2. Работа с внешними компонентами (DLL)

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

3. Оптимизация ролей и прав доступа

Существует проблема, когда избыточные или неоптимально настроенные роли могут приводить к росту потребления памяти из-за особенностей механизмов проверки RLS (ограничения доступа на уровне записей). Проанализируйте, какие роли назначены пользователям, и старайтесь избегать назначения «полных прав» всем без исключения.

Заключение: стоит ли «обезжиривать»?

Практика показывает, что «обезжиривание» конфигурации дает минимальный эффект, несопоставимый с затратами времени на разработку и последующую поддержку обновлений. Вместо этого сфокусируйтесь на:

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

← На главную