Я открыл этот вопрос на GitHub проекта Prevayler-CLJРазмер Java сериализовать структуры данных Clojure
https://github.com/klauswuestefeld/prevayler-clj/issues/1
потому 1M короткие векторы, как этот [:a1 1]
, образуя состояние Prevayler, приводит к размеру файла 1 Гб при последовательном сериализации, один за другим, с Java writeObject.
Возможно ли это? Около 1 кБ для каждого PersistentVector? Дальнейшие исследования показали, что такое же количество векторов можно сериализовать в файле размером 80 МБ. Итак, что происходит неправильно в сериализации превалитера? Я делаю что-то неправильно в этих тестах. Пожалуйста, обратитесь к проблеме github для моих отрывков кода теста.
Да. Речь идет о размерах Java-сериализованных структур данных Clojure. Может ли вектор с двумя элементами быть размером 1 КБ? Почему сериализация в моем эксперименте REPL (см. Код, следующий за соответствующей ссылкой) создает буфер размером 80 Мбайт, тогда как журналы предварительного просмотра составляют 1 ГБ? – icamts
Моя гипотеза. Является ли переопределяющим определение класса prevayler каждый раз? Если это так, почему это происходит? Мое понимание кодекса prevayler предполагает, что он должен иметь такое же поведение в моем экспериментальном коде. – icamts
Я вижу сейчас. Он тщательно изучил контент из внешнего ресурса (у SO есть разные стандарты, чем вы можете использовать). Таким образом, preayler может конкатенировать выходные данные независимых объектов ObjectOutputStream. Я вижу, как это может возникнуть в архитектуре FP-esque. –