Spark-JVM调优
Spark发生垃圾回收的原理
Spark任务运行时会在executor里面不断的创建对象,当JVM存不下对象时,会触发JVM的垃圾回收(GC => grabage Collector),垃圾回收就是把不需要的对象给清除。
如果内存中数据量比较大,那么可能会频繁的发生GC,而GC操作本身比较耗费性能,如果还频繁发生,那么对Spark作业性能造成很大的影响。此外,如果数据量很大,那么GC一次涉及到的数据量也很大,同样导致GC速度比较慢。而且,GC本身是一条线程,Spark作业运行时那些叫工作线程,GC运行时,会让工作线程停止,让GC线程单独运行,这样会直接影响Spark作业的性能。
垃圾回收原理图
注:
JVM将Heap内存划分为新生代与老生代,又将新生代划分为Eden(伊甸园)、2块Survivor Space(存活区)
但是JVM在应用复制算法时,并不是按照1:1