按照官网的说明:
- spark.executor.memory 默认值:1g
- spark.memory.fraction 默认值:0.6
- spark.memory.storageFraction 默认值:0.5
storageMemory = 1g * 0.6 * 0.5 = 217m, 但是 sparkUI 上显示的是 2GiB. 
网上有些文档记录了这个情况,理解可能原因有以下几个:
- jvm 可用的最大内存比 spark.executor.memory 小,这项排除,程序中 jvm 可用内存是 3g+。
- sparkUI 页面的单位换算有 bug,字节换算到 GB 的时候用的是 1000 而不是 1024 ,这项排除,我的 spark 版本是 3.0.0, 这个问题已经被修复: https://issues.apache.org/jira/browse/SPARK-25696 。
- 堆外内存被开启使用:spark.memory.offHeap.enabled=true,这项排除,因为默认情况下是关闭的,我没有在 sparkSession 中开启。
