欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android類加載ClassLoader雙親委托機制詳解

 更新時間:2023年07月07日 11:18:14   作者:載漁之洲  
這篇文章主要為大家介紹了Android類加載ClassLoader雙親委托機制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、ClassLoader類圖關(guān)系

ClassLoader、BootClassLoader、BaseDexClassLoader等之間關(guān)系,如下如:

二、雙親委托機制

1、定義

如果某個類加載器在加載類時,先不會自己去嘗試加載這個類,而是首將加載任務(wù)委托給父類加載器,依次遞歸,如果父類加載器可以完成類加載任務(wù),就成功返回;只有父類加載器無法完成此加載任務(wù)或者沒有父類加載器時,才會交給自己嘗試加載。

如:可以看到創(chuàng)建 ClassLoader 需要接收一個 ClassLoader parent 參數(shù)。這個 parent 的目的就在于實現(xiàn)類加載的雙親委托

protected Class<?> loadClass(String name, boolean resolve)
        throws ClassNotFoundException
    {
            // First, check if the class has already been loaded
            // 檢查class是否有被加載
            Class<?> c = findLoadedClass(name);
            if (c == null) {
                try {
                    if (parent != null) {
                        //如果parent不為null,則調(diào)用parent的loadClass進行加載
                        c = parent.loadClass(name, false);
                    } else {
                        //parent為null,則調(diào)用BootClassLoader進行加載
                        c = findBootstrapClassOrNull(name);
                    }
                } catch (ClassNotFoundException e) {
                    // ClassNotFoundException thrown if class not found
                    // from the non-null parent class loader
                }
                if (c == null) {
                    // If still not found, then invoke findClass in order
                    // to find the class. 
                    // 如果都找不到就自己查找
                    c = findClass(name);
                }
            }
            return c;
    }

2、雙親作用

1)、避免重復(fù)加載,當(dāng)父加載器已經(jīng)加載了該類的時候,就沒有必要子ClassLoader再加載一次。

2)、安全性考慮,防止核心API庫被隨意篡改。

以上就是Android類加載ClassLoader的詳細(xì)內(nèi)容,更多關(guān)于Android類加載ClassLoader的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論