精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

分析Java類加載全過程

開發 后端
一個Java文件從被加載到被卸載這個生命過程,總共要經歷4個階段,那么是哪4個階段呢?下面作者將詳細的給網友解答……

今天去涉獵了一下類的加載的過程,現在也總結一下:

一個java文件從被加載到被卸載這個生命過程,總共要經歷4個階段:

加載->鏈接(驗證+準備+解析)->初始化(使用前的準備)->使用->卸載

其中加載(除了自定義加載)+鏈接的過程是完全由jvm負責的,什么時候要對類進行初始化工作(加載+鏈接在此之前已經完成了),jvm有嚴格的規定(四種情況):

1.遇到new,getstatic,putstatic,invokestatic這4條字節碼指令時,加入類還沒進行初始化,則馬上對其進行初始化工作。其實就是3種情況:用new實例化一個類時、讀取或者設置類的靜態字段時(不包括被final修飾的靜態字段,因為他們已經被塞進常量池了)、以及執行靜態方法的時候。

2.使用java.lang.reflect.*的方法對類進行反射調用的時候,如果類還沒有進行過初始化,馬上對其進行。

3.初始化一個類的時候,如果他的父親還沒有被初始化,則先去初始化其父親。

4.當jvm啟動時,用戶需要指定一個要執行的主類(包含static void main(String[] args)的那個類),則jvm會先去初始化這個類。

