Ehcache讨论了堆内和堆外内存。有什么区别?使用哪些 JVM 参数来配置它们?
堆上存储是指将出现在 Java 堆中的对象(并且也受 GC)。另一方面,堆外存储是指由 EHCache 管理的(序列化)对象,但存储在堆外(也不受 GC 影响)。由于堆外存储继续在内存中进行管理,它比堆上存储稍慢,但仍比磁盘存储快。
问题中发布的链接中涉及管理和使用非堆存储的内部细节不是很明显,因此最好查看用于管理非磁盘的Terracotta BigMemory的详细信息店铺。BigMemory(堆外存储)用于避免 GC 在几兆字节或千兆字节大的堆上的开销。BigMemory 使用 JVM 进程的内存地址空间,通过与其他原生 Java 对象不同的是不受 GC 影响的直接 ByteBuffers 。