JVM雙親委派機制的優點:
提高了類加載的安全性:雙親委派機制可以確保類的加載是從上往下進行的,首先加載的是最頂層的類,然后逐級向下加載。這樣可以防止惡意的類替換或者篡改已經存在的類。
提高了類加載的效率:通過雙親委派機制,避免了重復加載已經存在的類。當一個類被加載后,它就會保存在內存中,下次再加載該類時,就直接從內存中獲取,避免了重復加載的時間和空間消耗。
簡化了類加載器的實現:雙親委派機制將不同類加載器的職責劃分明確,每個類加載器只需要關注自己的加載范圍,不需要關注其他類加載器的加載過程,簡化了類加載器的實現和維護。
JVM雙親委派機制的缺點:
限制了類加載器的靈活性:雙親委派機制規定了類加載器必須按照從上到下的順序進行加載,這樣就限制了類加載器的靈活性。有時候,我們可能需要自定義的類加載器加載一些特殊的類,但是由于雙親委派機制的限制,可能無法實現。
無法實現對類的自定義修改:雙親委派機制會優先加載系統內部的類,如果我們想對某個類進行修改或者增強,往往無法實現。因為在加載該類時,會直接從系統內部加載,而不會加載我們修改后的類。
可能導致類加載器內存泄漏:雙親委派機制中,每個類加載器都有一個父類加載器,當父類加載器無法加載某個類時,才會由子類加載器加載。這樣會導致父類加載器無法回收,可能導致類加載器內存泄漏的問題。