JVM双亲委派机制的优点:
提高了类加载的安全性:双亲委派机制可以确保类的加载是从上往下进行的,首先加载的是最顶层的类,然后逐级向下加载。这样可以防止恶意的类替换或者篡改已经存在的类。
提高了类加载的效率:通过双亲委派机制,避免了重复加载已经存在的类。当一个类被加载后,它就会保存在内存中,下次再加载该类时,就直接从内存中获取,避免了重复加载的时间和空间消耗。
简化了类加载器的实现:双亲委派机制将不同类加载器的职责划分明确,每个类加载器只需要关注自己的加载范围,不需要关注其他类加载器的加载过程,简化了类加载器的实现和维护。
JVM双亲委派机制的缺点:
限制了类加载器的灵活性:双亲委派机制规定了类加载器必须按照从上到下的顺序进行加载,这样就限制了类加载器的灵活性。有时候,我们可能需要自定义的类加载器加载一些特殊的类,但是由于双亲委派机制的限制,可能无法实现。
无法实现对类的自定义修改:双亲委派机制会优先加载系统内部的类,如果我们想对某个类进行修改或者增强,往往无法实现。因为在加载该类时,会直接从系统内部加载,而不会加载我们修改后的类。
可能导致类加载器内存泄漏:双亲委派机制中,每个类加载器都有一个父类加载器,当父类加载器无法加载某个类时,才会由子类加载器加载。这样会导致父类加载器无法回收,可能导致类加载器内存泄漏的问题。