[Apache Ignite如何进行内存分配以避免内存碎片,特别是我正在尝试将Ignite的方法与Redis的(jemalloc)方法进行比较。
Apache Ignite使用Durable Memory而不是堆分配。这意味着在malloc的意义上没有碎片问题。它将内存分成4k页,并将存储的数据写入页,然后根据需要对其进行回收。
即使没有,Ignite也会使用Java,因为Java具有重定位GC的位置,因此不易受到内存碎片的影响-它始终可以压缩其堆。但这也可能导致GC暂停,我们通过拥有持久内存来避免这种情况。
页面存储器本身可能会碎片化,因此我们有fillFactor
指标来对此进行跟踪。