Ehcache 讨论了堆上和堆外内存。有什么区别?哪些JVM arg用于配置它们?
堆上存储是指将在Java堆中存在的对象(也受GC约束)。另一方面,堆外存储是指(序列化的)对象,这些对象由EHCache管理,但存储在堆外部(并且不受GC限制)。随着堆外存储继续在内存中进行管理,它比堆上存储稍慢,但仍比磁盘存储快。
问题中发布的链接中并没有非常清楚地涉及到管理和使用堆外存储的内部细节,因此明智的方法是查看用于管理磁盘外的Terracotta BigMemory的细节。商店。BigMemory(堆外存储)用于避免GC在数兆字节或千兆字节的堆上的开销。BigMemory通过直接的ByteBuffer使用JVM进程的内存地址空间,与其他本机Java对象不同,这些直接ByteBuffer不受GC影响。