Apache Ignite 与 Redis (jemalloc) 的内存分配?

Memory Allocation of Apache Ignite vs Redis (jemalloc)?

Apache Ignite 如何进行内存分配以避免内存碎片,具体来说,我正在尝试将 Ignite 的方法与 Redis (jemalloc) 的方法进行比较。

Apache Ignite 使用 Durable Memory 而不是堆分配。这意味着在 malloc 意义上不存在碎片问题。它将内存拆分为 4k 页并将存储的数据写入页,根据需要回收它们。

即使没有,Ignite 使用 Java,它具有重定位 GC,因此不易受到内存碎片的影响 - 它始终可以压缩其堆。但它也可能导致 GC 暂停,我们通过使用持久内存来避免这种情况。

页面内存本身可能会碎片化,因此我们有 fillFactor 指标来跟踪这一点。