flink中的类加载器ClassLoader

在flink中的taskManager中的ClassLoader并不是使用的双亲委派机制

类加载器从子到父为

org.apache.flink.util.ChildFirstClassLoader@72031a7e
jdk.internal.loader.ClassLoaders$AppClassLoader@4b85612c
jdk.internal.loader.ClassLoaders$PlatformClassLoader@80f4325

再往上PlatformClassLoader的paretn ClassLoader就是null了,应该就到bootstrap classloader

AppClassLoader和PlatformClassLoader同一个taskManager中是不会变的,而每个slot的ChildFirstClassLoader会变

 

个人认为应该是双亲委派不能够满足flink的需求才换成ChildFirstClassLoader

因为在同一个jvm中如果使用双亲委派就做不到在不同的slot中执行任务,不然不同任务之间会互相影响,因为可能会存在全限定名一样的类。而每个slot使用不同的classloader则能够将不同任务使用的jar分开加载

Guess you like

Origin blog.csdn.net/songduo22/article/details/108469440