1

我了解堆外存储有助于避免长时间的 GC 暂停,但我想知道 java 在堆上存储时如何序列化对象以及在堆外存储时如何 ignite 序列化?就像运行 GC 以释放空间一样,关闭时会发生什么-heap 用于释放空间,与 GC 相比如何?堆外票价如何对抗堆存储?

我们正在尝试一个 POC 来评估 ignite 和 hazelcast,ignite 提供堆外存储,所以想了解它的细节来得出结论。

4

1 回答 1

2

Java 不会序列化存储在堆上的数据。序列化的整个想法是将对象从堆中取出到其他介质,例如堆外。所以它只是存储。

Ignite 使用 Binary Objects、Externalizable 和 Binaryizable 接口实现快速序列化。

Ignite 不需要 GC 其堆外,因为它显式地跟踪所有键值对。当某些东西被删除时,内存可以立即使用(只有图形系统真正需要 GC,而不是键值和 SQL)。

但是,对于最近引入的带有真空过程的事务 SQL,情况可能会有所不同。

于 2019-01-28T06:50:32.053 回答