149. Introducing Arena and MemorySegment
A MemorySegment
shapes a heap or native memory segment. A heap segment accesses on-heap memory, while a native segment accesses off-heap memory. In both cases, we talk about a contiguous region of memory that has a lifespan bounded by space and time.
Among its characteristics, a memory segment has a size in bytes, an alignment of bytes, and a scope. The scope is shaped via the java.lang.foreign.MemorySegment.Scope
sealed interface and represents the lifespan of the memory segment. A native memory segment lifespan is controlled by a java.lang.foreign.Arena
instance. An Arena
has a scope that can be:
The arena global scope (or global arena): The memory segments with the arena global scope are always accessible. In other words, the regions of memory allocated to these segments are never deallocated and their global scope remains alive forever.
Attempting to close (close()
) this scope will result in UnsupportedOperationException
. Here...