为什么 MappedByteBuffer 不能扩展?

Why Can't a MappedByteBuffer Expand?

关于Expanding Java Memory-Mapped Byte Buffer,为什么缓冲区在写入超过限制时不扩展?显然,如果不重新映射缓冲区,甚至没有一种方法可以实现该行为。这对我来说也似乎有些奇怪,因为我想一些开发人员想要它,或者这只是以错误的方式使用缓冲区?

A MappedByteBuffer 是一个 ByteBuffer 是一个 Buffer,它具有在创建时定义的固定容量。所以 Buffer 的语义阻止了它。

正如@SotiriosDelimanolis 和@fge 所提到的,操作系统语义也阻止了它。内存映射以固定大小创建,如果您在本机级别寻址超过该大小,您将获得 SIGSEGV.