Hi tao, As a whole, `networkBufBytes` is not part of the heap. In fact, it is allocated from the direct memory. The rough relationship (ignores min/max and assumes managed memory is allocated on heap) between the variables are: Total memory of TM (configured by taskmanager.heap.mb, the name may be a little misleading) = heap memory (-XmX) + networkBufBytes. networkBufBytes = Total memory of TM * networkBufFraction.
Therefore, the networkBufBytes = xmx / (1 - networkBufFraction) * networkBufFraction. Best, Yun ------------------------------------------------------------------ From:徐涛 <happydexu...@gmail.com> Send Time:2019 Jun. 13 (Thu.) 10:23 To:user <user@flink.apache.org> Subject:Source code question - about the logic of calculating network buffer Hi Experts, I am debugging the WordCount Flink streaming program in local mode. Flink version is 1.7.2 I saw the following calculation logic about network buffer in class TaskManagerServices. jvmHeapNoNet is equal to -xmx amount in Java. why the networkBufBytes = xmx / (1-networkBufFraction) * networkBufFraction, it is a bit strange. why it is not calculated by xmx * networkBufFraction? final long networkBufBytes = Math.min(networkBufMax, Math.max(networkBufMin, (long) (jvmHeapNoNet / (1.0 - networkBufFraction) * networkBufFraction))); Best Henry