sequenceDiagram
autonumber
participant Core as 🧠 Core Orchestrator
participant Registry as 👥 Twin Registry (RAM)
participant GC as 🗑️ System Garbage Collector
Core->>Registry: flush_session_states(registry_id)
activate Registry
Note over Registry: dict._states.clear()
Registry->>GC: gc.collect() -> Принудительный сбор мусора
activate GC
GC-->>Registry: Куча очищена, память освобождена
deactivate GC
Registry-->>Core: Return True (Статус: Успешно)
deactivate Registry
Метод flush_session_states()
In-Memory Twin Registry: Полная очистка оперативной памяти и завершение сессии
1. Функциональное назначение
Метод flush_session_states относится к завершающему административному контуру симулятора (Фаза остановки сессии). Он предназначен для гарантированного освобождения ресурсов хост-машины посредством полной очистки выделенных областей оперативной памяти (RAM Purge). Метод уничтожает текущую In-Memory карту когнитивных и метаболических состояний, полностью предотвращая утечки памяти (Memory Leaks) при последовательном запуске множества длительных симуляционных сессий.
2. Логика очистки ресурсов и управления кучей (Garbage Collection)
Поскольку симулятор оперирует миллионными массивами транзакций в RAM без сброса на диск, к моменту остановки сессии куча (Heap) содержит значительный объем аллоцированных объектов TwinStateVector.
Метод flush_session_states выполняет принудительную атомарную очистку хэш-таблицы:
\[\mathbf{States}_{\text{RAM}} \leftarrow \emptyset\]
После вызова встроенного метода очистки словаря, симулятор явно инициирует системный сборщик мусора Python (gc.collect()), гарантируя немедленный возврат физической памяти в операционную систему хост-машины.
3. Спецификация метода (ИТ-контракт)
- Тип вызова: Синхронный, завершающий, блокирующий (вызывается один раз при деструкции сессии).
- Исполнитель:
In-Memory Twin Registry Service.
3.1. Входные параметры (Аргументы вызова)
| Параметр | Тип данных | Обязательный | Описание |
|---|---|---|---|
registry_id |
UUIDv4 | Да | Уникальный токен текущей сессии симуляции для верификации контура очистки. |
3.2. Выходные данные (Возвращаемое значение)
bool— статус успешности деаллокации памяти (True— RAM полностью очищена,False— ошибка деструктора).
4. Схема деаллокации оперативной памяти (Mermaid)
5. Программная реализация метода на Python
import gc
from uuid import UUID
class RegistrySessionFlusher:
def __init__(self, states_storage: dict):
# Работаем по ссылке с центральным In-Memory словарем
self._states = states_storage
def flush_session_states(self, registry_id: UUID) -> bool:
"""
Полностью очищает оперативную память от векторов состояний
и принудительно вызывает сборщик мусора.
"""
try:
print(f"[Memory Management] Старт очистки RAM для сессии {registry_id}...")
# 1. Атомарное удаление всех ссылок на объекты в словаре
self._states.clear()
# 2. Принудительный запуск сборщика мусора для освобождения кучи
# Это немедленно возвращает память хост-машине
gc.collect()
print(f"[Memory Management] RAM успешно очищена. Сессия {registry_id} закрыта.")
return True
except Exception as e:
print(f"[Memory Error] Ошибка деаллокации памяти для сессии {registry_id}: {str(e)}")
return False