我很困惑为什么 Spark 只使用 Java 堆的一小部分?为什么不直接保持 100% 或将其
spark.memory.fraction
设置为 1.0.
保留 0.4(默认)有什么意义?为什么不利用这些内存?
这是 Spark 使用的还是 JVM 使用的?
来自文档,
spark.memory.fraction 将 M 的大小表示为(JVM 堆空间 - 300MiB)(默认 0.6)的一部分。其余空间 (40%) 保留用于用户数据结构、Spark 中的内部元数据,以及在稀疏和异常大的记录的情况下防止 OOM 错误。