- 概览
- Total process Memory
- Detail & Config
- JVM params
Since 1.10 TM 做了重大更新。
Since 1.11 JM 内存模型做了重大更新。
本文主要讲解 TM 内存模型。
官网链接 https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/memory/mem_setup_tm/
先理解一下官网的这张图 total process memory(tpm) = total flink memory(tfm) + jvm memory tfm = JVM heap + Off-Heap Momory Off-Heap Momory = Managed Memory + Driect Memory
配置 Flink 进程内存最简单的方法是指定以下两个配置项中的任意一个:
配置参数: |-----------------------------------------------------------------------------------| |配置项 |TaskManager 配置参数 |JobManager 配置参数 | |Flink 总内存 |taskmanager.memory.flink.size |jobmanager.memory.flink.size | |进程总内存 |taskmanager.memory.process.size |jobmanager.memory.process.size | |-----------------------------------------------------------------------------------|Detail & Config
//TODOJVM params
| JVM 参数 | TaskManager 取值 | JobManager 取值 |
|---|---|---|
| -Xmx 和 -Xms | 框架堆内存 + 任务堆内存 | JVM 堆内存 (*) |
| -XX:MaxDirectMemorySize(TaskManager 始终设置,JobManager 见注释) | 框架堆外内存 + 任务堆外内存(**) + 网络内存 | 堆外内存 (**) (**) |
| -XX:MaxmetaspaceSize | JVM metaspace | JVM metaspace |
| (*) 请记住,根据所使用的 GC 算法,你可能无法使用到全部堆内存。一些 GC 算法会为它们自身分配一定量的堆内存。这会导致堆的指标返回一个不同的最大值。 | ||
| (**) 请注意,堆外内存也包括了用户代码使用的本地内存(非直接内存)。 | ||
| (***) 只有在 jobmanager.memory.enable-jvm-direct-memory-limit 设置为 true 时,JobManager 才会设置 JVM 直接内存限制。 |



