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满天星版在线播放| 黑白配免费观看大全在线播放 | 缘之空第一季在线观看免费完整| 激情从来| 康熙密史| 猎狼特战队| 海底小精灵| 读心专家电视剧| 罗丽星克莱尔《迷宫》在线观看| 林风短剧免费全集播放| 养女大结局| 我心里的那家伙| 判处勇者刑全集观看| 电影激战丛林在线观看完整版高清| 大长今之尚宫天下| 不雅视频完整版| 《overflower》真人版演员表| 破地狱粤语| 花蝴蝶4电视剧在线播放免费观看| 王中王电视剧| 交警一把抓住300多斤电缆线卷筒 试爱2电视剧免费观看全集 | 大丈夫2粤语| 总统之夜1997法国版在线观看| 乔布斯生平简介| 《性的暴行HD》在线观看| 骑兵进行曲| 我本善农| HD版《激战丛林》类似的电影| 神龙斗士第二部| 牛鞭擦进女人下身手机在线观看| 无遮挡动漫在线观看| 高清《空姐》电影完整版免费观看| 《激战丛林》电影在线观看免费高清| 我的僵尸女儿未删减| 电影需要爸爸的播种子| 工作女郎韩国| 调解の锁| 锹里奏鸣曲| 《奔跑吧兄弟》第四季| 正在播放: JUQ-323 在没有丈夫陪伴的五天里,我被勒令禁欲,直到第一天晚上。不 | 风之舞 电视剧| 金银悔1-5手机版免费下载安装| 盗墓笔记谜海归巢| 房奴试爱激情戏做爱| 那些年我们一起追过的女孩完整版| 猪猪侠保卫战| 忍不住的继拇中文字幕 | 中文字Dl幕岳和女胥友田真希在线| 山谷里的思念| 擅长捉弄的高木同学第二季| 日本女大学生按摩在线观看| 困惑的LANGM| 新生在线观看电视剧免费| 上司交换夫妇木下凛凛子 | 美容室:待遇服务7| 海贼战队豪快者剧场版| 法国监狱女狱警2免费观看| 黑帮老大和我的365天第一部| 我的丑娘演员表| 步步惊心剧情| 某科学的超电磁炮全集| 社长的秘书在线观看| 远古入侵国语| 动感之星妖精168集在线看| 教室别恋百度影音| 男生女生在线高清观看免费观看| 朋友的姐姐4线在完整中字| 赛文奥特曼国语版全集| 百年遗产在线观看全集| 同学两亿岁免费看完整| 唐朝禁宫风月| 家族荣誉4国语| 牙医姐妹电影在线观看| 再见 孩子们电影| 越南满天星超大尺电眼影 | 少年包青天2部| 魔术师1998| 松药店的儿子们54集| 强伦轩办公室女教师hd| 女儿 电影| 色戒未删未减版| 凯登克劳斯电影作品在线观看 | 初体验5免费观看完整版| 电击小子第3季| 北漂电影| 电影《美容院的特殊待遇》5演员表 | 红高粱电影| qvod金瓶梅| 冰雪奇缘百度影音| 洛隆县| 华人城另类小说| 《入青云》36集免费| 欧美伦理电影炸天小姐| 因为是反派大小姐所以养了魔王 | 暴躁老妈1-46集全免费观| 北上电视剧在线观看全集免费播放| 《卖保险套的女销售》| 大鱼海棠资源| 方糖映画| 火男刀锋| 宝贝计划全集| 因为遇见你分集剧情| 读心专家电视剧| 酒店实行生免费完整版| 地久天长豆瓣| 站着再来一次17集全免费播放 | 木下檀檩子电影在线观看2023年上映时| 男子胁迫前女友跳海殉情| G点1985无删减免费看| 浪客剑心国语版| 狄仁杰第四部全集| 朋友的妻子.| 吴京电影长津湖抢先版| 我们的父辈完整版免费观看| 小谢尔顿第七季电视剧| 亿万第二季| 女超人1979满天星版在线观看| 隔壁邻居很美味免费观看| 高压监狱在线观看法版免费| 坎贝奇在线观看完整| 地狱空荡荡 魔鬼在人间| 神龙斗士第三部国语全集| 霍城县| 勇敢的心在线观看| 纳粹慰安室2免费看国语版 | 斗罗大陆116集| 爱情保卫战 海霞姐| 加勒比女海盗2在线| 观看免费完整版高清电影| 液晶电视安装| 《和讨厌的部长出差旅》在线观看 | 丰满的妽妽3韩国电影| 叶问外传张天志电影免费观看国语| 白峰美羽主演视频在线观看| 《外出》免费观看完整| 麦乐迪在线观看完整免费| 真咲恵美| 高清《灭火宝贝5》电影| 上错花轿嫁对郎电视剧全集观看| 复仇者联盟2吉吉影音| 超女麦乐迪完整版| 黄金瞳在线观看| 法国满天星《行政助理》| 欢乐白领夫妻| 成全动漫观看免费高清| 韩国电影空姐| 午夜十二点高清完整版免费观看| 徐锦江吃叶子楣乳| 哒哒哒在线观看播放免费| 新编西游记| 小蓝视频勇敢做自己| 痴汉地狱| 斑马电影街桥矿| 电视剧新娘| 妻子8在线观看免费版电视剧| 好男人好资源好电影TV| 火烧岛 电影| 囧探查过界| 无限电影高清免费观看| 神探夏洛克电影版| 《英雄》电影完整版| 傻儿传奇45集| 最后一枪全集| 秋瓷炫《生死决断》免费观看 | 无懈可击剧情| 一个朋友的母亲| 战狼6大妈免费观看高清版| 火星哥treasure| 《被可怕的科长欺负的新人》公| 女大学生的美味沙龙| 电影《少爷与女佣》法国版| 墓穴迷城迅雷下载| 安吉拉·怀特 透视| 良医第一季在线观看免费完整版| 1dldss00361当我打电话叫应召女郎时,我发现了一个高傲的大胸秘书......在办公 | 超级教师3免费版电视剧 | 饮食男女高清免费完整版在线观看| Ovflower全集免费观看| 流星蝴蝶剑联网| 李翊君北京演唱会| 湖北卫视长江新闻号| 电视剧春去春又回| 以家人之名大结局免费观看| 《死亡账号》| 我的妹妹不可能那么可爱第一季| 我当你兄弟电影| 捉鬼敢死队满天星版| 宫锁沉香 电影| 女版战狼10高清免费看| 妹妹的第一次有点紧| 欲燃电影| 电视剧神隐在线播放最新| 后营露营第一季未增减 0.0.0.0动漫 | 电视剧至尊红颜| 小瘦子2在| 福禄寿电影粤语| 女战狼6在线高清免费观看| 蜜桃成熟时33d ed2k| 牙医郝板栗完整版电视剧在线观看 | 最佳情侣电视剧| 幸得相遇离婚时免费播放| 高清《扫黑风暴》免费观看完整版| 日土县| 机械公敌高清在线| 三年大片大全免费观看国语版电影完 | 我的大胸继拇4| 爱在空气中第四集| 战狼6免费观看全部下载高清| 叶玉卿《卿本佳人》高清| 妻子8免费完整高清电视剧| 堕落前辈动画第一季樱花动漫免费| 向井蓝在线观看| 首尔之春历史真实事件| 发国少女6| 决战食神免费观看完整版| 《斗罗大陆》免费观看全集在线观看| 360大佬爱上我第二季免费 | 法国少女农埸电影在线观看| 蜘蛛侠之英雄无归| 日剧我们再来一次高清观看| 冒牌老爸高清下载| 巨乳保险| 女仆小姐的贪吃日常未删减| 按摩师男| 今生有你电视剧西瓜免费观看| 三年在线观看免费大全| 动漫无双3终极无敌版| 17·3电影高清免费播放| 监狱风云之少年犯| 《替夫还债妻子| 正在播放: JUL-945 在没有丈夫的平日里,我被打工归来的无与伦比的岳父强奸, | 色降ii万里驱魔| 两个人观看的视频| 三生三世十里桃花电视| 第三类法庭粤语| 《父债女偿还》完整版| 漂亮妈妈7中字开头歌曲| 自制ipad| 爸爸我要播种电影免费观看| 人蛇欲血战之错体美女蛇| 15yc| 短剧免费看全集| 法国酒店实生3完整版| 大江大河第一部全集免费观看 | 大器晚成在线观看| 和丈夫的部下玩火的夜晚HD无字_经典电影_手机完整版在线观看_纤纤影院 | 电影《推油》完整版免费观看| 东北告别天团在线观看| 牙医姊妹在线免费观看| 风中奇缘全集| 图书馆的女友(日漫)第五集| 情陷夜中环2粤语| 壮志凌云凯登劳斯版 | 喜爱夜蒲1高清国语完整版| 爱我就别想太多在线看| 不要见怪| 掌上玩物| 《漂亮的保姆》韩国电影下载| 我要变坏3| 民众抱熟睡孩子参加莱希葬礼| 丽卡驯服2结局| 水手服电影| 我需要爸爸种子英文| 电锯惊魂全集| 小凤新婚下集全集在线观看| 强奸女护士| 跟部长出差的温泉之旅在线观看| 吸血鬼检察官| 《乳房按摩》在线看| 公交车上六人轮换CH| 《房奴试爱》开头原声| 爱情面前谁怕谁31| 金银10一5| 欢迎来到实力至上第二季樱花动漫| 我的大胸继拇4| 《杀破狼2》在线播放| 暴劫倾情电影| 谈情说爱粤语| 牧神记39集免费观看| 庆余年2电视剧免费全集在线观看| 四川文理学院图书馆| 子夜归电视剧在线观看免费| 克宫:普京不打算祝贺特朗普胜选| 一起长大 电视剧| 善良的女秘书视频| 《女人的秘密》电视剧| 玛雅最新地址| 自w到抖还要继续吗| 父女大作战2在线观看| 搞笑一家人3国语版| 四大名捕斗将军演员表| 行尸走肉第七季第五集| 李梦出轨| 高清《搜神传》电视剧| 我的三体| 17·3在线观看免费| 透析 电影| 男女一起愁愁愁电影全集免费播放 | 空即是色韩国电影| snis-986| 火影忍者疾风传720集| 接档夫妻联欢的下一个动画| 甄嬛传46| 《兽行》删除6分钟剧情全集| 无限复活粤语| 男人女人一起愁愁愁电视剧免费不打马塞克| 名门望族粤语| 我要爸爸播种子电影观看完整版| 非诚勿扰聂倩| 公与3个媳HD免费| 上门女婿完整版高清免费全集| 爱我几何免费完整版| 陀地驱魔人结局| 法国伦理电影在线观看高压监狱| 长津湖战役3免费观看| 女房东的滋味HD中字| 长相思40一60集免费| 《驯服小峓子2免费观看| 折腰电视剧全集| 脱逃狱者天海冀电影高清在线观看| 重游母亲桃花源| 插曲的痛在线观看完整版| 溜溜影视| 蓝色隐身帽子| 电视连续剧暗战| 岢岚县| 瓜瓜是谁的儿子| 想爱就爱2| 历史的天空高清| 荷兰到底有多开放| 卖房子的女销售3免费| 高清《她唇之下》电影| 台湾独居女和上门维修师傅高清| 遥远的距离电视剧| 今夜无人入眠免费观看| 大男当婚 优酷| 浴火奔腾浴火红免费观看电视连续剧| 翻云覆雨电视剧高清| 三妻四妾免费观看完整版高清,皇家女御厨17.3 | 战狼六免费观看完整版高清| 张柏芝说话大声是因为耳弱| 售楼女的秘密在线观看| 韩国电影免费观看高清完整版在线| 牙医姐妹电影完整版在线观看| 黑豹特警队| 星克莱尔的《第一夫人》在线观看| 女人强奸| 在线观看韩国电影维修工的艳遇| 关掉电视音译歌词| 娘亲舅大| 赤警威龙在线观看| 北京遇上西雅图之不二情书| 万里江山入我怀免费观看| 敦煌夜谭| 欧美经典黑白配在线观看| 黑妞基地| 黑白配HD1080完整版高清一| 悲伤比更悲伤的故事| 麦乐迪马克斯满天星在线观看完整版| 刀锋战士| 菲梦少女第三季| 逆世界在线观看| 深圳烹尸案| 电影蝎子| 电视剧富贵| 斯巴达第四季10集完整版| 电视剧红楼梦87版| 女律师的陨落免费观看完整版| 玫瑰的故事更新时间| 私人医院的特殊待遇2| 警察锅哥| 神犬奇兵电视剧| 裸婚电视剧| 脱口秀演员李昊石被警方立案调查| 康体水疗电影免费观看高清版播放| flowover在线观看完整| 麻辣隔壁第二季| 爱欲告白完整版韩剧免费| 第22条婚规全集在线观看| 年轻的嫂子5在线观看| 韩国电影韩国少妇勾引水电工| 碟中谍1未删减版资源| 古墓丽影法国版女版在线观看| 保姆119全集下载| 法国伦理电影在线观看高压监狱| 电视剧誓言无声| 喜迎十大手抄报简单又漂亮| 步步电视剧| 还珠格格第三部40集免费播放视频| 晚安为我而眠的妹妹全集免费看日本 | 多地限制教师非正常流动| 美容院:待遇服务5中文版| 和老师在她家啪| 斯巴达第四季39集剧情| 《父母爱情》续集| 恋恋不忘全集在线观看| 钟馗传奇| 庐山恋电影| 木子檀檀子剧免费观看| 皮囊之下在线观看| 男女一起愁愁愁在线观看电视剧| 赵四打架| 神话 电影| 罚罪免费观看| 我们的当打之年| 荣誉守则2012版在线播放 | 盛唐风流电影免费观看国语版| 电视剧欢乐颂1全集完整版在线观看 | 小生怕怕粤语| 洛阳美食节| 西班牙掌中之物第一季在线观看| 解药动画片全集在线观看| 意大利电影《情迷2》的剧情简介| 杀手阿一| 满清十大刑酷 快播| 钟馗电视剧| 约束之地| 摩伦理剧爸爸给我播个种吧| 上海圣诞节| 沉迷公5全集在线观看免费| 漂亮书生免费观看| 千山暮雪续集48集免费观看| 瑞幸咖啡线下点单存价差| 大嫁风尚免费观看全集完整版高清| 陪部长出差的电影叫什么名字| 绝对权力在线播放全集| 美味快递员2特殊待遇| 凌迟女犯| 星光灿烂电视剧| 刚结婚和部长一起去出差韩国电影| 爱情醒来了| 爸爸的种子在线| 灵魂摆渡 电视剧| 痞幼照片里的瓜| 《极乐宝鉴2》电影观看在线| 河南卫视华豫之门| 孝庄秘史土豆网| 月亮女王| 金梅瓶之爱奴1在线观看| 变形金刚2 720| 国产大爆乳大爆乳在线播放| 我的波塞冬| 超神学院第7集| xl司令第一季全集免费观看在线播放| 无间电视剧全集40集免费观看| 宫心计电视剧| 我是余欢水 电视剧| 相爱概率论泰剧免费观看| 三年大片免费观看完整版在线观看| 长歌行免费观看完整版| 华丽的外出电影在线| 牙医姐妹在线观看免费完整版| 电影在线观看完整版高清免费观看| 最近妹妹样子有点怪真人电影原声| damimi| 善良的小嫂子| 韩城市| 《初尝禁果》电影| 红楼梦金玉良缘| 暴躁老妈86集全免费观| 雾蓝色的雨后晴天| 1995年意大利版《人猿泰山》hd| 《蜜桃成熟时33d》无删减| 血溅十三号警署| 变身超人 电影| 火线出击电视剧| 凌云壮志女版(法国)| 春宫电影人| 十七岁的天空吻戏| 迷你世界传送门有几种| 海员记录在杜苏芮影响下航行遭遇 | 高清《何以笙箫默》电视剧免费| 美国版本女儿国电影| 王的女人下载mp4| 军事李莉的爱人是谁| 守龙者电影| 勇敢游戏| 销售的销售秘密HD| 且试天下第45集全集免费| 电影《法国空乘4》免费| 暖春电影高清| 指尖传出真挚的热情| 银瓶梅电视剧第5集电视剧在线观看泰国版 | 奔跑吧13季小鬼王琳凯| 程颖婕个人资料| 《双女任务》完整版电影| 李丽珍爱的精灵| 岁末一过举世欢打一四字祝福语| 夸克满天星在线播放国语版| 雷军自曝37岁已财务自由| 特邀外卖员| 妓院十二房| 雷神公司副董事坠机身亡| 坎贝奇完整版| 电视剧黎明破晓前| 刘宝瑞解学士全集| 帕丁顿熊3| 《扫黑风暴》免费观看完整版电视剧| 瓜达卢佩的玫瑰在线免费观看| 红字 韩国| 年幼嫂子| 谢孟伟《无主之城》在线观看| 云岭茉莉白是什么茶| 禁忌满天星帕克| 我的减肥日记| 八戒八戒在线观看免费高清4| 新来的瑜伽教练免费| 同桌上课揉我下面好湿H| 女子护卫队满天星版在线播放| 中国警花| 后宫在线观看| 《天字号监狱》在线完整版免费观看| 大地中文在线观看免费高清电视剧| 长安三万里电影免费观影| 二阶堂在线视频| 电视剧末路1997免费观看完整版| 高清泰迪熊 第二季| 特邀送餐员3| 光荣时代| 国产小姑娘电视剧| 一人之下电视剧第二季| 金粉世家电视剧免费观看| 风流少年唐伯虎2| 布兰迪《军事不当行为》2016免费播放| 仙剑 电视剧| 张杰女儿小名已被抢注商标| 八戒八戒免费高清完整版| 超神学院第三季| 成全免费动漫| 彬彬来了免费观看完整版| 黑帮老大歌我的365天| 满天星麦乐迪《女超人》免费播放| 电视剧老女人6| 墨江| 你养我小我养你老全集免费观看| 又拐个皇帝回现代 电视剧| 巨茎进入李淑芬视频| 密战电视剧在线播放| 广州大学城攻略| 秘密搜查官陷落JULIA| 黑帮大佬和我的365天在线观看| 逃犯入室暴行电影免费播放 | 法国女超人在线观看完整免费| 高清《余罪》全集观看| 破冰电影完整版在线观看| 我年轻瘦子9| 教官的小妖精又凶又残电视剧| 美国电影需要爸爸播种子2| 傻猫大战三小强| 奥巴马长城| 囧妈哪里可以看| 斩神15集全集免费看完| 禁忌满天星| 只因单身在一起| 十七岁电影完整版| 战狼5欧美版免费观看完整版国语百度 | 台湾A片巜豪妇荡乳3| 大侠霍元甲| 美国伦理《生殖按摩》在线播放| 追光的日子免费观看| 大染坊电视剧24集免费观看| 义子侵犯电影看| 甜蜜的邂逅玄爷短剧免费观看| 老公原谅我电视剧免费观看| 需要爸爸播种手机播放美国电影的软件 | 原纱央莉bt种子| 安吉拉怀特在线观看| 爸爸在这儿| 王世坚《没出息》原版| 亲爱的妈妈4无删减版| 樱桃红了电视剧38集| 淫乱加班维修工电影| 泰剧星月情| 海阳市| 失乐园电影在线观看| 石原爱种子下载| 酒店服务员电影免费观看| 一千滴眼泪电视连续剧在线观看| 我的好妈妈8高清中字在线观看| 《有罪之身》| 孤岛惊魂电影在线观看完整免费高清 | 逆袭的第二名| 伊波拉病毒2国语版免费观看| 三家店于魁智| 还珠格格第3部全集| 高压监狱2完整版在线播放| 高清《天注定》电影| 斗罗大陆免费完整观看171集| 纯白之恋片尾曲| 第十九层电视剧| 向风而行免费观看全集| 别墅轮换5攻略免费观看| 电视剧 追踪| 拉进门就开始强吻| 小飞象电影| 法国《互换游戏》| 帝皇侠大电影| 韩剧 白雪公主| 胭脂第45集电视剧在线观看| 雪中悍刀行全集观看| 善良的秘书法国空乘| 宝岛电影| 春夏秋冬又一春 (2003)| 李梦:张隆每个月都有按时付钱| 束缚游戏在线观看完整免费版 | k8s经典版(老经典版)全集免费| 《特殊游泳课》免费观看| 埃及性xxxx狂欢| 年轻的继坶5免费观看| 她说爱情已迟暮 小说| 姜敏宇《游泳池的工作2》| 无限复活国语高清| 《美容窒:特殊服务3》| 情色姐妹| 不离婚的男人完整版| 美容院:待遇服务5hd| 卜案演员表| 于正版神雕侠侣| 《性生话电影| 我爱男保姆电视剧35集在线观看| 釜山行2在线观看免费观看完整版| 双人调情按摩术韩国在线观看 | 篠田步美| 私人女性监狱电视剧完整版观看免费 | 双女任务完整版免费观看| 《赘婿2》在线观看免费| 福宝团宠:农家日常短剧全集 | 《帝国的毁灭》免费观看完整版| 整蛊王国语版在线观看| 蒙山县| 韩国三级丝袜销售在线播放| 女人花 电视剧| 好朋友们| 爱我几何无删减在线观看完整版意大利 | 免费韩剧| 保罗一家1-4美国版高清中字| 还珠格格越南版| 笑傲江湖高清| 食物链删除的片段原声| 三妹在线观看免费完整版| 大神同学想被吃掉 未增删 | 高清《判处勇者刑》电视剧 | 大神同学想被吃掉未增删有翻译 | 《血战冲绳岛》| 电影报道| 19岁大学生真人电视剧百度云| 波牛电影| 《梅根2.0》| 谢娜发文道歉| 19岁大学生免费观看电视剧美国 | 中森玲子| 惊魂游戏| 义姐是不是良| 彼岸岛豆瓣| 滑动门 电影| 酒店激战第10集的内容与解读| 泰国电视剧新娘| 维斯塔小镇家长会2免费观看| 献身舒淇| 外国电影《你的导师》原片| 伯虎为卿狂| 后宫甄嬛传19| 韩国伦理片女儿需要爸爸播种子的电影| 狙击蝴蝶电视剧全集| 电影身为人母| 牙医姐妹完整版在线免费播放| 午夜情缘| 寒武纪免费观看在线观看完整版| 健身房的激情| 强吻动漫| 康定情歌dj| 城市猎人韩剧高清完整版在线观看| 苏拉的失忆症在线观看| 刀尖上行走全集| 木府风云主题曲净土| 三年大片大全高清免费国语版| 一眉道姑免费观看高清| 泰剧在线观看| 老九影院| 法国空姐4艺术片| 黎明之前高清下载| 喋血江湖高清完整免费观看| 黑白配视频播放免费观看| 一只绣花鞋| 迷人的保姆免费观看| 《刺青》| 高清《梅根2.0》电影| 美国加州爆发大规模街头斗殴| 凶手还未睡完整版在线播放| 女保险销售4| 《冬日的什么呀,春日的什么呢》 | 大男当婚 优酷| 涞水县| 一边亲一边下奶免费视频| 金钱帝国粤语| 刺青之声| 我的女游泳教练| 少女免费版在线观看第6集| 盟约电影免费完整版在线观看| 让她降落下载| 韩剧办公室蓝色隐身帽子动漫| 猛士的士高第一集| 不要和陌生人跳舞全集| 金莲外传在线观看免费版电视剧全集| 入侵脑细胞2| 铠甲勇士刑天29| 寂寞电影| 巜饥渴的人妻与维修师傅| 丰满的女邻居在线观看| 杨光的爱情故事下载| 罗丽星克莱尔《X迷宫》| 偶然遇见的你| 黑暗天使萧淑慎| XL司令第二季真人版全集免 | 电视剧《父与子》| 向涟苍士献上纯洁未增删樱花| 年轻女保险销售员2| 《overflower》第一季动漫真人版| 女兵与暴行一版一印| 爱情导师在线观看| 男女生一起愁愁视频在线观看| 箭在弦上免费观看全集| 如果我不曾见过太阳第二季| 神话 电影| 维修工的艳遇电影免费| 1987娃娃脸完整版| 电视剧六姊妹剧情| xl司令第一季全集在线| 舞厅里的小姐被强奸电影| 《丈夫邀部长来家吃饭》日剧中文版2.| 反恐特警组:火速救援| 水手服饲养1小时42分原版视频| 左小青前夫| 撒玛利亚电影完整版在线观看| 心慌方2| 村妓播放| 光阴里的故事| 打开你会回来感谢我的在线播放| 四虎院影亚洲永久| 高柳家的花嫁在线| 无人区电影免费完整观看| 婆婆来了全集| 寻甸| 爱丫爱丫电视剧高清在线播放| 果宝特攻3动画片全集| 舒淇三级片灵与欲| 电影《女超人麦迪娜》免费观看高清 | 大染坊续| 《十七种幻想》电影在线观看| 我是你婶娘免费观看高清韩剧| 冲出亚马逊高清电影| 罗丽星克莱尔的经典电影| 怪谈餐馆优酷| 壹号皇庭3国语版| 致命速递3| 康体水疗1978原版电影| 密桃成熟时3dd| 游戏王gorush| 亲吻姐姐2| 法国女仆在线播放| 金瓶Z梅| 中华大丈夫电视剧| 风云十里洋场全集| 播放_女律师的堕落_经典片_高清_K8经典网| 火蓝刀锋 电视剧| 不完美的受害人| 一个好妈妈的D5申字中头| 后营露营无增减2季| 黑人RAPPER大全 顶级| 《咒术回战 第三季》| 淫间道| 灰姑娘动画片国语版2| 暹罗之恋完整版| 女超人HR板| 地球脉动纪录片中文免费观看| 《招魂4:终章》| 七号差馆| 斗罗大陆免费全集免费| 美味快递2在线观看免费版电视剧| 高清《沉香如屑》电视剧免费观看| 天使猎人| 芜湖市| 借爸爸的种子(美囯版)| 云南虫谷| 大侦探福尔摩斯电影| 被部长玩弄的秘书| 僵尸道长1高清全集| 张北县| 泰国租妻价格| 再见李敖| 我是处女座| 坎贝奇在线| 灯草和尚 bt| 舞出我人生2高清下载| 伦理《法国护士》| 经营婚姻电视剧全集| 琅琊榜风起长林| 文豪野犬第一季免费高清视频| 丈夫升职妻子被社长欺负剧情| 钢铁侠1国语版高清| 高清《姐弟恋》动漫免费观看全集 | 纳粹女人集中营惊天秘密| 长公主不可以| 非亲父子| 降魔的国语| 美国女儿国满天星在哪能看| 哈利波特1国语版免费观看完整版| 巨乳学院| 雨花石mv| 坎贝奇《无憾》在线观看| 绝命幽灵船电影未删减版在线观看 | 电视剧娘家的故事第三部| 三生三世枕上 书| 天外来客影视下载| 无憾坎贝奇电影完整版| 老师和学生高清HD| 小蜜蜂电影| 成龙running man| 日本JIzz| 环大西洋| 双雄电影| 残骸电影免费观看完整版| 哇嘎电影高清完整视| 水怪在线观看| 拒绝爆冷 大头王者归来打疯了 | 电影《意大利爱情》在线观看| 水润女人全免费高清电视剧在线观看完整版 | 一起愁愁愁免费观看完整版在线观看 | 人乳喂奶HD无中字| 游山西村的诗意| 秘密押运| xl司令第一季全集免费观看动漫 | 电影青苹果| 需要爸爸播种在线| 天涯神贴免费完整版| 西班牙情事| 霹雳大喇叭国语| 社长夫人用身补偿客户| 电视连续剧剑谍| 爱情悠悠药草| 酒店爆操| 漂亮的小姨韩剧免费观看完整版 | 性生交大片免费看淑女出招| 两人互换麦子3| 双鱼陨石在线观看| 超级接班人| 玉蒲团之玉女心经下载| 法国满天星《女飞行员》观看| 初恋夫妇ep7| 艺校的秘密| 速度与激情5国语版|