以上4種預處理稱為對一個類進行主動的引用,其余的其他情況,稱為被動引用,都不會觸發類的初始化。下面也舉了些被動引用的例子:

  1. /**  
  2.  * 被動引用情景1  
  3.  * 通過子類引用父類的靜態字段,不會導致子類的初始化  
  4.  * @author volador  
  5.  *  
  6.  */ 
  7. class SuperClass{  
  8.     static{  
  9.         System.out.println("super class init.");  
  10.     }  
  11.     public static int value=123;  
  12. }  
  13.  
  14. class SubClass extends SuperClass{  
  15.     static{  
  16.         System.out.println("sub class init.");  
  17.     }  
  18. }  
  19.  
  20. public class test{  
  21.     public static void main(String[]args){  
  22.         System.out.println(SubClass.value);  
  23.     }  
  24.       

輸出結果是:super class init。

  1. /**  
  2.  * 被動引用情景2  
  3.  * 通過數組引用來引用類,不會觸發此類的初始化  
  4.  * @author volador  
  5.  *  
  6.  */ 
  7. public class test{  
  8.     public static void main(String[] args){  
  9.         SuperClass s_list=new SuperClass[10];  
  10.     }  

輸出結果:沒輸出

  1. /**  
  2.  * 被動引用情景3  
  3.  * 常量在編譯階段會被存入調用類的常量池中,本質上并沒有引用到定義常量類類,所以自然不會觸發定義常量的類的初始化  
  4.  * @author root  
  5.  *  
  6.  */ 
  7. class ConstClass{  
  8.     static{  
  9.         System.out.println("ConstClass init.");  
  10.     }  
  11.     public final static String value="hello";  
  12. }  
  13.  
  14. public class test{  
  15.     public static void main(String[] args){  
  16.         System.out.println(ConstClass.value);  
  17.     }  

輸出結果:hello(tip:在編譯的時候,ConstClass.value已經被轉變成hello常量放進test類的常量池里面了)

以上是針對類的初始化,接口也要初始化,接口的初始化跟類的初始化有點不同:

上面的代碼都是用static{}來輸出初始化信息的,接口沒法做到,但接口初始化的時候編譯器仍然會給接口生成一個<clinit>()的類構造器,用來初始化接口中的成員變量,這點在類的初始化上也有做到。真正不同的地方在于第三點,類的初始化執行之前要求父類全部都初始化完成了,但接口的初始化貌似對父接口的初始化不怎么感冒,也就是說,子接口初始化的時候并不要求其父接口也完成初始化,只有在真正使用到父接口的時候它才會被初始化(比如引用接口上的常量的時候啦)。

下面分解一下一個類的加載全過程:加載->驗證->準備->解析->初始化

首先是加載:

這一塊虛擬機要完成3件事:

1.通過一個類的全限定名來獲取定義此類的二進制字節流。

2.將這個字節流所代表的靜態存儲結構轉化為方法區的運行時數據結構。

3.在java堆中生成一個代表這個類的java.lang.Class對象,作為方法區這些數據的訪問入口。

關于***點,很靈活,很多技術都是在這里切入,因為它并沒有限定二進制流從哪里來:

從class文件來->一般的文件加載

從zip包中來->加載jar中的類

從網絡中來->Applet

..........

相比與加載過程的其他幾個階段,加載階段可控性***,因為類的加載器可以用系統的,也可以用自己寫的,程序猿可以用自己的方式寫加載器來控制字節流的獲取。

獲取二進制流獲取完成后會按照jvm所需的方式保存在方法區中,同時會在java堆中實例化一個java.lang.Class對象與堆中的數據關聯起來。

加載完成后就要開始對那些字節流進行檢驗了(其實很多步驟是跟上面交叉進行的,比如文件格式驗證):

檢驗的目的:確保class文件的字節流信息符合jvm的口味,不會讓jvm感到不舒服。假如class文件是由純粹的java代碼編譯過來的,自然不會出現類似于數組越界、跳轉到不存在的代碼塊等不健康的問題,因為一旦出現這種現象,編譯器就會拒絕編譯了。但是,跟之前說的一樣,Class文件流不一定是從java源碼編譯過來的,也可能是從網絡或者其他地方過來的,甚至你可以自己用16進制寫,假如jvm不對這些數據進行校驗的話,可能一些有害的字節流會讓jvm完全崩潰。

檢驗主要經歷幾個步驟:文件格式驗證->元數據驗證->字節碼驗證->符號引用驗證

文件格式驗證:驗證字節流是否符合Class文件格式的規范并 驗證其版本是否能被當前的jvm版本所處理。ok沒問題后,字節流就可以進入內存的方法區進行保存了。后面的3個校驗都是在方法區進行的。

元數據驗證:對字節碼描述的信息進行語義化分析,保證其描述的內容符合java語言的語法規范。

字節碼檢驗:最復雜,對方法體的內容進行檢驗,保證其在運行時不會作出什么出格的事來。

符號引用驗證:來驗證一些引用的真實性與可行性,比如代碼里面引了其他類,這里就要去檢測一下那些來究竟是否存在;或者說代碼中訪問了其他類的一些屬性,這里就對那些屬性的可以訪問行進行了檢驗。(這一步將為后面的解析工作打下基礎)

驗證階段很重要,但也不是必要的,假如說一些代碼被反復使用并驗證過可靠性了,實施階段就可以嘗試用-Xverify:none參數來關閉大部分的類驗證措施,以簡短類加載時間。

接著就上面步驟完成后,就會進入準備階段了:

這階段會為類變量(指那些靜態變量)分配內存并設置類比那輛初始值的階段,這些內存在方法區中進行分配。這里要說明一下,這一步只會給那些靜態變量設置一個初始的值,而那些實例變量是在實例化對象時進行分配的。這里的給類變量設初始值跟類變量的賦值有點不同,比如下面:

  1. public static int value=123

在這一階段,value的值將會是0,而不是123,因為這個時候還沒開始執行任何java代碼,123還是不可見的,而我們所看到的把123賦值給value的putstatic指令是程序被編譯后存在于<clinit>(),所以,給value賦值為123是在初始化的時候才會執行的。

這里也有個例外:

  1. public static final int value=123

這里在準備階段value的值就會初始化為123了。這個是說,在編譯期,javac會為這個特殊的value生成一個ConstantValue屬性,并在準備階段jm就會根據這個ConstantValue的值來為value賦值了。

完成上步后,就要進行解析了。解析好像是對類的字段,方法等東西進行轉換,具體涉及到Class文件的格式內容,并沒深入去了解。

初始化過程是類加載過程的***一步:

在前面的類加載過程中,除了在加載階段用戶可以通過自定義類加載器參與之外,其他的動作完全有jvm主導,到了初始化這塊,才開始真正執行java里面的代碼。

這一步將會執行一些預操作,注意區分在準備階段,已經為類變量執行過一次系統賦值了。

其實說白了,這一步就是執行程序的<clinit>();方法的過程。下面我們來研究一下<clinit>()方法:

<clinit>()方法叫做類構造器方法,有編譯器自動手機類中的所有類變量的賦值動作和靜態語句塊中的語句合并而成的,置于他們的順序與在源文件中排列的一樣。

<clinit>();方法與類構造方法不一樣,他不需要顯示得調用父類的<clinit>();方法,虛擬機會保證子類的<clinit>();方法在執行前父類的這個方法已經執行完畢了,也就是說,虛擬機中***個被執行的<clinit>();方法肯定是java.lang.Object類的。

下面來個例子說明一下:

  1. static class Parent{  
  2.     public static int A=1;  
  3.     static{  
  4.         A=2;  
  5.     }  
  6. }  
  7. static class Sub extends Parent{  
  8.     public static int B=A;  
  9. }  
  10. public static void main(String[] args){  
  11.     System.out.println(Sub.B);  

首先Sub.B中對靜態數據進行了引用,Sub類要進行初始化了。同時,其父類Parent要先進行初始化動作。Parent初始化后,A=2,所以B=2;上個過程相當于:

  1. static class Parent{  
  2.     <clinit>(){  
  3.         public static int A=1;  
  4.         static{  
  5.             A=2;  
  6.         }  
  7.     }  
  8. }  
  9. static class Sub extends Parent{  
  10.     <clinit>(){  //jvm會先讓父類的該方法執行完在執行這里  
  11.     public static int B=A;  
  12.     }  
  13. }  
  14. public static void main(String[] args){  
  15.     System.out.println(Sub.B);  

<clinit>();方法對類跟接口來說不是必須的,加入類或者接口中沒有對類變量進行賦值且沒有靜態代碼塊,<clinit>()方法就不會被編譯器生成。

由于接口里面不能存在static{}這種靜態代碼塊,但仍然可能存在變量初始化時的變量賦值操作,所以接口里面也會生成<clinit>()構造器。但跟類的不同的是,執行子接口的<clinit>();方法前并不需要執行父接口的<clinit>();方法,當父接口中定義的變量被使用時,父接口才會被初始化。

另外,接口的實現類在初始化的時候也一樣不會執行接口的<clinit>();方法。

另外,jvm會保證一個類的<clinit>();方法在多線程環境下能被正確地加鎖同步。<因為初始化只會被執行一次>。

下面用個例子說明一下:

  1. public class DeadLoopClass {  
  2.  
  3.     static{  
  4.         if(true){  
  5.         System.out.println("要被 ["+Thread.currentThread()+"] 初始化了,下面來一個無限循環");  
  6.         while(treu){}     
  7.         }  
  8.     }  
  9.       
  10.     /**  
  11.      * @param args  
  12.      */ 
  13.     public static void main(String[] args) {  
  14.         // TODO Auto-generated method stub  
  15.         System.out.println("toplaile");  
  16.         Runnable run=new Runnable(){  
  17.  
  18.             @Override 
  19.             public void run() {  
  20.                 // TODO Auto-generated method stub  
  21.                 System.out.println("["+Thread.currentThread()+"] 要去實例化那個類了");  
  22.                 DeadLoopClass d=new DeadLoopClass();  
  23.                 System.out.println("["+Thread.currentThread()+"] 完成了那個類的初始化工作");  
  24.                   
  25.             }};  
  26.               
  27.             new Thread(run).start();  
  28.             new Thread(run).start();  
  29.     }  
  30.  

這里面,運行的時候將會看到阻塞現象。

呼呼~先到這里。

原文鏈接:http://my.oschina.net/volador/blog/87194

責任編輯:林師授 來源: OSCHINA
相關推薦

2011-02-22 10:46:02

Samba配置

2009-10-23 14:31:05

VB.NET類定義

2011-04-18 15:56:10

軟件測試

2009-12-08 17:56:16

WCF配置

2011-09-06 15:38:20

QT安裝

2009-04-13 12:37:18

2011-01-21 17:51:52

2009-06-10 16:55:42

cygwin netb安裝

2010-03-10 13:24:45

Zend Debugg

2010-03-01 17:01:03

Python編程技巧

2010-11-19 10:11:49

Oracle物化視圖

2010-06-17 13:10:09

Linux Grub修

2011-03-11 10:39:02

YUM安裝LAMP

2019-05-14 15:27:31

MongoDB自動備份數據庫

2010-07-21 14:51:19

telnet-serv

2010-06-12 10:03:20

Ubuntu Grub

2010-03-17 17:20:15

Java class線

2010-02-23 11:35:38

Python 項目測試

2010-06-11 13:15:07

UML軟件

2017-04-25 18:03:11

Caffe深度學習框架
點贊
收藏

51CTO技術棧公眾號

四虎影院在线播放| 欧美 日韩 国产一区二区在线视频| 精品一区二区视频在线观看| 亚洲福利视频免费观看| 免费成人av| 九九热视频在线免费观看| 亚洲精品国产品国语在线app| av中文资源在线资源免费观看| 亚洲人辣妹窥探嘘嘘| 欧美一区二区三区婷婷月色 | 国产一区二区三区在线观看免费 | 欧美gv在线| 欧美人与性动交α欧美精品| 天天超碰亚洲| 欧美日韩电影在线观看| 一区免费在线| 99热这里只有精品在线| 日韩精品不卡| 色综合久久综合网97色综合| 精品国产亚洲一区二区三区在线| 国产黑丝在线观看| 欧美大奶子在线| 国产曰批免费观看久久久| 蜜桃成人在线视频| 国产v亚洲v天堂无码久久久| caoporm超碰国产精品| av网址在线看| 亚洲va综合va国产va中文| 亚洲系列中文字幕| 日韩电影免费在线| av在线中文| 手机免费看av网站| 久久亚洲精品国产亚洲老地址| 久久国产成人午夜av影院| аⅴ资源新版在线天堂| 911福利视频| 色在人av网站天堂精品| 日韩在线第七页| 中文字幕人妻色偷偷久久| 亚洲v国产v在线观看| 色综合久久久久网| 91精品电影| 香蕉视频国产在线| 欧美成人三级在线播放| 中文字幕无线精品亚洲乱码一区| 久久国产精品无码网站| 大黄网站在线观看| 亚洲一级片在线播放| 欧美成人精品福利| 性欧美暴力猛交另类hd| 黄色av免费在线| 少妇户外露出[11p]| 91久久在线播放| 欧美性生交大片免费| 91精品一区二区三区综合| 天堂中文在线资源| 国产精品自在自线| 日av在线播放中文不卡| 国产精品地址| 777电影在线观看| 欧美熟妇精品一区二区蜜桃视频| 日韩免费观看网站| 亚瑟在线精品视频| 欧美一区高清| 美女精品导航| 精品国产视频在线观看| 在线日韩av永久免费观看| 日韩av综合网站| www.久久精品| 久久香蕉网站| 日本v片在线免费观看| 久久精品女同亚洲女同13| 国产精品毛片va一区二区三区| 高清不卡在线观看| 亚洲精品视频一二三区| 超碰福利在线观看| 在线不卡一区二区三区| 91传媒在线免费观看| 精品噜噜噜噜久久久久久久久试看| kk眼镜猥琐国模调教系列一区二区| 黄色网一区二区| 国产尤物视频在线| 亚洲国产精品免费在线观看| www.好吊操| 欧美日韩一级二级| 丁香亚洲综合激情啪啪综合| 免费成人蒂法| gogo在线观看| 中文字幕手机在线视频| 日本中文字幕有码| 区一区二区三区中文字幕| 久久国产精品久久久久久| 欧美色视频日本高清在线观看| 久久精品123| 欧美wwwsss9999| 欧美成人aaaaⅴ片在线看| 99久久久无码国产精品6| 成人国产精品一区| 亚洲美女喷白浆| 亚洲图片欧美视频| 国产乱人伦偷精品视频不卡| 国产一区二区三区四区| 免费一二一二在线视频| 好男人在线视频www| 免费高清在线观看电视| 99热手机在线| 天天人人精品| 91精品国产综合久久福利| 久久女同互慰一区二区三区| 亚洲精选久久| 伊人成综合网yiren22| 91超碰免费在线| 天堂av资源在线| 久久久国产精品成人免费| 中国免费黄色片| 黄色片网址在线观看| 韩国成人av| 日韩av男人的天堂| 在线观看日韩www视频免费| 国产美女在线精品| 国产综合亚洲精品一区二| 国产精品99久久免费观看| 男人天堂视频在线观看| 国内精品在线视频| 在线观看免费视频一区| 免费高清在线观看电视| 69久久精品无码一区二区| 欧美一级视频在线播放| 欧洲一区二区日韩在线视频观看免费| 国产美女精品免费电影| 欧美人交a欧美精品| 亚洲天堂2016| 99久久久国产精品| 蜜桃精品视频在线| 欧美日韩四区| 色综合久久一区二区三区| 日韩免费高清视频网站| 97se综合| 激情在线视频播放| 国产精品一区在线看| 国产精品视频无码| 狠狠人妻久久久久久| 亚洲人成无码www久久久| 一区二区不卡在线视频 午夜欧美不卡'| 国产美女精品久久久| 成人福利视频网| 国产精品直播网红| 国产精品91在线| 91黑丝高跟在线| 欧美成人精品一区| 不卡av电影在线观看| 深夜成人在线观看| 色偷偷噜噜噜亚洲男人| 亚洲免费中文字幕| 亚洲视频欧美视频| 久久在线免费观看| 91丨porny丨中文| 99精品欧美一区二区三区小说 | 五月激情婷婷网| 国产免费黄色录像| 国产色在线视频| 国产精品久久久久久免费播放| 91黑人精品一区二区三区| 欧美日韩综合在线观看| 男人和女人啪啪网站| 性欧美大战久久久久久久| 屁屁影院ccyy国产第一页| 僵尸世界大战2 在线播放| 日本阿v视频在线观看| www插插插无码视频网站| 日韩激情免费视频| 色悠悠久久综合网| 日本美女视频一区| 日本成人在线免费观看| 欧美图片自拍偷拍| 人妻视频一区二区| 中国一级片在线观看| 亚洲精品国产精品乱码| 麻豆精品久久久久久久99蜜桃| 日韩免费av网站| 91资源在线视频| 黄频网站在线观看| 国产性xxxx| 这里只有久久精品视频| 国产高清不卡视频| 免费在线视频你懂得| 黄色在线观看网站| 人人鲁人人莫人人爱精品| 久久国产精品美女| 精品欧美久久| 日韩一级欧洲| 国产乱码精品一区二区三区忘忧草 | 欧美日韩成人在线| 久久久精品中文字幕麻豆发布| 综合欧美一区二区三区| 91久久国产综合久久| 亚洲激情 国产| 欧美激情在线狂野欧美精品| 国产精品观看在线亚洲人成网| 鬼打鬼之黄金道士1992林正英| 无遮挡亚洲一区| 成人免费视频久久| 欧美高清性xxxx| 国产无遮挡又黄又爽又色| 国产一区二区女内射| eeuss影院www在线观看| 成人在线黄色| 182在线视频观看| 你懂的在线观看一区二区| 好吊一区二区三区| 99久久婷婷国产综合精品电影 | 久久麻豆精品| 极品尤物av久久免费看| 国产精品久久久久国产精品日日| 在线视频国内一区二区| 中文字幕免费精品一区| 91精品在线影院| 喜爱夜蒲2在线| www.com日本| 国产成人无码av| 1769视频在线播放免费观看| 人人精品久久| 亚洲国产影院| 午夜精品电影| 99re这里只有精品首页| 欧美制服丝袜第一页| www国产精品com| 成人在线免费网站| av动漫免费看| 少妇影院在线观看| 四虎在线视频| 一区二区三区| 久久国产主播| 亚洲影视资源网| 少妇高潮 亚洲精品| 国产久一道中文一区| 亚欧美在线观看| 日本三级一区二区| 国产无精乱码一区二区三区| 午夜免费福利在线观看| 美日韩黄色大片| 国产一区高清在线| 在线免费精品视频| 欧美一级电影在线| japanese在线播放| 2019男人天堂| 精品视频三区| 欧美a大片欧美片| 高清国产一区二区三区| 777a∨成人精品桃花网| 国产精品美女999| 午夜精品久久久内射近拍高清| 欧美手机在线观看| 国产成人亚洲精品自产在线| 草草影院在线观看| 久久超碰99| 久久综合狠狠综合久久综合88| 亚洲国产成人久久| 国产精品对白一区二区三区| 精品人妻一区二区乱码| 国产男女猛烈无遮挡| 久久福利在线| 激情欧美日韩一区二区| 777欧美精品| 超碰97在线播放| 亚洲啪av永久无码精品放毛片| 国产夫绿帽单男3p精品视频| 久久久久毛片免费观看| 日韩成人综合| 亚洲私人影院在线观看| 久久久久久91| 欧美 激情 在线| 怡红院男人的天堂| 国产精品亚洲综合在线观看 | 久久国产精品视频| 99中文字幕在线观看| 永久免费看片在线播放| 亚洲风情在线资源| 国产在线观看免费一区| 精品黑人一区二区三区久久| 免费久久99精品国产自| 4444亚洲人成无码网在线观看| 久久免费播放视频| 久久天天久久| 国产成人福利片| 日韩亚洲在线观看| 黄色av网址在线播放| 一卡二卡在线观看| 蜜乳av综合| 一区二区三区欧美视频| 国产精品入口免费视| 精品无码人妻少妇久久久久久| 国产最新视频在线观看| 激情自拍一区| 91精品国模一区二区三区| 久久久久资源| 日韩免费不卡视频| 久久久久毛片免费观看| 国产精品久久久久久久久久妞妞 | 亚洲成人网上| 青草视频在线观看免费| 凹凸av导航大全精品| 亚洲欧美日韩综合aⅴ视频| 欧亚精品在线观看| 一本加勒比北条麻妃| 成人免费观看在线观看| 国产精品自拍一区| 美女av一区二区三区| 91精品999| caoporn97在线视频| 国内精品国产三级国产a久久| 日韩小视频在线| 一级 黄 色 片一| 欧美不卡视频在线观看| 豆花视频一区二区| 精品久久久久久久久久久久久 | 亚洲视频 欧美视频| 精品视频黄色| 7777精品伊人久久久大香线蕉完整版 | 久久久久久久一区二区三区| 日韩精品视频一区二区| 中国色在线日|韩| 久久免费视频一区| 国产欧美日韩中文字幕| 亚洲不卡在线播放| 欧美wwwsss9999| 日本v片在线高清不卡在线观看| 国产亚洲精品久久| youjizzxxxx18| 高清电影在线观看免费| 久久久99精品免费观看| 96国产粉嫩美女| 天天综合网入口| 欧美高清一区| 国产一区二区av| 中文字幕在线观看视频www| 捆绑调教日本一区二区三区| 中文字幕第一页久久| 狠狠色综合欧美激情| 在线黄色av网站| 国产精品久久久久久久免费软件| 精品国偷自产在线视频| 37p粉嫩大胆色噜噜噜| 你懂的在线看| 国内精品国产三级国产a久久| 国产成人短视频| 国产精品黄色网| 激情综合视频| 欧美成人合集magnet| 中国1级黄色片| 日韩精品一区二区久久| 国产亚洲免费的视频看| 无码人妻丰满熟妇区毛片蜜桃精品 | 一区不卡字幕| 午夜老司机在线观看| 欧美国产精品一区二区| 欧美日韩视频在线一区二区观看视频| 人妻大战黑人白浆狂泄| 天堂俺去俺来也www久久婷婷| 欧美v国产在线一区二区三区| 三年中文在线观看免费大全中国| 国产成人精选| 欧美一区二区大片| wwwxxx色| 秋霞蜜臀av久久电影网免费| 日韩电影网在线| 国产91在线播放九色| 99国内精品久久久久久久| 久久精品99无色码中文字幕| 亚洲AV成人无码精电影在线| 国产综合亚洲精品一区二| 久久人人爽国产| 日韩国产亚洲欧美| 精久久久久久久久久久| 国产一区二区免费电影| 日韩精品在线观看免费| 在线观看欧美| 日韩成人激情在线| 毛片久久久久久| 亚洲深夜影院| 96国产粉嫩美女| 人成免费电影一二三区在线观看| 国产精品视频一二三区| 欧美一区二区激情| 欧美日韩在线精品一区二区三区激情综合 | 蜜桃视频在线观看免费视频网站www| 亚洲视频每日更新| 国产免费人做人爱午夜视频| 久久69成人| 亚洲色在线视频| 精品深夜av无码一区二区老年| 日韩精品一级中文字幕精品视频免费观看| 96pao国产成视频永久免费| 欧美在线一卡| 丰满岳妇乱一区二区三区| 亚洲无在线观看| 四虎成人精品永久免费av九九| 国外成人免费在线播放| www三级免费| 亚洲天堂2014|