感谢解答
在 2022-09-22 15:00:48,"Shammon FY" <zjur...@gmail.com> 写道: >Hi @haishui > >这里提到的Managed Memory用于排序、哈希表等,一般是在flink批式作业里用到,例如HashJoin。 >流式计算的join算子,使用statebackend存储状态,例如rocksdb。批式计算的join算子跟流式的join算子处理不同,例如批式的HashJoinOperator算子,会创建BinaryHashTable进行分桶并建立hash表,BinaryHashTable会从Managed >Memory申请和释放内存 > > >On Thu, Sep 22, 2022 at 2:42 PM haishui <haishui...@126.com> wrote: > >> >> 官方文档的Configration对于taskmanager.memory.managed.size的介绍说托管内存用于排序、哈希表、缓存中间结果和RocksDB状态后端。 >> 在MemoryConfigration的Memory Tuning Guide中介绍HashMap状态后端时说 >> 如果Job是无状态或使用HashMap状态后端时可以设置托管内存为0。 >> >> 我的Flink作业使用的HashMap状态后端,在WebUI上确实显示托管内存一直为0,将托管内存设置为0确实可行,我的疑问是托管内存何时用于排序、哈希表、缓存中间结果,我现在只遇到在使用RocksDB状态后端和Session模式下上传Jar时如果设置为0时会报错