官网简易图
Flink Memory
官网详细图
Task和Framwork各有Heap和Off-Heap。上图中8块内存都有参数可以调节。
Flink 1.10版本没有对Task和Framework之间进行隔离,只是为了后续升级做准备才提前分割出这些概念,方便用户后续升级。
Task、网络、Managed三块需要关注调整。
Direct Memory
Direct Memory是使用Java中allocateDirect()方法直接开辟的一块内存,不受GC管理,自己控制。
堆外内存
堆外内存一共就四块。除了Task、Framework的两块外,就是针对网络和针对RocksDB的两块。
Network Memory
一共就以下3个参数
- taskmanager.memory.network.fraction
- taskmanager.memory.network.max
taskmanager.memory.network.min
Managed Memory
Managed主要是对应RocksDB。如果不用RocksDB StateBackend可以设置成0。
可以通过如下两个选项调节。taskmanager.memory.managed.size
- taskmanager.memory.managed.fraction
- state.backend.rocksdb.memory.managed:默认是true,会保证RocksDB内存不会超过Managed Memory大小。