我在github项目prevayler-clj上打开了这个问题

https://github.com/klauswuestefeld/prevayler-clj/issues/1

因为1M短向量(如[:a1 1])形成了prevayler的状态,所以使用Java writeObject逐一序列化时会导致文件大小为1GB。

可能吗?每个PersistentVector大约1kB?进一步的研究表明,相同数量的向量可以在80MB的文件中序列化。那么,prevayler序列化出了什么问题?我在这些测试中做错了吗?请参阅github问题以获取我的测试代码摘录。

最佳答案

Prevayler显然为每个序列化的元素开始一个新的ObjectOutputStream,从而防止了它们之间类数据的任何重用。另一方面,您的测试代码是以“自然”的方式编写的,允许重复使用。尚不清楚每次迫使Prevayler重新启动的原因,但鉴于它具有负面影响,我犹豫称其为“功能”。 “解决方法”是更可能的名称。

09-26 03:01