当前位置:   article > 正文

flink内存管理_flink jvm堆内存 分三块

flink jvm堆内存 分三块

概述

flink积极的内存管理体现在:

  • 定义MemorySegment——不直接使用JVM的byte,而是将jvm的堆内内存&堆外内存统一用MemorySegment管理,这样的好处在于:1、可以使用堆外内存;2、将jvm堆内存分成固定大小的page后,可以配合序列化和类型信息系统(type infomation system)在二进制基础上快速操作(而不是先反序列化为对象然后再操作)
  • 在JVM 内存结构规划上,Flink 也作了相应的调整:将JVM堆分为三个区域,并且将MemoryManager 和 Network Buffers 两个实现了显式内存管理的子系统分配到老年代,而留给用户代码的 Free 区域分配到新生代。显而易见,因为所有常驻型数据都以二进制的形式存在 Flink 的MemoryManager中,这些MemorySegment一直呆在老年代而不会被GC回收。其他的数据对象基本上是由用户代码生成的短生命周期对象,这部分对象可以被 Minor GC 快速回收。只要用户不去创建大量类似缓存的常驻型对象,那么老年代的大小是不会变的,Major GC也就永远不会发生。从而有效地降低了垃圾回收的压力。另外,这里的内存块还可以是堆外内存,这可以使得 JVM 内存更小,从而加速垃圾回收。

细节

Taskmanager将JVM堆分为三个区域:
  • 网络缓冲区(network buffer):网络堆栈使用若干32 KB的buffer来缓冲网络传输的记录。 在TaskManager启动时分配。 默认情况下,使用2048个缓冲区(64M),但可以通过taskmanage
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/997464
推荐阅读
相关标签
  

闽ICP备14008679号