Проект Cross-Cleaner оптимизирует потребление оперативной памяти за счет перехода от полной загрузки JSON-базы к потоковой обработке. Ранее использование serde_json::from_reader приводило к пиковым нагрузкам на память, так как временные строковые данные в структуре Helper создавались для всех записей одновременно.
Разработчики внедрили итератор iter_json_array, который обрабатывает элементы JSON-массива по отдельности. Обёртка управляет разделителями массива и использует StreamDeserializer, предотвращая накопление внутренних буферов между записями. Использование BufReader обязательно для исключения лишних системных вызовов при чтении.
Такой подход позволяет работать с базами данных, объем которых превышает доступный объем RAM, если не требуется глобальная сортировка или агрегация. Пиковое потребление памяти теперь ограничивается размером одной записи. Существующие механизмы интернирования строк и использования Arc остаются актуальными и не требуют переработки.
Метод применим к компонентам CleanerIndex и RegistryIndex, которые уже поддерживают эффективную десериализацию. Для баз данных, представленных в виде массивов, потоковая обработка обеспечивает масштабируемость без необходимости изменения логики Deserialize, что позволяет эффективно управлять ресурсами системы.






