从spark1.6开始,引入了新的内存管理方式-----统一内存管理(UnifiedMemoryManager)。
在统一内存管理下,spark一个executor中的jvm heap内存被划分成如下图:
在开始介绍图中各个部分之前,我们先明确一个概念(我还是以我熟悉spark on yarn来介绍),我们在为Executor申请内存的时候,实际是JVM 的堆(heap)内存。非堆内存(off-heap)是通过
spark.yarn.executor.memoryOverhead :值为 executorMemory * 0.1, with minimum of 384