1. 圣石小子粤语,别样幸福全集,箭在弦上大结局,我想打死你,星光灿烂猪八戒,菲律宾美人鱼50集国语,神探夏洛克 第四季,市委书记晚上不打招呼调研被拦

      Java ClassLoader原理深入講解

      時間:2024-10-19 00:14:48 JAVA認證

      Java ClassLoader原理深入講解

        JAVA啟動后,是經(jīng)過JVM各級ClassLoader來加載各個類到內存。為了更加了解加載過程,下面為大家深入講解Java ClassLoader原理,僅供參考!

        當JVM(Java虛擬機)啟動時,會形成由三個類加載器組成的初始類加載器層次結構:

        bootstrap classloader

        |

        extension classloader

        |

        system classloader

        bootstrap classloader -引導(也稱為原始)類加載器,它負責加載Java的核心類。在Sun的JVM中,在執(zhí)行java的命令中使用-Xbootclasspath選項或使用 - D選項指定sun.boot.class.path系統(tǒng)屬性值可以指定附加的類。這個加載器的是非常特殊的,它實際上不是 java.lang.ClassLoader的子類,而是由JVM自身實現(xiàn)的。大家可以通過執(zhí)行以下代碼來獲得bootstrap classloader加載了那些核心類庫:

        URL[] urls=sun.misc.Launcher.getBootstrapClassPath().getURLs();

        for (int i = 0; i < urls.length; i++) {

        System.out.println(urls.toExternalform());

        }

        在我的計算機上的結果為:

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/dom.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/sax.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xalan-2.3.1.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xercesImpl-2.0.0.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xml-apis.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/endorsed/xsltc.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/rt.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/i18n.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/sunrsasign.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/jsse.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/jce.jar

        文件:/C:/j2sdk1.4.1_01/jre/lib/charsets.jar

        文件:/C:/j2sdk1.4.1_01/jre/classes

        這時大家知道了為什么我們不需要在系統(tǒng)屬性CLASSPATH中指定這些類庫了吧,因為JVM在啟動的時候就自動加載它們了。

        extension classloader -擴展類加載器,它負責加載JRE的擴展目錄(JAVA_HOME/jre/lib/ext或者由java.ext.dirs系統(tǒng)屬性指定的)中JAR的 類包。這為引入除Java核心類以外的新功能提供了一個標準機制。因為默認的擴展目錄對所有從同一個JRE中啟動的JVM都是通用的,所以放入這個目錄的 JAR類包對所有的JVM和system classloader都是可見的。在這個實例上調用方法getParent()總是返回空值null,因為引導加載器bootstrap classloader不是一個真正的ClassLoader實例。所以當大家執(zhí)行以下代碼時:

        System.out.println(System.getProperty("java.ext.dirs"));

        ClassLoader extensionClassloader=ClassLoader.getSystemClassLoader().getParent();

        System.out.println("the parent of extension classloader : "+extensionClassloader.getParent());

        結果為:

        C:/j2sdk1.4.1_01/jre/lib/ext

        the parent of extension classloader : null

        extension classloader是system classloader的parent,而bootstrap classloader是extension classloader的parent,但它不是一個實際的classloader,所以為null。

        system classloader -系統(tǒng)(也稱為應用)類加載器,它負責在JVM被啟動時,加載來自在命令java中的-classpath或者java.class.path系統(tǒng)屬性或 者 CLASSPATH操作系統(tǒng)屬性所指定的JAR類包和類路徑。總能通過靜態(tài)方法ClassLoader.getSystemClassLoader()找 到該類加載器。如果沒有特別指定,則用戶自定義的任何類加載器都將該類加載器作為它的父加載器。執(zhí)行以下代碼即可獲得:

        System.out.println(System.getProperty("java.class.path"));

        輸出結果則為用戶在系統(tǒng)屬性里面設置的CLASSPATH。

        classloader 加載類用的是全盤負責委托機制。所謂全盤負責,即是當一個classloader加載一個Class的時候,這個Class所依賴的和引用的所有 Class也由這個classloader負責載入,除非是顯式的使用另外一個classloader載入;委托機制則是先讓parent(父)類加載器 (而不是super,它與parent classloader類不是繼承關系)尋找,只有在parent找不到的時候才從自己的類路徑中去尋找。此外類加載還采用了cache機制,也就是如果 cache中保存了這個Class就直接返回它,如果沒有才從文件中讀取和轉換成Class,并存入cache,這就是為什么我們修改了Class但是必 須重新啟動JVM才能生效的原因。

        每個ClassLoader加載Class的過程是:

        1.檢測此Class是否載入過(即在cache中是否有此Class),如果有到8,如果沒有到2

        2.如果parent classloader不存在(沒有parent,那parent一定是bootstrap classloader了),到4

        3.請求parent classloader載入,如果成功到8,不成功到5

        4.請求jvm從bootstrap classloader中載入,如果成功到8

        5.尋找Class文件(從與此classloader相關的類路徑中尋找)。如果找不到則到7.

        6.從文件中載入Class,到8.

        7.拋出ClassNotFoundException.

        8.返回Class.

        其中5.6步我們可以通過覆蓋ClassLoader的findClass方法來實現(xiàn)自己的載入策略。甚至覆蓋loadClass方法來實現(xiàn)自己的載入過程。

        類加載器的順序是:

        先 是bootstrap classloader,然后是extension classloader,最后才是system classloader。大家會發(fā)現(xiàn)加載的Class越是重要的越在靠前面。這樣做的原因是出于安全性的考慮,試想如果system classloader“親自”加載了一個具有破壞性的“java.lang.System”類的后果吧。這種委托機制保證了用戶即使具有一個這樣的類, 也把它加入到了類路徑中,但是它永遠不會被載入,因為這個類總是由bootstrap classloader來加載的。大家可以執(zhí)行一下以下的代碼:

        System.out.println(System.class.getClassLoader());

        將會看到結果是null,這就表明java.lang.System是由bootstrap classloader加載的,因為bootstrap classloader不是一個真正的ClassLoader實例,而是由JVM實現(xiàn)的,正如前面已經(jīng)說過的。

        下面就讓我們來看看JVM是如何來為我們來建立類加載器的結構的:

        sun.misc.Launcher,顧名思義,當你執(zhí)行java命令的時候,JVM會先使用bootstrap classloader載入并初始化一個Launcher,執(zhí)行下來代碼:

        System.out.println("the Launcher's classloader is "+sun.misc.Launcher.getLauncher().getClass().getClassLoader());

        結果為:

        the Launcher's classloader is null (因為是用bootstrap classloader加載,所以class loader為null)

        Launcher 會根據(jù)系統(tǒng)和命令設定初始化好class loader結構,JVM就用它來獲得extension classloader和system classloader,并載入所有的需要載入的Class,最后執(zhí)行java命令指定的帶有靜態(tài)的main方法的Class。extension classloader實際上是sun.misc.Launcher$ExtClassLoader類的一個實例,system classloader實際上是sun.misc.Launcher$AppClassLoader類的一個實例。并且都是 java.net.URLClassLoader的子類。

        讓我們來看看Launcher初試化的過程的部分代碼。

        Launcher的部分代碼:

        public class Launcher {

        public Launcher() {

        ExtClassLoader extclassloader;

        try {

        //初始化extension classloader

        extclassloader = ExtClassLoader.getExtClassLoader();

        } catch(IOException ioexception) {

        throw new InternalError("Could not create extension class loader");

        }

        try {

        //初始化system classloader,parent是extension classloader

        loader = AppClassLoader.getAppClassLoader(extclassloader);

        } catch(IOException ioexception1) {

        throw new InternalError("Could not create application class loader");

        }

        //將system classloader設置成當前線程的context classloader(將在后面加以介紹)

        Thread.currentThread().setContextClassLoader(loader);

        ......

        }

        public ClassLoader getClassLoader() {

        //返回system classloader

        return loader;

        }

        }

        extension classloader的部分代碼:

        static class Launcher$ExtClassLoader extends URLClassLoader {

        public static Launcher$ExtClassLoader getExtClassLoader()

        throws IOException

        {

        File afile[] = getExtDirs();

        return (Launcher$ExtClassLoader)AccessController.doPrivileged(new Launcher$1(afile));

        }

        private static File[] getExtDirs() {

        //獲得系統(tǒng)屬性“java.ext.dirs”

        String s = System.getProperty("java.ext.dirs");

        File afile[];

        if(s != null) {

        StringTokenizer stringtokenizer = new StringTokenizer(s, File.pathSeparator);

        int i = stringtokenizer.countTokens();

        afile = new File;

        for(int j = 0; j < i; j++)

        afile[j] = new File(stringtokenizer.nextToken());

        } else {

        afile = new File[0];

        }

        return afile;

        }

        }

        system classloader的部分代碼:

        static class Launcher$AppClassLoader extends URLClassLoader

        {

        public static ClassLoader getAppClassLoader(ClassLoader classloader)

        throws IOException

        {

        //獲得系統(tǒng)屬性“java.class.path”

        String s = System.getProperty("java.class.path");

        File afile[] = s != null ? Launcher.access$200(s) : new File[0];

        return (Launcher$AppClassLoader)AccessController.doPrivileged(new Launcher$2(s, afile, classloader));

        }

        }

        看 了源代碼大家就清楚了吧,extension classloader是使用系統(tǒng)屬性“java.ext.dirs”設置類搜索路徑的,并且沒有parent。system classloader是使用系統(tǒng)屬性“java.class.path”設置類搜索路徑的,并且有一個parent classloader。Launcher初始化extension classloader,system classloader,并將system classloader設置成為context classloader,但是僅僅返回system classloader給JVM。

        這里怎么又出來一個context classloader呢?它有什么用呢?我們在建立一個線程Thread的時候,可以為這個線程通過setContextClassLoader方法來 指定一個合適的classloader作為這個線程的context classloader,當此線程運行的時候,我們可以通過getContextClassLoader方法來獲得此context classloader,就可以用它來載入我們所需要的Class。默認的是system classloader。利用這個特性,我們可以“打破”classloader委托機制了,父classloader可以獲得當前線程的context classloader,而這個context classloader可以是它的子classloader或者其他的classloader,那么父classloader就可以從其獲得所需的 Class,這就打破了只能向父classloader請求的限制了。這個機制可以滿足當我們的classpath是在運行時才確定,并由定制的 classloader加載的時候,由system classloader(即在jvm classpath中)加載的class可以通過context classloader獲得定制的classloader并加載入特定的class(通常是抽象類和接口,定制的classloader中是其實現(xiàn)),例 如web應用中的servlet就是用這種機制加載的.

        好了,現(xiàn)在我們了解了classloader的結構和工作原理,那么我們 如何實現(xiàn)在運行時的動態(tài)載入和更新呢?只要我們能夠動態(tài)改變類搜索路徑和清除classloader的cache中已經(jīng)載入的Class就行了,有兩個方 案,一是我們繼承一個classloader,覆蓋loadclass方法,動態(tài)的尋找Class文件并使用defineClass方法來;另一個則非常 簡單實用,只要重新使用一個新的類搜索路徑來new一個classloader就行了,這樣即更新了類搜索路徑以便來載入新的Class,也重新生成了一 個空白的cache(當然,類搜索路徑不一定必須更改)。噢,太好了,我們幾乎不用做什么工作,java.netURLClassLoader正是一個符 合我們要求的classloader!我們可以直接使用或者繼承它就可以了!

        這是j2se1.4 API的doc中URLClassLoader的兩個構造器的描述:

        URLClassLoader(URL[] urls)

        Constructs a new URLClassLoader for the specified URLs using the default delegation parent ClassLoader.

        URLClassLoader(URL[] urls, ClassLoader parent)

        Constructs a new URLClassLoader for the given URLs.

        其中URL[] urls就是我們要設置的類搜索路徑,parent就是這個classloader的parent classloader,默認的是system classloader。

        好,現(xiàn)在我們能夠動態(tài)的載入Class了,這樣我們就可以利用newInstance方法來獲得一個Object。但我們如何將此Object造型呢?可以將此Object造型成它本身的Class嗎?

        首先讓我們來分析一下java源文件的編譯,運行吧!javac命令是調用“JAVA_HOME/lib/tools.jar”中的“com.sun.tools.javac.Main”的compile方法來編譯:

        public static int compile(String as[]);

        public static int compile(String as[], PrintWriter printwriter);

        返回0表示編譯成功,字符串數(shù)組as則是我們用javac命令編譯時的參數(shù),以空格劃分。例如:

        javac -classpath c:/foo/bar.jar;. -d c:/ c:/Some.java

        則 字符串數(shù)組as為{"-classpath","c://foo//bar.jar;.","-d","c://","c://Some.java"}, 如果帶有PrintWriter參數(shù),則會把編譯信息出到這個指定的printWriter中。默認的輸出是System.err。

        其中 Main是由JVM使用Launcher初始化的system classloader載入的,根據(jù)全盤負責原則,編譯器在解析這個java源文件時所發(fā)現(xiàn)的它所依賴和引用的所有Class也將由system classloader載入,如果system classloader不能載入某個Class時,編譯器將拋出一個“cannot resolve symbol”錯誤。

        所以首先編譯就通不過,也就是編譯器無法編譯一個引用了不在CLASSPATH中的未知Class的java源文件,而由于拼寫錯誤或者沒有把所需類庫放到CLASSPATH中,大家一定經(jīng)常看到這個“cannot resolve symbol”這個編譯錯誤吧!

        其 次,就是我們把這個Class放到編譯路徑中,成功的進行了編譯,然后在運行的時候不把它放入到CLASSPATH中而利用我們自己的 classloader來動態(tài)載入這個Class,這時候也會出現(xiàn)“java.lang.NoClassDefFoundError”的違例,為什么呢?

        我 們再來分析一下,首先調用這個造型語句的可執(zhí)行的Class一定是由JVM使用Launcher初始化的system classloader載入的,根據(jù)全盤負責原則,當我們進行造型的時候,JVM也會使用system classloader來嘗試載入這個Class來對實例進行造型,自然在system classloader尋找不到這個Class時就會拋出“java.lang.NoClassDefFoundError”的違例。

        OK, 現(xiàn)在讓我們來總結一下,java文件的編譯和Class的載入執(zhí)行,都是使用Launcher初始化的system classloader作為類載入器的,我們無法動態(tài)的改變system classloader,更無法讓JVM使用我們自己的classloader來替換system classloader,根據(jù)全盤負責原則,就限制了編譯和運行時,我們無法直接顯式的使用一個system classloader尋找不到的Class,即我們只能使用Java核心類庫,擴展類庫和CLASSPATH中的類庫中的Class。

        還 不死心!再嘗試一下這種情況,我們把這個Class也放入到CLASSPATH中,讓system classloader能夠識別和載入。然后我們通過自己的classloader來從指定的class文件中載入這個Class(不能夠委托 parent載入,因為這樣會被system classloader從CLASSPATH中將其載入),然后實例化一個Object,并造型成這個Class,這樣JVM也識別這個Class(因為 system classloader能夠定位和載入這個Class從CLASSPATH中),載入的也不是CLASSPATH中的這個Class,而是從 CLASSPATH外動態(tài)載入的,這樣總行了吧!十分不幸的是,這時會出現(xiàn)“java.lang.ClassCastException”違例。

        為 什么呢?我們也來分析一下,不錯,我們雖然從CLASSPATH外使用我們自己的classloader動態(tài)載入了這個Class,但將它的實例造型的時 候是JVM會使用system classloader來再次載入這個Class,并嘗試將使用我們的自己的classloader載入的Class的一個實例造型為system classloader載入的這個Class(另外的一個)。大家發(fā)現(xiàn)什么問題了嗎?也就是我們嘗試將從一個classloader載入的Class的一 個實例造型為另外一個classloader載入的Class,雖然這兩個Class的名字一樣,甚至是從同一個class文件中載入。但不幸的是JVM 卻認為這個兩個Class是不同的,即JVM認為不同的classloader載入的相同的名字的Class(即使是從同一個class文件中載入的)是 不同的!這樣做的原因我想大概也是主要出于安全性考慮,這樣就保證所有的核心Java類都是system classloader載入的,我們無法用自己的classloader載入的相同名字的Class的實例來替換它們的實例。

        看到這里,聰明的讀者一定想到了該如何動態(tài)載入我們的Class,實例化,造型并調用了吧!

        那 就是利用面向對象的基本特性之一的多形性。我們把我們動態(tài)載入的Class的實例造型成它的一個system classloader所能識別的父類就行了!這是為什么呢?我們還是要再來分析一次。當我們用我們自己的classloader來動態(tài)載入這我們只要把 這個Class的時候,發(fā)現(xiàn)它有一個父類Class,在載入它之前JVM先會載入這個父類Class,這個父類Class是system classloader所能識別的,根據(jù)委托機制,它將由system classloader載入,然后我們的classloader再載入這個Class,創(chuàng)建一個實例,造型為這個父類Class,注意了,造型成這個父類 Class的時候(也就是上溯)是面向對象的java語言所允許的并且JVM也支持的,JVM就使用system classloader再次載入這個父類Class,然后將此實例造型為這個父類Class。大家可以從這個過程發(fā)現(xiàn)這個父類Class都是由 system classloader載入的,也就是同一個class loader載入的同一個Class,所以造型的時候不會出現(xiàn)任何異常。而根據(jù)多形性,調用這個父類的方法時,真正執(zhí)行的是這個Class(非父類 Class)的覆蓋了父類方法的方法。這些方法中也可以引用system classloader不能識別的Class,因為根據(jù)全盤負責原則,只要載入這個Class的classloader即我們自己定義的 classloader能夠定位和載入這些Class就行了。

        這樣我們就可以事先定義好一組接口或者基類并放入CLASSPATH中,然 后在執(zhí)行的時候動態(tài)的載入實現(xiàn)或者繼承了這些接口或基類的子類。還不明白嗎?讓我們來想一想Servlet吧,web application server能夠載入任何繼承了Servlet的Class并正確的執(zhí)行它們,不管它實際的Class是什么,就是都把它們實例化成為一個Servlet Class,然后執(zhí)行Servlet的init,doPost,doGet和destroy等方法的,而不管這個Servlet是從web- inf/lib和web-inf/classes下由system classloader的子classloader(即定制的classloader)動態(tài)載入。說了這么多希望大家都明白了。在applet,ejb等 容器中,都是采用了這種機制.

        對于以上各種情況,希望大家實際編寫一些example來實驗一下。

        最后我再說點別的, classloader雖然稱為類加載器,但并不意味著只能用來加載Class,我們還可以利用它也獲得圖片,音頻文件等資源的URL,當然,這些資源必 須在CLASSPATH中的jar類庫中或目錄下。我們來看API的doc中關于ClassLoader的兩個尋找資源和Class的方法描述吧:

        public URL getResource(String name)

        用指定的名字來查找資源,一個資源是一些能夠被class代碼訪問的在某種程度上依賴于代碼位置的數(shù)據(jù)(圖片,音頻,文本等等)。

        一個資源的名字是以'/'號分隔確定資源的路徑名的。

        這個方法將先請求parent classloader搜索資源,如果沒有parent,則會在內置在虛擬機中的classloader(即bootstrap classloader)的路徑中搜索。如果失敗,這個方法將調用findResource(String)來尋找資源。

        public static URL getSystemResource(String name)

        從用來載入類的搜索路徑中查找一個指定名字的資源。這個方法使用system class loader來定位資源。即相當于ClassLoader.getSystemClassLoader().getResource(name)。

        例如:

        System.out.println(ClassLoader.getSystemResource("java/lang/String.class"));

        的結果為:

        jar:文件:/C:/j2sdk1.4.1_01/jre/lib/rt.jar!/java/lang/String.class

        表明String.class文件在rt.jar的java/lang目錄中。

        因此我們可以將圖片等資源隨同Class一同打包到jar類庫中(當然,也可單獨打包這些資源)并添加它們到class loader的搜索路徑中,我們就可以無需關心這些資源的具體位置,讓class loader來幫我們尋找了!

      【Java ClassLoader原理深入講解】相關文章:

      Java ClassLoader原理詳細分析201603-04

      2016最新java classloader詳解03-04

      小升初奧數(shù)知識講解之抽屜原理01-28

      揮桿原理03-23

      導游講解技巧04-08

      office知識講解03-18

      素描知識講解01-10

      JavaScript的課堂講解03-31

      學習Java的技巧03-05

      主站蜘蛛池模板: 侦探成旭之千年迷局| 单身男女韩剧免费观看| 夫妻换房在线观看| 男鬼附身美女| 波多野衣结| 高清《特权》电视剧| 封神榜之武王伐纣| 3对1:两男一女一次性体检电视剧| 斗破乱世情| 二对一的商务模式2| 七品芝麻官郑则仕| 小旅馆的肥熟老女人| 韩剧《楼上楼下》| 千金赤子板栗无删减版百度云 | 朴亚珍电影HD| 暴躁老妈1-46集全集免费播放| 《坏修女》免费观看高清电影 | 死神来了5免费观看完整版| 外星人对女忍者| 0女员工的付出中字| 高清《热带雨》完整版视频| 篮网逆转雄鹿赢下天王山| 雾都奇遇夜电影免费观看| 仓井肉欲| over flow第一季在线观看翻译| 青梅竹马是消防员无删1| 在异世界迷宫开后宫动漫在线观看| 冢本监督昭和系列越南女子在线观看完整版| 武媚娘传奇未删版全集大结局| 兄弟换麦子6国语版1080P| 电影 血恋| 《出轨同学会2》| 女人滋味电影在线观看| 唐朝诡事录电视剧免费观看完整版| 牝教师4在线观看视频| 舞蹈家苏科老师简介| 艳遇的修理| 映山红歌谱| 都市小神医短剧全集| 零号特工在线观看| 千金女贼| 桃花映江山免费看全集| 女生宿舍电影下载| 天使的诱惑国语| 深恋在红尘短剧全集播放| 生化危机 影音| 韩国电影失足美女色诱猎物| 嘘国王在冬眠全集免费观看| 朋友的妈妈线观高清2电影| 灌云县| 叛逆者哪个台播出| 《美丽妻子替弟还债》剧情| 飞驰人生在线观看完整版| 漂亮的瘦子电影| 我们推理第三季在线观看| 三年国语免费观看国语高清| 丰满女教师BD高清| 四个少妇的精油按摩电影| 闵度允韩剧中文在线观看| 售楼小姐的秘密》在线观看| 高清宇宙面包店| xl司令第一季在线看免费版| 阳光之下在线观看| 妈妈的职业5完整版结局在线看免费高清 | 凯登克罗斯HD版高清播放电影| 雪中悍刀行第二部免费观看完整版| 非常人贩在线观看免费完整版电影| 潜梦追凶在线观看免费完整版| 《密爱》未删减版中字| 窈窕淑女庞晓杰| 韩国《维修师傅的艳遇》| 樱桃红袖珍妈妈全集| 美国式家庭3妮娜| 憨豆先生在线观看| 《急诊护士》电影| 女教师波多野结衣在线播放| 《再来一次吧》高清版| 超级警察3在线国语完整版| 高压监狱法版免费观看| 一仆二主电视剧全集| 豚鼠系列血肉之花| 姐妹牙医完整版| 电视剧六姊妹剧情| 电影,四少妇推油按摩| 赢钱专家未删减版高清| 被我弄丢的你| 《荷尔蒙6》中文版免费| 霜花店qvod| 青木花恋| 美丽的水蜜桃2英文翻译300字| 一路向西电影完整视频在线| 美乃雀主演《替夫还债》剧免费观看| 周星驰国语高清| 《军事不当行为》布兰迪在线观看| 附注我爱你下载| 功夫小龙| 米小圈把李黎亲哭了| 小欢喜2| 与继拇的族行日本| 公主摊牌:我是隐藏大佬短剧全集| 美貌的社长夫人太漂亮了| 雷诺阿电影| 小李飞刀翻拍| 郑嘉颖最新电视剧| 安娜贝尔3| 伯爵夫人2满天星| 快乐星猫第五部| 《饥饿的女儿》| 苍天有眼演员表| 色即是空在线电影| 暗杀教室真人版| 动真心:契约总裁短剧全集| 湿润的继拇HD中文泡泡 | 亲爱的孩子们大结局| 性刑房3悬吊捆绑视频| 无尽的无尽全集在线观看免费高清 | 色诱修理工| 酷龙组合| 我爱下电影论坛| 你给我的喜欢1-24全集免费| 孩子今天妈妈给你| 《丛林激情》男女主| 《女销售的销售秘密2》| 智斗美女蛇| dog-048| 《法国航空》3| 麦乐迪《家庭矛盾》4女超人| 电视剧大哥| 爱唯侦查dvd| 跑男最新一季| 无彩限的怪灵世界| 天降之物h| 有friend无惊| runningman在线观看全集| 军事不当行为电影全集在线观看高清 | 劝君王饮酒听虞歌| 木下凛凛子的搜索结果| 肌肤的纹理电影| 《替夫还债》的日本电影| 我的左手右手演员表| 霍比特人意外旅程百度影音| 烟袋斜街10号| 花与蛇2麻醉牙医诊所| 车水马龙电影免费版| 电影二对一的商务模式2| 魔帝归来:三界唯我独尊全集免费| 高清《禁忌4》美国电影| 台湾歌手叶胜钦因骨髓癌去世| 痴人之爱电影在线观看| 《狙击蝴蝶》全集免费| 《总统夫人》星克莱尔1997年满天星在| 玄奘之路纪录片| 黑白配国语免费观看| 陪读妈妈1-| 需要爸爸播种子HD-云播免费在线观看-西瓜影院| 黑帮老大歌我的365天| 听见天堂| 塔日酒店在线观看完整免费高清版| 韩国三姐妹| 506070欧美| 网购迪士尼套餐最终民警护送入园 | 火影忍者国语版全集爱奇艺| 女子修道院6满天星版| 白鹿原电视剧完整版| 华丽的外出手机在线完整| 美丽猎物1993版| 生死决断漏了吗| 食锈末世录| 蒸发太平洋 电影| 风月宝鉴电影| 领袖电视剧| 欧式少女第16集全集剧情介绍视频 | 江苏艾滋病| 好大灬好硬灬好爽灬无码日本| 孙杨事件暴力抗检| 日本两个妈妈ID是哪个国家的| 韩国色情 2024| 电影激战丛林无删减版免费看| 少女情怀免费播放| 羞耻诊疗室樱花在线播放| 王贵与安娜剧情| 目标希特勒| 游戏| 花宵道中电影全集免费观看| 二十一世纪性格爱情指南日本| 月半爱丽丝电视剧免费观看完整版| 我的漂亮的小瘦子3完整版| 杰西卡·琼斯| 财神客栈| 上帝也疯狂1电影免费观看完整版| 胡乱的深见君2| 公之浮之手中字22| 刺青之声| 妈妈说带套可以给我先说| 老爸当家电视剧| 3对1:三人一次性体检什么电影| 坐火车旅行电影| 法国空5在线观看整板视频| 伪装者电视剧全集观看| 禁忌5| 安哲罗普洛斯| 年轻的岳母4电影播放| 虫族之心剧情| 电影密爱| 在异世界迷宫开后宫动漫在线观看| 鸣笛是什么意思| 夫人大可不必电视剧免费观看 | 回南天电影在线观看免费播放| 黑白配hd1080免费观看下载| 情迷彼得堡| 《她被搬运工侵犯》免费观看| 齐天大性之大破盘丝洞| 沙漠行动2007俄罗斯满天星| 湄公河行动在线观看| 美国新荷尔蒙3| 聊斋艳谭之艳魔大战| 韩剧《不止暧昧》播放| 密爱 优酷| 贝坎奇品味人生| 经典兔子舞曲| 蒋玲玲版《渔夫的荒野史记》电影医ww | 哇嘎高清完整版免费观看| 火口的两人| 法国电影《空乘5》在线观看| 幻城 电视剧| 日本阅兵| 《替弟偿债七日》电影叫什么名字来| 高清《断魂小丑》电影| 《女律师替夫还债》电影完整版在线| 艾曼纽在线观看免费完整原声| 私人助理2法国版电影| 大侦探福尔摩斯2迅雷下载| 操俄罗斯美女| 横行霸盗| 浴火奔腾浴火红| 蜜桃成熟时33d ed2k| 铜铜钢铿锵锵锵锵锵锵免费观看高清免费观看Afarc | 复仇者联盟3神马抢先版| 木子凛凛子在线电影| 铠甲勇士之帝皇侠电影| 满天星版《超女麦乐迪》在线观看| 魔女2在线播放免费观看完整版| 欧美开船的电影原声| 少妇献身HD中字| 法国空姐满天星法版第三季在线播放 | 少女免费观看完整电视电影| 《维修工人的艳遇》2| 天国的女儿 原版| 白峰电影全集免费观看国语| 乱云飞渡 小峰| 功夫熊猫电视剧| 财神客栈在线观看| 大地第三资源网免费观看电视剧| 今生无悔| 红娘子49| 媚者无疆免费观看电视剧| 想要成为影之实力者第二季pv| 普京抵达人民大会堂| 空调师傅疑操作不当致买家触电身亡| 火凤凰33集| 十佳球背景音乐| 无影灯下 电视剧| 武神主宰电视剧| 第一夫人| 四个妇人精油按摩完整版 | 法国版《女超人:麦乐迪》电影在线播 | 灭火宝贝3电影免费观看完整版| 逆袭之爱情情敌电视剧在线观看| 理发店里的特殊待遇在线观看| 杨丽花歌仔戏薛丁山| 高压监1| 湖南黑山羊价格| 《炸天小姐》电影免费| 绝世武功 微电影| 怎么辨别玉的好坏?| 林正英鬼片国语高清| 用我的指尖搅乱吧| 老板的办公室| 叶子户外| 苹果未删版| 警告安全电影| 一年一度喜剧大赛第2季综艺| 日历女郎 韩国| 羊村守护者第4季第1集| 蒲松龄粤语| 法国空乘电影观看免费视频:| 小蝌蚪找妈妈电影| 《女销售的销售秘诀2》| 大祠堂在线观看| 晚安,为我而眠的妹妹| 今生有你电视剧西瓜免费观看| 需要爸爸的种子播种电影| 一路向西国语百度影音| 《女超人:麦乐迪》家庭矛盾| 少年包青天第一部全40集| 掌中之物电影西班牙在线高清免费观看 | 机器侠百度影音| 奔跑吧3| 超级马里奥世界2| 小时代2优酷完整版| A计划电影| 在宇田川町等我喔| 聊斋2三姐妹免费播放| 一半海水一半火焰百度影音 | 台剧黛比| 哭悲医院五人干了啥| 大牛影库战狼6免费观看| 陈坤 盗墓笔记| 《法国空乘10》完整| 英雄慢走| mds-807| 超人钢铁之躯qvod| 广场舞社员都是向阳花| 黑白配2018| 藏海花 电视剧| 柯洁亚运会开门红| 语义错误第二季生肉| 高清《百万人推理》电视剧| 《执法者们》国语版| 菜肉馄饨| 美好的时光电视剧| 慢性呕吐实验室原版 | 浪迹天涯高清| 吞噬星空47集免费观看完整版| 电视剧骄阳伴我免费观看全集 | 电影《乌托邦》免费观看| 法国伦理高压监狱3| 海军陆战队员快播| 小小少女16| 韩剧《楼上楼下》| 杰西简的电影在线播放| 霹雳惊涛| 济公游记| 反斗剑神粤语| 龙之家族第二季| 《镜的第三乐章》| 银河奥特曼s免费观看| 阿波罗18号| 宁安如梦免费观看| 圣诞快乐劳伦斯先生电影| 向往的生活5完整版免费西瓜| 倩女喜相逢| 渔民家姑娘2幕后花絮| 阳阳电影| 电影韩国r| 壮志凌云满天星无删减版| 龙门镖局 影音| V酒店在线观看| 葡萄成熟时免费观看| 墨西哥剧千金和保镖真爱| 恋爱先生全集| 几度夕阳红剧情| 荣誉守则成人版 在线观看| 邻居家妻子 电影| 善良的麦子| 白日焰火免费完整版| 精舞门2下载| 三妹43集播放| 黑衣人高清下载| 建党伟业之践行者| 克拉玛依市| 家庭矛盾完整版麦乐迪| 干柴烈火2免费观看电视剧| 一生无悔歌词| 新倩女幽魂插曲| 博客| 女人被躁到高潮嗷嗷叫69| 疯狂的欲望| 春心荡漾在线观看完整版| 变种dna| 森林里的熊先生无删节完整版| 禁室培欲下载| 我是路人甲电影| 面朝大海春暖花开赏析| 姜素拉电影| 红楼梦87版全集下载| 陆小凤张智霖版| 安拉拉斋电影免费播放| 女的高潮两次了男的戴套没感觉| 金石良缘| 死亡体验馆| 神龙归位什么意思| 蜀汉传奇| 银瓶梅电视剧免费观看| 甄嬛传20集| 俄罗斯爸爸种子| 哈利 波特与死亡圣器下| 好色特工队iv| 齐天大圣孙悟空免费观看完整版 | 电影野性的呼唤巴克犬完整版| 我叫赵甲第第二季电视剧| 从海底出击第一季| 吸血鬼日记第二季| 收获之夜百度影音| 在续意难忘| 西行纪第2季| 善意的谎言电视剧全集免费观看| 大内密探零零发高清国语| 卢湾区| 潮汕小品有钱人| 明末风云电视剧在线观看免费| 我的妻子韩剧| 环太平洋迅雷下载| 媚者无疆电视剧全集在线观看高清| 唾弃你的坟墓1复仇电影| 神奇的美发沙龙| 无颜之月完整版| 漂亮的妈妈5中字开头7个字| 布衣神相| 性办公室按摩电影| 《毒医肥尸》在线播放国语版 | 抵债的麦子3替夫还债演员表| 《香港奇案之吸血贵利王》电影| 邻家娇妻| 剑魔独孤求败全集免费观看国语| 禁忌1980满天星| 剃刀边缘电视剧全集| 动感之星小玲183集免费观看动漫| 欢乐颂4免费观看全集电视剧完整版| 德国女子兵护卫队满天星 | 男按摩师做乳房按摩伦理片在线播放| 炫动潮流夜| 一品大天师短剧免费观看| 爸爸想要播种子| 牛仔裤的夏天1| 伦理《高压监狱2》完整| 画江湖之不良人在线观看| 好色特工队iv| 狸猫换太子豫剧| 昼颜 电影| 电视剧《驻站》在线观看| 搞笑一家人第三部| 金银1-5美国| 养个孩子不容易电视剧| 新三国糜芳| 英雄在线观看| 《女性治疗营》| 国务卿夫人| 小泽彻主演的《老板老板的要求》电影播放 | 苹果范冰冰无删减| Eeuss| 刺客伍六七第6季免费观看完整版| 《伊波拉病毒》2国语版| 孤注电影完整版免费观看| 公安局长第四部24| 契约新娘电视剧| 麦乐迪马克斯女超人满天星电影在线观看| 妈妈的朋友在线播放| 向风而行免费观看全集| 菲律宾电影修理工的艳遇| 体感预报在线观看免费完整版| 麻衣神婿电视剧在线观看| 《只有你》韩剧| 爱上黑道女| 大掌门电视剧全集| 凶间疑影| 超级飞侠第二季| 新来的瑜伽教练在线观看| 冻结地球全集观看| 战神联盟大电影3| 车水马龙电影免费版| 周小斌个人资料| 火蓝刀锋电视剧百度影音| 《向着炮火前进》电视剧| 保罗2电影免费播放 | 芒果香谢军| 需要爸爸种子在线追剧 | 三年大片全免费观看国语版| 有你才幸福演员表| 同学聚会的目的电影| 修女也疯狂电影在线看免费| 我在故宫修文物大电影| 非诚勿扰20100620| 犯罪图鉴电视剧| 澳大利亚霹雳舞0分| 小蜜桃25| 吉娜 维尔德| 《新上任的秘书》| 3D《肉蒲团》| 命运交响曲迅雷下载| 房奴试爱电视剧开头原声带| 高清《异国日记》电视剧| 武直15| 调情按摩电影| 台版缉魂2小时10分版网飞版| 恩娇 电影| 真破血国语版高清免费看| 两个男孩子做不可描述的事| 我的三个漂亮嫂嫂免费观看| vrs未授权观看| 奇热剧集| 越南电影《暴行》| 游击兵工厂全集| 法国空乘5在线看免费高清全集| 美容是特殊待遇5| 木下凛凛子伦理电影| 中国特警电视剧| 李德印42式太极剑| 屈辱的婚纱奴隷花嫁1~2集 | 扫黄先锋国语| 淫方程式动漫1~2集免费观看| 超级教师| 电影《美味快递员特殊待遇2》演员阵| 简言的夏冬全集免费播放| 女人强奸男人| 真咲恵美| 凌云志志法国满天星在线| 仿生人在线观看| 不可磨灭的番号| 电影《以色列女狱警》在线观看| 《轮回的花瓣》| 韩剧《无法抗拒的你》全集| 西西里的美丽传说高清| 母亲母亲演员表| 我家浴缸二三事在线观看| 《亲爱的》在线观看电视剧免费| 电影《香醇的绣感》在线观看| 新金瓶梅ii| 《姐姐对我来说是女人》| 女律师的堕落电影在线观看| 恨锁金瓶在线观看3| 激战酒店1-5集免费播放视频| 巨乳学院漫画| 漂亮妈妈七中字开头| 棋士电视剧免费观看| 王多鱼打扑克| 世界第一初恋第二季动漫| 黑狱圣女国语在线播放免费| 。播放电影性解密。| 迷失东京在线观看| 《口咬》电影完整版| 三更之2饺子| 好妈妈3电视连续剧| 徐一航42集电视剧免费观看| 美国电影《需要爸爸播种》电影在线 | 待到重逢时泰剧| 杨幂的421事件到底是什么意思| 星汉灿烂电视剧全集在线观看免费| 大江大河2一共多少集| 工地上的女人免费观看电视剧手机剧| 《九条的大罪》| 中宁县| 新还珠格格的所有歌曲| 临事而惧| 城中之城电视剧全集免费| 《岸边露伴一动不动 忏悔室》| 战狼6女版免费播放| 犯罪现场调查第八季| 澳门风云2西瓜影音| Overflower第一季无码| 璀璨人生下载| 电影玛丽玛丽| 电视剧富贵| 四个少妇的按摩电影| 天地英豪第三部| 制暴电影2024年| 团鬼六女教师绳地狱| 高清《未必之恋》动漫全集在线观看| 老婆出差接待傲慢客户 | 变身电影| 插曲的痛30集全集免费播放| 双凤奇案片尾曲| 大红包电影免费完整版| 电视剧守望| 公之孚手中字12| 《女演员:性试镜》免费观看| 《放飞旅行团》| 《你在等什么》西班牙电影| 森奈奈子在线 | 迦楠大人的白给是恶魔级全集观看| 日本空姐2019年上映的电影 | 黑白潜行电影完整观看免费版| 台剧《黛比浪漫女家教1》在线播放| 文成公主王庆爽| 已婚少妇的下午| 最新情色| 嫁入豪门电视剧| 今生有你电视剧在哪里可以看| 战狼在线观看完整版| 古惑仔3高清国语免费观看| 勇敢的心电视剧免费观看完整版| 三年电影在线观看免费网| 亲爱的热爱的电视剧观看| 言承旭 ella| 地震局称银川进入地震窗口期| 黑神话悟空第二章| 执笔在线观看| 单片机最小系统原理图| 完美小歪| 战狼6欧式少女全部剧情| 无敌当家| 荷尔蒙6第一集| 了不起的女孩电视剧| 美国伦理《需要爸爸播种》演员名字 | 电影《美味快递员2》免费完整版| 卡特教练| 真实的人类第一季| 私人女性监| 无间道1| 河套宽频| 诱感| 一锁五十年| 偷偷降级的火锅 盯上打工人外卖| 她们的恶作剧未删减版免费看| 小王日记毛不易| 黄龙县| 一起去吃拉面吗| 毒枭电视剧| 女上司的堕落:复仇让她彻底沦陷电影| 花样姐姐中国版| 樱桃红 电视剧| 木下凛凛子的一级电影| 武训传免费| 法国电影《农场保卫战》在线观看| 黑执事mp4下载| 赶尸谭艳| 《瓜达卢佩的玫瑰》在线播放在线免费观看 | 大香交伊人| 1dldss00361当我打电话叫应召女郎时,我发现了一个高傲的大胸秘书......在办公 | 爱人电影完整版视频在线观看| 运财智叻星| 风烟滚滚| 分娩按摩2在线观看完整| 青梅竹马是消防员无删1| 东京塔之越南女兵俘虏营免费完整在 | 锵锵锵锵免费观看完整版| 李东生鹰的重生| 杨敏思版1-5集免费播放电视剧| 韩剧《鬼宫》全集免费| 韩剧《我的家教老师》剧情介绍| 饥饿的阿姆6高清版下载| 加勒比海盗5 死无对证| 朱莉安妮全集在线观看免费高清| 美妙人生韩剧| 巨人最终季PART3在线观看 | 始作俑者的意思| xl司令第八集全集在线观看| 爱情的牙齿在线观看| 回复术士之重启人生第二季在线观看| 漂亮妈妈7巴中字开头7个字| 刑警队长电视剧全集免费观看高清| 夕颜夫人电影| 同床异梦2 秋瓷炫| 小菊的春天在线观看| 意大利塞伦泰山HR版女主角| 漂流欲室剧情| 监狱风云之少年犯| 中文字Dl幕岳 和| 星银岛下载| 后海前街| 暴躁少女48全集在线观看| 看得见的女孩动漫全集观看| 雪恋| 电影《叫我姐姐》| 神勇武工队传奇2017任帅| 战狼8姐弟国语高清免费看| 鬼怪第三集| A计划电影| 《需要爸爸播种美国》在线观看| 要听爸爸的话未删减| 周二谋杀定律电视剧| 渣男的本愿真人版| 斗破苍穹缘起在线观看| 杰西简的电影在线播放| 旋风少女| 庆余年讲的什么故事| 爱我几何《莫妮卡》在线观看| 梦想三国1-50集免费看| 蛇王2021| 倔强驱魔师1-4集免费观看 | 美国女儿借爸爸种菜是哪一集| 花样姐姐第一季免费完整版在线观看| 长泽雅美qvod| 相奸游戏在线观看| 夫人夜在线观看| 七号差馆国语| 激战丛林手机在线观看| 菜鸟总动员| 《大军阀》| 爱维侦察DVD版在线播放| 整容电影| 相亲相爱20160808| 《她被搬运工侵犯》在线观看| 新上海滩黄晓明高清| 我的妹妹雯雯| 妈妈的职业5完整版结局在线看免费 | 韩剧宫剧照| 成人哇嘎视频| 女装正太 快播| 战略大作战| 塔日酒店在线观看高清完整版| 高清《爱情公寓5》电视剧| 棒针编织花样| 房奴试爱第一集开头原声电视剧| 浴火危城| 电视剧掌门女婿| 《偷香》电影在线观看| 妻子出差丈夫部长在线播放| 张艺兴诉b站侵权案将开庭| 同事三分亲粤语| 爱唯侦察2024年最新合集| 《密爱》2002完整版| 无尽的尽头电视剧分集剧情| 《【欧美】Vixen-《V飯店 2》 第一集-反彈》- 红桃视频 | 王华买父| 广场舞浪迹天涯| 鹰爪铁布衫第二部| 地铁笨蛋6| 和讨厌前任一起出差| 潜伏者40集在线播放免费| 山村姑娘| 飞机上的性服务K8电影免费观看| 《唐朝诡事录4》免费观看| 跑跑卡丁车wkc| 黑白配中文高清完整版| 掌中雀短剧| 佐佐木希av作品| 我们高清在线看免费观看播放| 俘虏之锁1| 满目星回又思卿短剧免费观看 | 完美爱情| 小娘惹2020新版| 姊妹牙医电影完整版| 青春禁区在线看| 新妈妈免费在线观看| 美国女儿国满天星在哪能看| 寻秦记2018| 黄河大侠电影| 酒店全集1-5| 景甜曾说经历无法承受之痛| 秘书在办公室被躁BD在线小说| 我老公的家庭教师在线观看| 妻子8免费全集高清观| 拔掉57颗牙是什么体验| 网红王一菲| 我的游泳教练| 周星驰西游降魔篇在线观看| 在出差期间被讨厌上司欺负| 鬼宿舍电影| 法国空乘五在线观看 | 教授和女学生| 正在播放: JUL-520 留下好色的老爹和软弱的妻子 我去了三天两夜的出差... 成 | 郑中基 无赖| 电影金瓶风月| 商务旅行戴帽子的同行免费观看电影| 《家政老师2》免费观看韩剧| 播放成龙的电影| 特殊待遇2| 叶子楣经典电影《聊斋》| 获取信息的方法| 沙田区| 《主妇与装修工》大结局一木百子| 地铁举行集体婚礼| 郝板栗在线电影观看免费| 指尖传来的热情| 高清《高压监狱2》完整版在线| 不雅空城| 《私人助理2》| 巴蜀笑星| 于成龙 电视剧| 《女教师| 西游记张卫健版国语| 可疑的美容院在线免费观看| 酒店1-100集免费观看| 北非谍影免费| 满天星在线观看完整免费高清原声满天| 莒南县| 非礼勿视2| 牙医姊妹电影| 伤离别 张学友| 领家特工| 布莱泽奥特曼在线观看| 美丽蜜桃4| 吸血鬼日记第四季快播| 《激战丛林》电影在线观看意大利| 青岛往事全集| 学生妈妈5个字ID| 黑巨吊视频手机在线免费播放| 无颜之月完整版| 开局一座山| 工藤拉拉全部免费观看电视剧 | 莫斯科行动| 兴国县| 《出轨同学会2》韩国电影| 男女一起愁愁愁电视剧免费观看在线高清 | 推油电影| 《血战冲绳岛》| 爹地追来了短剧全集| 肉肉的小黄车| 午夜凶铃3d| 名侦探柯南沉默的十五分钟| 俺去也在线播放| 女友年轻的继牳2| abo成结模拟动画| 赵日天是谁| 装睡被陌生人摸出水好爽| 部长来家里吃饭2| 老师好大好爽要喷水了视频| 女帝谋全集免费| 远方快递原型| 隐秘的角落电视剧在线播放 | 变形金刚 1| 缘分 电影| 戴拿奥特曼免费观看| 入室暴行国语免费看| 大神同学想被吃掉 未增删 | 一门三司令在线观看| 甄嬛传全集在线观看爱奇艺| 县委大院电视剧全集免费观看| 青肓全集在线观看| 天宝伏妖录第二季| 长津湖2021在线观看完整版| 高清7天未删减| 霍比特人1:意外之旅| 韩国伦理片女儿需要爸爸播种子的电影| 天龙特攻队 字幕| 年轻的小婊一级A片国产| 动漫gaysex入口男男动漫| 《再去温泉吧!》第一季| 抵债的麦子3替夫还债演员表| 美妙的旋律第二季| 长月无烬免费观看全集| 波野结衣qvod| 酒店激战第10集的内容与解读| 韩国论理电影年轻的女朋友| 一路向西电影完整版免费| 画皮2电视剧全集| 朴雅珍《隐身帽》| 美容院:特殊待遇3| 阿波连同学| 大鱼海棠湫| 黄秋生电影人肉叉烧包| 阿拉伯电影绝色在线观看免费| 怨妇2电影免费中文字幕看完整版| 我的公主国语| 满天星《西部牛仔》| 甜蜜惩击全集| 火影忍者剧场版失落之塔| 龙凤店国语| 战狼3免费高清版电影| 恋语轻唱动漫免费观看完整版| 战狼百度云| 王府主母:深宅掌权短剧全集| 郝板栗《千金小姐》免费| 电影《酒店温存》| 糊涂小天使2| 新水浒传28| 《艾拉妮丝》电影| 《裸乳按摩》在线电影| 电影沉香如屑在线播放| 《两个好媳妇》国语版播出时间|