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

      主站蜘蛛池模板: 杀狼花全集在线观看| 欧冠决赛2022电视台直播| 陈子豪的个人空间| 牙医姐妹完整版在线观看| 糖心在线观看免费高清| 阴阳路之一见发财| 法国护士手机在线免费看| 刘涛衣服滑落| 年少有为不自卑| 电影《美味快递员2》| 桥隆飙2| 法国高压监狱3完整版| 花仙子名器系列| tobu8XXⅩHD440 | 淘宝公布2023年度丑东西| HD版《激战丛林》完整版播放_百度搜| 霍元甲郑伊健| 快乐再出发综艺| IPX-602 Ipx602 沉迷于【恶女教师】嫉妒的不穿内裤诱惑女教师的异常私通。 明 | 播放电影孕妇在线观看免费| 新网球王子4| 电影《姐妹牙医》正片视频| 老和尚与小姑娘的人物性格| 特邀送货员 电影| 按摩院里的黑人按摩师| 《法国空姐2019法版》满天星中文| 电视剧结婚进行曲| 逆天改命:锦绣嫡女短剧全集| 需要爸爸播种子在线观看中文字幕| 规章制度的作用| 《花与蛇·牙医之绳》| 喝女王的圣水| 奥特曼大电影国语| 迷人的小婊子| 食人鱼3dd快播| 医学调查电视剧免费观看| 致命快感| 《浪漫女家教》-电影-电影时期| 500星级之341电影完整版 | 好姐妹日本完整观看| 莲花楼电视剧在线观看全集免费播放| 电影爱你几何在线观看免费| 花的勇气ppt| 田耕纪免费观看全集完整版电视剧 | 黑道大佬第2季免费观看| 日漫图书馆的女朋友动漫免费观看高清电视剧第五集 | 美丽的侯莎1980意大利语| 锦绣繁华电视剧免费观看全集高清 | 大清神捕 电视剧| 三揭皇榜| 丫鬟侯府主母:逆袭成功全集免费| 公浮手完整版高清| 无间道1| 电视剧胜算全集免费观看| 男人女人一起相愁愁愁电视剧在线观 | 霹雳惊涛| 告诉我你想要什么在线观看电影| 横店马拉松| 小娘惹在线观看| 透光的树| 战狼6免费观看在线播放完整版| 恋恋维纳斯泰剧| 黑白配高清国语免费观看视频| 春欲未删减版dvd| 战狼6国语版免费观看| 国模夏馨雨| 爸爸的种子高清免费版电视剧混乱公交车| 沈殿霞追悼会| 歼灭天际线1-112集免费| 天龙八部40| 鬼吹灯之天星术日语| 《童军手册之僵尸启示录》 | 星汉灿烂西瓜免费观看| 优酷 火影| 潜伏站长| 新来的瑜伽教练| 无尽的尽头电视剧免费看的| 新金银悔1一5普通话版剧情介绍| 电影网站在线| 别墅互换在线观看| 狂怒沙暴国语免费观看2023国语| 第十大道和狼| 电视剧麻雀全集在线观看| 怀念战友原唱歌词| 妻子替弟还债全集免费观看| 《无能的丈夫》日剧| 豆瓣电影250| 大侦探波罗第十二季| 年轻的家长3| 男女愁愁愁愁愁高清| 百战天龙| 八戒,八戒网剧在线观看7 | 神探夏洛克 第四季| 西城男孩最好听的歌| 蜡笔没了小新| 欢乐之都| 丧尸出笼血脉| 河南豫东红脸王| 我的好继拇HD| 天若有情 刘德华| 魔女的考验日语| 密室大逃脱第六季在线免费观看| 天字号监狱电影免费观看全集 | 战狼6免费观看全集高清版| 离婚女人电视剧| 爱丫爱丫免费版电视剧| 快递员的美味2中字在线观看| 难得一身好本领| 朝云暮雨 电影| 牙医姐妹在线| 被害空姐| 啄木鸟壮志凌云法版免费观看完整版| 角头大姐| 战狼6免费观看全片| 画满一张纸| 《肉蔻之香》法国剧情解析| 《96分钟:列车爆炸案》 | 迪加奥特曼国语版全集爱奇艺| 青青河边草观看| 大闹天宫| 漂亮的保姆1完整版免费观看| 汉江怪物国语| 宝洁回应香皂嵌刀片| 《需要爸爸播种子》免费观看在线播放_HD/未删减_1080P高清电影完整版 - 天堂 | 中字HD为丈夫的下属的成就| 菲梦少女第二季全集免费| 金银悔5普通话国语版免费| 金瓶梅在线观看免费版电影 | 爆裂点电影免费观看完整普通话 | 站着再来一次30集全免费高清| 高清抢钱女王团| 《丈夫邀部长来家吃饭》日剧部长看| 爱在春天电视剧| 飞机上的性服务免费看| 大侦探霍桑免费观看| 罗丽星克莱尔性迷宫在线| 史丰收速算法下载| 一口气看完雪中悍刀行| 三体电视剧剧情介绍| 中华大丈夫高清| 牛鞭插入女人身体| 我的老婆是学生会长第一季| 嗨放派第一季完整版全集| 正阳门下电视剧36集全免费| 漂亮娇妻被社长驯服| 哈利波特1普通话版| 妖怪少女石榴| 坎佩奇在线播放免费观看| 新版寒冰出装| 特殊保险推销员中字| 宁夏卫视节目表| 动漫原神高清免费观看| 普罗米修斯高清| 公之孚手中字50| 赵本山小品相亲2| overflower动漫第一季在线观看完整版8集 | 人猿泰山《激战丛林》电影在线观看| 死亡笔记电影| 天美影院电视剧在线播放| 大地资源高清在线视频播放免费版| 漂亮的保姆3韩国电影| 小欢喜电视剧1-50集免费观看| 初恋时间第一集在线观看免费高清| 泰剧甜心派| 喷出巨量精子系列在线观看| 韩国午夜剧场《分娩按摩2》HD免费在线观看高清完整版-如意影院 | 金毛动漫库| 182822282午夜寂寞影院| 《家弑服务》| 巜被按摩师按摩并做爰| 猫和老鼠东北方言版| 《金花瓶》免费观看完整版电视剧| 下女qvod| 韩剧《面试2》观看完整视频 | 掌中雀电视剧在线观看全集免费| 陈雅伦被躁120分钟电影| 剑侠电视剧全集| 法国伦理高压监狱2| 《火蓝刀锋》| 女超人 满天星版麦乐迪马克斯 | 幸福触手可及百度百科| 女子私人监狱美国版电影免费观看全 | 电波女与青春男op| 唐宫美人天下| 爱我就别想太多在线观看电视剧| 双肥临门| xl司令全集在线观看免费播放 | 司法| 电影城市猎人| 高清新干线惊爆倒数| 《诱人的岳母| 小伙子爱上隔壁女邻居电视剧| 销售的销售秘密免费观看高清版| 许我耀眼在线免费观看| 美国粉红大白菜| 浓从暗中来| 一起看流星雨第二部全集| 孤零飘落燕| 白色橄榄树免费在线观看完整版| 陆判仙根全集免费观看| 好心作怪粤语24| 《姐妹牙医》完整版视频在线 | 我的老婆是大佬3高清 | 鬼FU全集无删减在线看风车| 狄仁杰第一部完整版全集| 电视剧梦中的那片海| 师傅日徒弟的场景| 动感之星妖精168集在线看| 公主与青蛙电影| 妈妈屈身儿子同学电影 | 女儿的妈妈| 奇妙的发型屋中字韩国| 阿尔梅洛| 特邀外卖员| 第八个嫌疑人| 浮公之手中字7| 008电影网| 浪漫女家教在线观看| 台版1987渔夫荒野蒋玲玲| 诺言郭有才歌曲| 韩国电影《教室爱欲| 甜蜜惩罚我是专门看守所宠物真人 | 我和我的家乡免费观看高清 | 三年电影在线手机免费看| 《艋舺》| 危机迷雾| 大丫鬟在线观看| 潜伏全集| 人民万岁电影| 动感之星妖精第139集在线播放| 行尸走肉第七季第五集| 甄嬛传63集剧情| 黑袍纠察队第一季无删减完整版| 王老五的艰难爱情| 九州 天空城| 龙啸短剧全集免费观看 | 情迷六月花 电影| 谢娜康辉| 于小慧主演的电视剧| 《长津湖》免费观看完整版高清| 佛光山早课| 斯巴达女勇士hr版 在线观看| 高清《天气之子》电影免费看| 妈妈的学生5字id| 春宫电影人| 杨敏思版1-5电视大结局在线观| 灵与肉台湾| 摇滚年代| 被义子侵犯不敢出声电影在线观看| 恋爱吧食梦君| 两公升的浮手中字| 没落贵族琉璃川| 死亡笔记迅雷下载| 丰满的女学生在线观看| 昆明长丰中学| 龙日一 你死定了2| 青阳县| 长安的荔枝有电视剧吗| 青柠在线观看免费高清电视剧下载| 袁阔成水泊梁山| 《女超人》满天星| 世界大战100年全程实录 | 女房东的秘密| 娱乐前线| 欧洲股市开盘暴跌| 韩剧《我的女朋友》| 陈宝莲《满天星》播放| 毒战1韩版免费完整观看| 详情: JUL-945 在没有丈夫的平日里,我被打工归来的无与伦比的岳父强奸,直到我 | 好男人好资源好电影TV| 萧亚轩mv| 爱丽丝喜欢的书籍| 最强大脑第九季| 踏血寻梅完整版电影观看国语| 电视剧门当户对| 《正人君子》完整版电影在线观看| 贞洁美妇沦陷| 《房屋销售员》| 49ai| 呼啸青春| 梦在海这边电视剧| 王多鱼打朴克| 光影电视剧| 坎贝奇三部曲免费无删减在线观看| 你是我的花朵mv| 一起愁愁愁免费观看完整版电视剧 | 《高压监狱》免费完整版| 插曲的痛30全集免费观看高清版在线观看 | 法国空姐11完整版第一部| 庆余年手机免费观看| 吴绮珊香醇绣感1999版| 刀客家族的女人 电视剧| 美国伦理片男按摩师| 奔跑吧兄弟第四季第七期| 黑社会之龙城岁月| 被凌辱的妻子在线观看| 月上海电视剧全集在线观看| 插曲的痛免费播放完整中国| 教官的小妖精又凶又残电视剧| 需要爸爸来播种 在线播放| 新少年包拯电视剧免费观看| 82板杨敏思版本1-5| 陈奕迅金曲奖| 少年包青天翻龙劫| 嗨皮兔儿歌小兔子乖乖| 小蜜桃四| 《房屋销售的秘密》2| 爱我就别想太多全集在线| 花子vs最强驱魔师免费观看| 求婚大作战 韩剧| 庆余年2第52集| 鸡毛飞上天58集完整版免费观看| 武当道长谈马保国被ko| 电影热搜| 强奷皇后娇呻浪吟前后夹击| 两个世界泰剧双男主电视剧在线看| 幸福最晴天 电视剧| 周星驰:佩佩姐 江湖再见| 带娃虐渣超厉害:神级奶爸全集免费| 老爸的爱情全集在线观看| 《拳击手2》在线观看| 中国五大战区司令都是谁| 娘家的故事第3部| 七种贱粤语高清免费观看| 荷尔蒙6在线观看免费版| 八佰壮士| 女销售卖房子视频| 梨泰院踩踏事故亲历者发声| 电影《美容院的特殊待遇》纹身女演| 鬼挡路3| 婆婆和妈妈第二季在线观看| 哈利波特与魔法石国语| 东方卫视广告| 韩剧《不懂女人》全集完整版 | 美猴王电影| 黄志忠《国家行动》| 雪中悍刀行40集免费观看| 娘心电视剧全集土豆| 壮志凌云法国版满天星完整版| 我们一起来看流星雨| 《房奴试爱》开头原声| 繁星四月电视剧| 金银悔1至5集免费普通话| 农民伯伯乡下妹完整版| 艰难爱情全集在线观看| 电影《急诊护士》在线播放 | 捉鬼有限公司| 新金银悔5普通话版免费观看| 江桥决战| 插曲的痛60集全免费播放剧情介绍| 铠甲勇士刑天29| 啄木鸟《女拳击手1满天星版》| 《街头顽童》| 360大佬爱上我第二季全集| 晚娘百度影音完整版| 潘金梅三级做爰| 秘书在办公室被躁BD在线小说| 美国版5娃娃脸| 龙猫电影完整免费普通话在线观看| 双女任务电影免费观看全集完整版| 麻生希的种子| 坏女人短剧全集免费观看| 弹丸论破13| 教授和他的女大学生| 爸爸需要种子| 李茂换太子电影在线观看| 渔夫荒野史记1988版| 纯真年代电视剧全集| 免费看斗罗大陆| 3d肉蒲在线观看| 二小放牛郎| 壮硕军警猛男高H| 不明身份百度影音| 韩国电影遥控器控制老板| 繁华落尽电视剧| 《驯服小峓子》2在线观看| 轩辕剑之天之痕在线观看| 大明风华电视剧| 高清怦然与你| 力王之王国语免费观看完整版| 大江大河第3部53集免费观看| 咒怨1日版| 《和讨厌的部长出差》大结局免费看| 经典兔子舞曲| 社长妻子大物社长秘书是谁演的 | 中国达人秀街舞卓君| 丈夫属下占用妻子电影| 阴阳少女:见鬼捉鬼全集免费| 《隔山有眼3:起源》免费下载| 偷偷藏不住免费完整版电视剧| 插曲的痛第60集全集在线播放| 青柠在线电视剧免费观看第二季| 一起愁愁愁30分钟免费观看电视| 梦魇绝镇第一季免费观看完整版| 迷人的保姆5线观高清| 北北北砂云缨巡街免费观看| 《伤爱罪》电影在线观看| 法国电影《农场保卫战》在线观看| 法国电影《女流氓》的剧情简介| 艾克赛德| 星客来尔迷宫| 星际迷航2009| 壮志凌云杰西简在线观看| 有一种爱叫无法弥补| 《品味人生无憾》坎贝奇英文| 有你才幸福全集| 劫中劫分集剧情介绍| 打开生活的正确方式剧情| 终极蜘蛛侠毒液| 欧美激情小说在线观看| 花田喜事2010粤语| 《裸乳按摩》在线| xL司令第一季马赛免费观看高清| 兰若寺电影| 赵氏孤儿电影| 莫言作品丰乳肥臀| 万古仙王200集完全版| 高压监狱在线观看完整免费高清原声满天星2019法国 | 《雪中悍刀行》第2部| 琉璃美人煞电视剧在线观看| XL司令印度| 美国式禁忌4百度影音| 369你懂的视频| 漠风吟电视剧在线观看| 缘之空在线观看动漫高清免费| 巨鳄风暴完整版电影免费观看 | 天使即将来临续集| 美国往事 在线观看| 亲爱的客栈2| 黑夜中的她短剧免费观看| 女保险公司推销员8中字的特点| 倩女幽魂在线观看| 无上魔尊短剧免费观看| 济南政府采购网| 谭咏麟94演唱会曲目| 我算卦超准:算命小神仙短剧全集| 99热视| 泰剧是你| 秋瓷炫生死决断在线观看| 男和女一起愁愁愁电视剧免费| 四虎院影亚洲永久| 升旗仪式流程| 丁度电影| 束缚游戏全集| 十七岁高清完整版在线观看免费| 电视剧康熙王朝全集| 精灵宝可梦樱花免费观看| 小黄飞斯卡拉| 日本电影朋友还债的麦子| 回家诱惑| 贼王之王完整版免费观看| 密爱电影| 都市狂少:纵横都市无人敌全集免费| 女版战狼6免费播放| 假期历险记| 2012电影在线观看神马影视| 酒店1-90集免费观看高凊| 王贵与安娜电视剧免费观看| 《性的暴行》日本电影| 意大利电影《美人》| 心战电影百度影音| 谈判官电视剧免费观看完整版| 巴啦啦小魔仙之音符之谜免费观看| 和部长出差电影中字| 120天索多玛电影在线观看| 八戒满十八全集免费看| 试看120秒小视频动态图| 廉政行动2011电视剧| 变形金刚2国语版免费观看| 我爱喵星人免费高清观看完整版| 睫毛膏3美国1983| 赌博默示录第三季| 惠水县| 权欲武力| 黄金渔场130605| 地狱洞电影完整版在线观看| 《炸天小姐》电影在线观看| 需要爸爸的种子2美国电影伦理片| 我朋友的瘦子9| 拳皇八神庵| 徐小凤经典歌曲| 未知| 诛烬枭亡 电影免费观看| 母亲爱上儿子同学日本电影| 《公的浮之手中字》免费| 二十一世纪性格爱情指南俄罗斯| 来了在线观看| 电视剧天眼| 《少女大人》在线观看| 美英空袭也门:夜空升起巨大火球 青柠在线观看免费高清电视剧下载 | 毒液:致命守护者免费完整版高清| 一生无悔歌词| 情满四合院完整版全集| 特殊按摩3免费观看| 《我的四个姐姐》动漫第一集| 《安娜和父亲》麦乐迪| 渗透全集| 韩国七公主| 竹夫人完整版| 电视剧茶马古道| 肯德基玻璃门| 包青天之打龙袍| 销售的销售秘密6HD中字2017| 刀郎新歌翩翩| 孤注一掷高清HD在线播放| 只是结婚的关系电视剧免费观看| 江照黎明| 莫莉3特别的酒店| 霸王别姬 高清| 三个不道德的女人| 二十一世纪性格爱情指南英国| 金瓶双艳完整版| 日本战狼10免费播放观看| 邻居同居| 法网阻击全集| 丰满学生美女电影| 《未婚妻的姐姐》电视剧在| 彭丹《蛇王波后》| 反黑路人甲粤语在线观看| 误杀3 电影 在线观看| .《奇怪的美容院2》| 跑男第七季| melodymarks女超人无删减免费播放| 食人神之山在线观看完整版| 需要爸爸种子 - 在线追剧| 渭河公园| 奋斗吧 少年在线观看免费完整版| 每天夜晚国语版| 赌博默示录第三季| 凌云壮志(欧美)满天星| 四面佛电视剧15集完整版| 唐探1900 电影| 加勒比海盗成人在线观看 | 大风杀电影在线观看完整版 | 郝板栗《千金与佣人》| 嗜血法医| 生死线电视剧全集免费观看完整版| 加勒比海盗成人版 在线| 被害空姐| 甜蜜罚罪无打马赛全集 | 《外卖员的艳遇》| 杨思敏版金瓶全集在线观看| 僵尸新娘| 由森奈奈子领衔主演| 直到黎明未删减| 男同桌含着我的奶边摸边做l| 僵尸道长1粤语| 反击第一季| 女儿的男朋友av| 意大利欲望| 布兰迪《不当军事行为》在线播放 | 强奸女护士| 甜蜜罚罪第二季真人版无打马赛免费| 猛兽侠1| 我爱hk开心万岁粤语高清| 人脉王韩剧在线观看星辰| 大器晚成在线观看| 韩国电影四个已婚妇女去按摩 | 艳星evelynlin大战黑人| 花与蛇1全集 影音| 泰莎的绣感1986| 光能使者国语版全集| 刀客家族的女人 电视剧| 侯门嫡女:谋略定乾坤全集免费| 俘虏之锁1-2动漫更新时间| 嫦娥六号在台湾火了| 最佳爱情国语版全集| 电视剧夫妻密码| 酒店1-5集在线观看免费| 华丽的外出电影韩国版在线观看| 拜登又双叒叕口误| 強暴處女1-12系列| 解药动画片全集在线观看| 红旗渠的儿女们 电视剧| 监狱医生| 都市猎人未删减完整版| 麻辣变形计2| 灰姑娘意大利满天星梅姨| 哈利波特免费观看完整版英文版| 坏蛋联盟电影完整版免费观看| 3d豪情字幕下载| 哇嘎嘎电影高清观看| 日剧轮到你了 免费观看| 女人花 电视剧| 茶山春色| 维修师傅的遇艳在线观看伦理片 | 替夫还债完整版电影| 豚鼠总动员| 龙骑假面骑士电影| 插曲的痛40集全集免费播放电影| 摸金校尉之九幽将军电影免费播放| 两不疑动漫免费观看| 电影《魔女3》免费观看国语| 西西里的美丽传说迅雷下载| 红楼残梦电影完整版免费观看 | 《家庭矛盾》麦乐迪在线播放| 修理工绝遇中文版| 致美丽的你第3集| 电视剧青年医生| 泰秘丽人会所| 美乃雀所有影片免费观看| 锦绣安宁免费全集完整版| 欧美满天星电影《maruzzella》是什么电| 禁忌魅惑| 山口玲子| 姐妹牙医电影在线| 红高粱大结局| 绝地枪王| 倔强的退魔师动漫里番| 开放的婚姻1972| 车168胖哥| 需要爸爸的种子伦理电影在线观看| 机器人危机| 绝种好男人国语| 夫妇隔着帘子按摩日本A片电影| 一酷到底| 应届毕业生预征对象登记表| 向井蓝之特殊治疗医护工作总结及心| 第一赘婿| 雪花神剑国语| 战狼9欧式少女电影| 《僵尸》| 雪中悍刀行第二部105集| 巜饥渴的人妻与维修师傅电影 | 《美容院:特殊待遇》| 恐龙大军| 拜托请爱我动漫完整版| 《罗丽星克迷宫》电影免费观看 | 千金归来全集免费| 爱情电影网 佐山爱| 掩耳盗邻 第二季未删减| 险恶的绣感完整版在线播放| 酒店1-90集免费观看高凊 | 香香公主| 公浮之5| 人世间原唱| 加勒比女海盗2观看高清完整| 日本空姐2019年在线观看| 蜡笔小新国语高清| 大蟒蛇2| 《别有用心的妻子》| 天龙八部钟汉良版43| 那年花开月正圆迅雷下载| 《杨贵妃秘史》在线| 老板的女儿满天星版叫什么名字| 鬼娃娃花子 高清| 仙逆104全集完整正版| 涟源市| 女警被强奷未删减版| 行运一条龙 电影| 灵幻新娘| 铁石心肠第二部| 《特殊飞行》免费观看| 中餐厅7| 韩国电影禁止的爱完整版在线观看| 豹女完整在线观看| 日本战狼6国语| 寒战2粤语| 爱情前规则全集| 登陆之日电影| 虎兄虎弟 国语| 小猪佩奇的视频| 《睫毛膏4》美国电影在线观看| 最熟悉的陌生人免费观看完整版| 路南柯歌词什么意思| 19岁大学生免费观看电视剧 | 日冕之恋泰剧免费观看| 武媚娘传奇范冰冰| 少女6少女大人演员表高清版| 辉哥方舟生存进化| 中国好声音直播现场| 马鞍山市| 爱你几何完整版90分钟| 难哄电视剧观看全集在线播放| 黑夜造访| 壮志凌云满天星免费看| 让子弹飞无删减完整版谍战迷| 黑帮大佬和我的365天未删除版本| 美容院:待遇服务5hd| 乡村爱情变奏曲高清| 《除却巫山》无删减版| 陈雪凝回应抄袭汪苏泷| 恋爱男孩泰剧| 修理工的艳遇三级片| 莆仙戏二团| av档案| 凌云志志(法国)满天星在线看| 哈尔滨夜店| 先结婚后恋爱 电视剧| 出差被前男友欺负中文| 日剧恋爱补给品| 黑暗圣经1| 哈利波特5百度影音| 战狼9加拿大版高清版| 野花高清1在线观看免费| 方子传免费观看| 《她被搬运工侵犯》在线| 战神王妃:夫君守护全集免费| 无敌风火轮在线观看| 墨水心下载| 战狼8姐弟国语高清免费看 | 谁是凶手豆瓣| 黑人大战俄罗斯妞| 短剧网剧免费观看| 皇宫宝贝| 水电工的艳欲| 美剧《真探》第一季免费观看全集| 猛兽侠下载| 《莫莉特别的酒店》免费观看 | julia最好看的一部| 朱莉安妮《售楼女王》在线观看| 匹夫百度影音| 《雪中悍刀行》| 父辈的荣耀电视剧| 盛夏猎户座| 品色AV| 周生如故在线| 女机器人全集高清免费观看| 天空战记国语| 下北阳光灿烂的日子| 王国北方的阿信| 沙漠伏击电影免费观看| 吴健版《农民伯伯2》电影免费观看http | 饥饿的阿姆6高清版下载 | 龙兄虎弟国语高清| 亚洲激情文学| 都市护花:退役兵王短剧全集| 怡红院在线 视频免费| 《忠者无敌》电视剧| 继拇想上我HD中字| 《咒》恐怖电影完整版在线观看| 美国ZOOM人狗视频| 酒店1-90集在线观看免费高清| 《追龙》电影| 韩国禁令啥意思| 功夫熊猫3 电影| 女主麦乐迪在线观看| 最高激情| 迷人的保姆3线观高清| 战狼6免费观看全部下载高清| 《高压监狱》免费完整版| 电视剧红妆| 垂涎15集| 明天我不是羔羊电视剧| 加菲猫大电影普通话| 奇妙的发型屋2免费播放| 马大帅2在线观看免费完整版高清| 西西里的美丽传说高清| 《渔夫荒淫史在线播放| 旖旎婚色短剧大结局免费观看全集| 生化危机 影音| 越南版的《性的暴行》电影| 风筝电视剧免费观看| 暮光之城2| 《新入职的女员工》全集| 纵横四海| 合约变真爱:契约影后影帝短剧全集| 男按摩师影片| 屠宰森林| 芳龄十六| 《女超人麦乐迪》| 派对第二季全集| 女生按摩胸部电影免费观看| 微笑pasta全集| 艳汉3在线观看| 青春草免费在线视频| 电视剧薄冰| 战狼9姐弟完整版免费看| 甜蜜惩罚免费观看完整版| 朋友的姐姐线观高清3中语| 太仓市| 翁佳娜雅三级在线| 天地争霸美猴王全集高清| 碟血弧岛| 97免费观看在线观看电视剧 | 欲望之屋2:甜美情事| 河南电视台法制频道今天7:50| 家事如天电视剧| 三级剧情片| 瓜达卢佩的玫瑰(原版)在线观看 | 大生意人40集免费播放最新章节| 《女员工的滋味》| 三年成全影视全集| 高清《禁忌的恋爱关系》在线播放| 小call 宅之小恶魔| 英超| 欲乱情迷电影| 燃冬电影高清在线观看免费| 需要爸爸播种英文版本| 300勇士:帝国崛起未删减版| 生活有点甜 电视剧| 美国式禁忌睫毛膏4完整版| 女朋友的妈妈2英文字母| 哭悲医院五人干了啥| 高清《致命游戏》免费观看| 二阶堂梦磁力| 乔布斯传电影| 一念永恒第三季在线播放| 维修师傅的艳遇在线| 手术直播间在线看免费| 神奇女侠第一季| 唐伯唬vlog在线观看免费版| 性解密西瓜| 晴雅集免费观看完整版在线西瓜| 西部通缉令2015未删减版| 甄嬛传奇艺网| 东方之珠之风流家族| 消失的她完整版高清免费观看| 美国电影不忠| 欧式少女第16集最新消息| 养生馆男在线观看完整版电影 | 俄空姐3| 停用人造反式脂肪| 顶级人生第二季13集免费观看全集| 康熙来了 胡夏| 高压监狱2019法版完整版| 派对和谎言在线看| 僵尸医生国语优酷| 叶子楣《极乐宝鉴》电影在线观看| 上帝也疯狂1电影免费观看完整版 奇迹少女第三季免费完整版 | 黑名单第三集| 731恐怖女体实验| 一场风花雪月的事下载| 需要爸爸的种子伦理电影在线观看| 高清《豪妇荡乳》无删减版在线观看| 以你为名的青春电视剧免费观看| 地龙宝宝| 赖汉的幸福生活| 入室暴行国语免费看| 唐朝禁宫秘史电影| 阿里拳王| 伊波拉病毒2HD国语版免费| 柯南纯黑的噩梦| 我在你的未来吗免费观看完整版| 《课后记忆》完整版| 台湾版,小凤新婚| 小呆augus| 世界奇闻怪事图片| 长月无烬电视剧全集免费观看| 鞍海快客车祸| 《特殊牙科诊所》完整版| 爸爸当家综艺完整版免费观看| 情陷夜中环2粤语| 婚后的诱惑| 以家人之名电视剧免费观看西瓜| 中文字Dl幕岳 和女胥A| 远征军电视剧| 美国队长4在线观看| 想你21集| 白峰美羽女教师无删减播放 | 罪恶王冠my dearest|