|
132 | 132 | КонецПроцедуры |
133 | 133 |
|
134 | 134 | // Очистить завершенные контексты |
135 | | -// Базовая очистка контекстов для предотвращения утечек памяти |
136 | | -// TODO: Реализовать полноценную очистку завершенных фоновых заданий после изучения API |
| 135 | +// Проверяет статус фоновых заданий и освобождает соединения завершенных контекстов |
| 136 | +// При недоступности API фоновых заданий использует эвристическую очистку |
137 | 137 | // |
138 | 138 | Процедура ОчиститьЗавершенныеКонтексты() |
139 | | - // Пока используем простую эвристику - ограничиваем количество активных контекстов |
140 | | - // В дальнейшем можно будет интегрировать с API ФоновыеЗадания после изучения документации |
| 139 | + Попытка |
| 140 | + // Пытаемся использовать API фоновых заданий для точной очистки |
| 141 | + Если ТипЗнч(ФоновыеЗадания) = Тип("МенеджерФоновыхЗаданий") Тогда |
| 142 | + ОчиститьЗавершенныеКонтексты_ЧерезAPI(); |
| 143 | + КонецЕсли; |
| 144 | + Исключение |
| 145 | + // Если API недоступен или возникла ошибка, используем эвристическую очистку |
| 146 | + КонецПопытки; |
141 | 147 |
|
| 148 | + // Эвристическая очистка как запасной вариант |
| 149 | + ОчиститьЗавершенныеКонтексты_Эвристически(); |
| 150 | +КонецПроцедуры |
| 151 | + |
| 152 | +// Очистка завершенных контекстов через API фоновых заданий |
| 153 | +// |
| 154 | +Процедура ОчиститьЗавершенныеКонтексты_ЧерезAPI() |
| 155 | + // TODO: Реализовать после изучения полной документации API ФоновыеЗадания |
| 156 | + // Пока что заглушка для будущей реализации |
| 157 | + |
| 158 | + // Предполагаемая логика: |
| 159 | + // 1. Получить список активных фоновых заданий |
| 160 | + // 2. Сравнить контексты (UUID-формат) с идентификаторами активных заданий |
| 161 | + // 3. Освободить соединения для завершенных заданий |
| 162 | +КонецПроцедуры |
| 163 | + |
| 164 | +// Эвристическая очистка контекстов для предотвращения утечек памяти |
| 165 | +// |
| 166 | +Процедура ОчиститьЗавершенныеКонтексты_Эвристически() |
142 | 167 | МаксимальноеКоличествоКонтекстов = 100; |
143 | 168 |
|
144 | 169 | Если Карта_КонтекстНаКоннектор.Количество() > МаксимальноеКоличествоКонтекстов Тогда |
|
0 commit comments