我使用./bin/spark-shell进行一些实验并找出以下事实。运行作业(转换+操作)时,我注意到顶部中的内存使用情况。例如,对于5G文本文件,我做了一个简单的filter()和count()。作业完成后, top 窗口中有7g标记为res。我有100g内存并将执行程序内存设置为50g。
有谁知道7g是什么?
答案 0 :(得分:2)
由于Spark在JVM上运行,因为Spark可能不再对某些内存有任何引用并不意味着将释放该内存。即使已经触发了垃圾收集,JVM也可能不会将内存释放回操作系统(这由-XX:MaxHeapFreeRatio
控制)。