![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/7fcb8161d7f1e06b92ed90492750abd6.png)
1. 为什么要进行JVM调优?为什么要进行垃圾回收?
Spark是由Scala写的,而Java和Scala都是运行在JVM上的。而一个executor就是一个JVM进程。
我们会把executor分成两份,老年代和新生代,比例可能会不一样。新生代会分成三份。
Spark作业开始运行,会不断的产生对象,对象会首先进入Eden区,然后如果Eden区存储满了,对象就会进入survivor1区,如果Eden和survivor1区都满了,就会发生minor GC,h会在新生代里面发生垃圾回收,,把不需要的对象回收。假设4,7,8都是无用的对象会被清除,而5,6是没被GC掉的,就会被放到9中。如果左边都不够用了,就会把survivor中的放入老年代里。如果一个对象,在新生代,多次minor GC 还是没有被回收,那么说明这个对象是长时间存活的对象,那么就会把这些对象移动到老年代里。如果一直这么移动,如果老年代也存不下对象,那么就会发生full GC,full G