在 Spark 中,作业完成后内存中还剩下什么?

In Spark, what is left in the memory after a Job is done?

我用 ./bin/spark-shell 到 运行 做了一些实验,发现了以下事实。当 运行ning 作业(转换 + 操作)时,我注意到 top 中的内存使用情况。例如,对于 5G 文本文件,我做了一个简单的 filter() 和 count()。作业完成后,在topwindow中有7g标记为res。我有100g内存,设置executor内存为50g。

有谁知道7g是什么?

由于 Spark 在 JVM 上运行,仅仅因为 Spark 可能不再有对某些内存的任何引用并不意味着该内存将被释放。即使触发了垃圾收集,JVM 也可能不会将内存释放回 OS(这由 -XX:MaxHeapFreeRatio 等控制)。