Flink 将本来直接存储在堆内存上的数据对象,通过数据序列化处理,存储在预先分配的内存块 MemorySegment,MemorySegment 是 Flink 的最小内存分配单元。默认一个 MemorySegment 对应着一个 32KB 大小的内存块,这块内存既可以是堆内存,也可以是堆外内存,如果 MemorySegment 底层使用的是 JVM 堆内存,数据通常存储至 Java 字节数组 byte[] 中, 如果 MemorySegment 底层使用的是堆外内存,数据会以序列化的形式存储在一个或多个 MemorySegment 中。MemorySegment 将 JVM 堆内存和堆外内存进行集中管理,形成统一的内存访问视图。MemorySegment 提供了高效的内存读写方法。