• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    采用ScheduledThreadPoolExecutor執(zhí)行定時重試任務時內存溢出的分析及解決

    2016-05-14 11:20:05余志堅姜春志
    科技資訊 2016年7期
    關鍵詞:入隊線程調用

    余志堅 姜春志

    摘 要:開發(fā)JavaWeb項目中發(fā)現(xiàn)服務之間的調用存在超時情況,由于涉及的處理邏輯全部是異步,引入定時重試的機制,重試工具選擇了JDK自帶的ScheduledThreadPoolExecutor。當A服務依賴B服務,B服務由于在業(yè)務高峰期處理能力降低,導致大量A服務過來的請求超時,A加入了超時重試機制,間隔時間根據(jù)重試次數(shù)的多少來決定,次數(shù)越多,兩次重試之間間隔的時間越多,此時的業(yè)務高峰也會給A帶來大量請求,大量的超時會導致重試隊列迅速堆積,直到內存溢出。該文從線程池工作機制、ScheduledThreadPoolExecutor實例的創(chuàng)建,獲取重試任務的過程以及提交任務的過程角度分析,并通過源代碼的剖析和測試工具MyEclipse進行演示測試內存泄露的情況,得出避免內存泄露的解決方案。

    關鍵詞:ScheduledThreadPoolExecutor 線程池 內存溢出

    中圖分類號:TP3 文獻標識碼:A 文章編號:1672-3791(2016)03(a)-0015-03

    1 ScheduledThreadPoolExecutor實例的創(chuàng)建過程及線程池工作機制

    1.1 ScheduledThreadPoolExecutor實例的創(chuàng)建過程

    重試工具選擇了JDK自帶的ScheduledThreadPoolExecutor。ScheduledThreadPoolExecutor實例的創(chuàng)建過程如下:ScheduledThreadPoolExecutor實例的創(chuàng)建過程如下:(1)獲取當前機器上處理器的數(shù)量;(2)使用Google的ThreadFactoryBuiler創(chuàng)建指定格式名稱的線程,以方便查看問題;(3)有需要被拒絕的任務時,拋出異常;(4)創(chuàng)建定時任務池;打開MyEclipse工具顯示相對的代碼:int corePoolSize=Runtime.getRuntime().availableProcessors();

    ThreadFactory tf=new ThreadFactoryBuilder().setNameFormat("FailureRetryTask-pool-%d").build();

    RejectedExecutionHandler handler=new ThreadPoolExecutor.AbortPolicy();

    ScheduledThreadPoolExecutor taskService=new ScheduletThreadPooExecutor(corePoolSize,tf,handler);

    線程池就是多個線程在一個隊列中取任務執(zhí)行,提交的任務會被放入隊列中等待線程執(zhí)行,故隊列要設置一個大小。線程池同樣會根據(jù)任務繁忙程度來動態(tài)調整連接數(shù),空閑時保持最小連接數(shù),繁忙時增加連接,但不會超過上限,具有伸縮性,線程的創(chuàng)建和銷毀也需要消耗系統(tǒng)資源,線程的連接重用就可以避免這部分損失,具有重用性。

    1.2 線程池工作機制

    線程獲取任務的策略就是如果當前線程池運行狀態(tài)正常,則阻塞等待任務,否則直接返回或等待有限時間后返回。線程池中線程的主要任務就是獲取任務,然后執(zhí)行,然后再去獲取任務,如此循環(huán),這就實現(xiàn)了線程池中線程的可重用。

    Worker封裝了任務,同時創(chuàng)建了新的線程,并被添加到集合workers中,這個workers其實就是最核心的線程池。通過run方法實現(xiàn)重用。private final HashSet workers=new HashSet();

    public void run(){

    try{

    Runnable task=firstTask;

    firstTask=null;

    while(task!=null||(task=getTask())!=null){

    runTask(task);

    task=null;}}

    finally{

    workerDone(this);

    }

    }

    Runnable getTask(){

    for(;;){

    try{

    int state=runState;

    if(state>SHUTDOWN){return null;}

    Runnable r;

    if(state==SHUTDOWN){r=workQueue.poll();}

    else if(poolSize>corePoolSize||allowCoreThreadTimeOut){

    r=workQueue.poll(keepAliveTime,TimeUnit.NANOSECONDS);

    }else{r=workQueue.take();}

    if(r!=null){return r;}

    if(workerCanExit()){

    if(runState>=SHUTDOWN){interruptIdleWorkers();}

    return null;

    }

    }

    catch(InterruptedException ie){}

    }

    }

    private boolean workerCanExit(){

    final RenntrantLock mainLock=this.mainLock;

    mainLock.lock();

    boolean canExit; try{canExit=runState>=STOP||workQueue.isEmpty()||(allowCoreThreadTimeOut&&poolSize>Math.max(1,corePoolSize));

    }finally{mainLock.unLock();}

    return canExit;

    }

    如果此時線程池運行狀態(tài)是終止(runState >= STOP),或者隊列為空,或者允許核心線程超時并且線程池中線程數(shù)量大于最小線程數(shù)量,那么方法將返回true。再回到getTask方法,調用workerCanExit方法的前提是沒有獲取到任務,根據(jù)上邊獲取任務的過程,這幾個條件都有可能成立,所以此時getTask方法可以返回null,上層Worker的run方法從while循環(huán)重返回,整個線程結束,這就實現(xiàn)了線程池的可伸縮。

    2 ScheduledThreadPoolExecutor獲取任務的過程

    在getTask()中,描述了整個獲取任務的過程,如果線程池運行狀態(tài)已經(jīng)是SHUTDOWN了,調用非阻塞方法poll,因為如果當前有任務,那么可以獲取到任務并返回,如果沒有任務,也沒有必要阻塞在隊列上等待任務,因為已經(jīng)SHUTDOWN,后續(xù)不會再有任務進入。

    如果當前線程數(shù)大于最小線程數(shù),或者核心線程也可以做超時處理,意味著如果獲取不到任務就可以銷毀一部分線程了,所以poll方法設置了等待時間,超時后立即返回。

    另一種情況是線程池還在運行狀態(tài),并且當前線程數(shù)不大于最小線程數(shù),同時也不允許最小線程數(shù)以內的線程超時,這個時候線程就要調用阻塞方法take,等待任務進入隊列以后才返回。

    3 ScheduledThreadPoolExecutor提交任務的執(zhí)行過程

    ScheduledThreadPoolExecutor提交任務的執(zhí)行過程,首先提交任務:taskService .schedule(new Runnable(){public void run(){}},1,TimeUnit,DAYS);

    ScheduledThreadPoolExecutor通過schedule方法提交定時任務,schedule方法源碼如下:

    public ScheduledFuture<?> schedule(Runnable command,long delay,TimeUnit unit){

    if(command==null||unit==null){throw new NullPointerException();}

    if(delay<0){delay=0;}

    RunnableScheduledFuture<?> t=decorateTask(command,new ScheduledFutureTask(command,null,triggerTime));

    delayedExecute(t);

    return t;

    }

    提交的任務會被封裝成ScheduledFutureTask類型對象。

    分析delayedExecute方法:private void delayedExecute(Runnable command){

    if(isShutDown()){reject(command);return;}

    if(getPoolSize()

    super.getQueue().add(command);

    }

    如果線程的運行狀態(tài)不是RUNNNING或者入隊列沒有成功,則采用線程池的構造方法中設置的拒絕策略來處理任務。

    如果當前線程池中的線程數(shù)量poolSize小于線程池核心線程的數(shù)量corePoolSize,執(zhí)行prestartCoreThread(),該方法會創(chuàng)建一個新的線程來執(zhí)行任務,如果prestartCoreThread()創(chuàng)建的新線程執(zhí)行任務失敗或者當前線程池中的線程數(shù)量poolSize大于等于線程池核心線程數(shù)量corePoolSize,當若線程池的運行狀態(tài)是RUNNING并且入隊成功,由于在多線程環(huán)境下,狀態(tài)隨時可能會改變,此時線程池的運行狀態(tài)runState不是RUNNING或者線程池中沒有可用的線程(poolSize==0),要確保進入的任務被執(zhí)行處理,線程池在初始化完成以后是空的,并沒有線程,如果在服務器中使用線程池,服務重啟后有大量請求進入,則要同時創(chuàng)建多個線程,而且創(chuàng)建過程是加鎖同步的,會導致一定的競爭,解決辦法就是線程池初始化時調用prestartAllCoreThreads方法啟動核心線程數(shù)量的線程,這樣就能在線程池中的線程就緒以后才開始接收請求。

    通過getQueue方法獲取任務隊列,并且調用add方法向隊列中添加任務,dq的定義:

    private final DelayQueue dq=new DelayQueue();

    public boolean add(Runnable x){return dq.add((RunnableScheduleFuture)x);}

    可以看出dq是阻塞隊列,線程池中的線程都是在隊列中取數(shù)據(jù),ScheduledThreadPoolExecutor中的構造方法里的隊列的實現(xiàn)使用鏈表結構的阻塞隊列,add方法內部調用offer方法,offer源碼如下:public boolean offer(E e){

    final ReentrantLock lock=this.lock();

    lock.lock();

    try{

    E first=q.peek();

    q.offer(e);

    if(first==null||e.compareTo(first)<0){

    available.singalAll();

    return true; }

    }finally{lock.unlock();}}

    這方法需要在多線程環(huán)境下同步執(zhí)行,會用到鎖Lock。鎖實現(xiàn)的大概原理如下。

    Lock實現(xiàn)鎖的方式是通過排他性更新共享變量,更新成功的線程繼續(xù)執(zhí)行,沒有更新成功的線程將會被阻塞。Lock的共享變量state在可重入鎖中可以用來表示一個線程調用了幾次lock方法,也就是有幾次獲取鎖的行為。Lock的功能實現(xiàn)是通過內部聚合了抽象隊列同步器(AQS),同步器有公平和非公平之分。非公平同步器對于新來的線程會嘗試獲取,不成功以后才會進入等待隊列,而公平同步器則會首先判斷是否排隊。AQS中會保存獲取鎖的當先線程的引用。如果一次性嘗試獲取鎖不成功,則線程會進入隊列,循環(huán)嘗試獲取鎖。

    peek方法會獲取隊列的第一個元素,只是獲取,并沒有出隊列。接著調用優(yōu)先級隊列PriorityQueue類型變量q的offer方法將隊列入隊,優(yōu)先級隊列會對任務進行排序,距離執(zhí)行時間越近,位置越靠前。下邊的if判斷可以這樣理解,first是在當前任務入隊之前獲取的,也就是隊列中原有的第一個任務,compareTo的這段比較是說當前任務的執(zhí)行時間比隊列中第一個任務執(zhí)行時間還要早,如果first是null,那么當前任務入隊后將是第一個元素,如果當前任務的執(zhí)行時間比隊列中第一個任務的執(zhí)行時間早,那么當前入隊后也將是第一個元素,只要這兩個條件有一個成立了,這個if的判斷條件就為true,就要執(zhí)行Condition類型的available變量的signalAll方法,喚醒等待的線程工作。

    4 隊列的大小判斷

    隊列的大小是決定內存溢出最直觀的因素,首先來看看優(yōu)先級隊列PriorityQueue的offer方法:public boolean offer(E e){

    if(e==null){throw new NullPointerException();}

    modCount++;

    int i=size;

    if(i>=queue.length){grow(i+1);}

    size=i+1;

    if(i==0){queue[0]=e;}

    else{siftUp(i,e);}

    return true;

    上述代碼表示如果隊列中元素的個數(shù)(size)大于等于隊列的長度,將要通過grow方法擴容,如下:private void grow(int minCapacity){

    if(minCapacity<0){throw new OutOfMemoryError();}

    int oldCapacity=queue.length;

    int newCapacity=((oldCapacity<64)?((oldCapacity+1)*2):((oldCapacity/2)*3));

    if(newCapacity<0){newCapacity=Integer.MAX_VALUE;}

    if(newCapacity

    queue=Arrays.copyof(queue,newCapacity);

    }

    若隊列容量小于64,那就在原有基礎上加1然后擴大2倍,這種情況絕對不會造成內存的溢出問題。如果大于等于64呢?直接擴容一半,然后將值賦給一個int型變量,當某種情況如果超過int類型的最大值了,JDK的處理是賦值成Integer的MAX_VALUE為2147483647,也就是最大的隊列長度是2 G多,如果一個對象的大小按照50個字節(jié)來算,將會占用100 G的內存必定溢出。

    5 模擬內存溢出代碼測試

    當業(yè)務高峰給服務器帶來大量請求,大量的超時會導致重試隊列迅速堆積,直到內存溢出,下面就通過代碼來測試一下:模擬大量的添加任務,并且任務在調度隊列中堆積,推遲一天執(zhí)行。

    while(true){

    taskService.schedule(new Runnable(){public void run(){}},1,TimeUnit.DAYS);

    }

    虛擬機啟動參數(shù)-:

    -Xms32M -Xmx32M -Xmn10M-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/

    運行輸出:

    java.lang.OutOfMemoryError:Java heap space Dumping head to d:/\java_pid12884.hprof...

    Heap dump file created [44940425 bytes in 0.618 secs]

    內存溢出了,來看看內存快照(見表1)。

    6 解決方案及措施

    編譯好的java程序需要運行在JVM中,而JVM為程序提供并管理所需要的內存空間,JVM自帶一個用于回收沒有任何引用指向的對象的線程機制(垃圾回收器),但針對于ScheduledThreadPoolExecutor提交的任務會被封裝成ScheduledFutureTask類型對象且每個對象中又有Sync成員變量。解決的辦法可以是手動判斷隊列的大小,通過taskService.getQueue().size()方法,通過Jmap內存分析工具估算每個對象的大小,Jmap是一個可以輸出所有內存中對象的工具,甚至可以將JVM 中的heap,以二進制輸出成文本。打印出某個Java進程內存內的所有‘對象的情況,結合能夠為隊列分配的內存大小,計算出隊列容納任務的最大數(shù)量,以避免內存溢出。

    參考文獻

    [1] 逯昌浩.淺析多核處理器條件下的Java編程[J].中國科技信息,2009(12):128,130.

    [2] 張復興,曾新洲.擴展線程池模型及性能分析[J].計算技術與自動化,2007(4):110-112.

    [3] (美)Bruce Eckel.Java編程思想[M].陳昊鵬,譯.北京:機械工業(yè)出版社,2007.

    猜你喜歡
    入隊線程調用
    今天我入隊——入隊儀式
    少先隊活動(2022年5期)2022-06-06 03:45:02
    1+1我們這樣學隊章:我們的入隊誓詞
    少先隊活動(2020年7期)2020-08-14 01:17:50
    核電項目物項調用管理的應用研究
    LabWindows/CVI下基于ActiveX技術的Excel調用
    測控技術(2018年5期)2018-12-09 09:04:46
    今天我入隊了
    入隊風波
    淺談linux多線程協(xié)作
    基于系統(tǒng)調用的惡意軟件檢測技術研究
    利用RFC技術實現(xiàn)SAP系統(tǒng)接口通信
    Linux線程實現(xiàn)技術研究
    精品电影一区二区在线| 国产精品免费视频内射| 亚洲精品中文字幕一二三四区| 国产爱豆传媒在线观看 | 欧美成狂野欧美在线观看| 最近最新中文字幕大全免费视频| 床上黄色一级片| 亚洲色图av天堂| 精品久久久久久久久久免费视频| 9191精品国产免费久久| 又爽又黄无遮挡网站| 成年女人毛片免费观看观看9| 欧美中文综合在线视频| 高潮久久久久久久久久久不卡| 成人一区二区视频在线观看| 国产伦一二天堂av在线观看| 曰老女人黄片| av天堂在线播放| 国产精品久久久人人做人人爽| 久久香蕉国产精品| 欧美成人性av电影在线观看| 欧美黑人巨大hd| 一级片免费观看大全| 亚洲色图 男人天堂 中文字幕| 久久草成人影院| 亚洲人成网站高清观看| xxx96com| 欧美色欧美亚洲另类二区| 小说图片视频综合网站| 久久人妻av系列| 国产视频内射| 特大巨黑吊av在线直播| 欧美丝袜亚洲另类 | 99久久国产精品久久久| 一边摸一边抽搐一进一小说| 日韩欧美免费精品| 国产精品久久久久久精品电影| 美女午夜性视频免费| 日日夜夜操网爽| 久久 成人 亚洲| 麻豆一二三区av精品| 日本三级黄在线观看| 久久久国产成人精品二区| 午夜老司机福利片| 久久久久久九九精品二区国产 | av片东京热男人的天堂| 丁香六月欧美| av福利片在线观看| 精品电影一区二区在线| 日本黄大片高清| 男插女下体视频免费在线播放| 三级男女做爰猛烈吃奶摸视频| 亚洲色图 男人天堂 中文字幕| 亚洲精品中文字幕一二三四区| 午夜福利免费观看在线| 麻豆成人午夜福利视频| 亚洲av成人精品一区久久| 黄色成人免费大全| 啦啦啦免费观看视频1| 久久久久久久久久黄片| 精品国产乱码久久久久久男人| 精品国产美女av久久久久小说| 色综合欧美亚洲国产小说| 夜夜爽天天搞| 91麻豆精品激情在线观看国产| 成人av一区二区三区在线看| 精品国产美女av久久久久小说| 99精品久久久久人妻精品| 天天添夜夜摸| 丰满人妻一区二区三区视频av | 床上黄色一级片| 日韩精品青青久久久久久| 99re在线观看精品视频| 这个男人来自地球电影免费观看| 久久久精品大字幕| 神马国产精品三级电影在线观看 | 国产精品乱码一区二三区的特点| 久久精品夜夜夜夜夜久久蜜豆 | 在线国产一区二区在线| 午夜福利欧美成人| 午夜福利在线观看吧| √禁漫天堂资源中文www| 久久久久国产精品人妻aⅴ院| 国产在线观看jvid| 国产成人影院久久av| 亚洲天堂国产精品一区在线| 一边摸一边做爽爽视频免费| 亚洲精品粉嫩美女一区| 99久久精品国产亚洲精品| 亚洲成av人片在线播放无| 神马国产精品三级电影在线观看 | 三级男女做爰猛烈吃奶摸视频| 色在线成人网| 国产精品,欧美在线| 国产蜜桃级精品一区二区三区| 国产免费av片在线观看野外av| 国产免费av片在线观看野外av| 国产精品99久久99久久久不卡| 亚洲va日本ⅴa欧美va伊人久久| 午夜激情av网站| 成年版毛片免费区| 在线a可以看的网站| 国产亚洲精品久久久久久毛片| 美女高潮喷水抽搐中文字幕| 99热6这里只有精品| 9191精品国产免费久久| 两个人免费观看高清视频| 欧美成人一区二区免费高清观看 | 亚洲色图av天堂| 国产91精品成人一区二区三区| 午夜福利视频1000在线观看| 日韩欧美国产在线观看| 两性午夜刺激爽爽歪歪视频在线观看 | 亚洲精品久久成人aⅴ小说| 国产精品免费视频内射| 可以免费在线观看a视频的电影网站| 精品久久久久久久久久免费视频| www.熟女人妻精品国产| 色综合欧美亚洲国产小说| 欧美日韩国产亚洲二区| 久久婷婷人人爽人人干人人爱| 色播亚洲综合网| 久久人妻av系列| 日本免费一区二区三区高清不卡| 69av精品久久久久久| 午夜成年电影在线免费观看| 久久婷婷成人综合色麻豆| 日本 av在线| 国产欧美日韩精品亚洲av| 99精品久久久久人妻精品| 久久久久久久午夜电影| 天堂影院成人在线观看| 天堂√8在线中文| 亚洲 欧美 日韩 在线 免费| 亚洲色图av天堂| 老司机在亚洲福利影院| 亚洲真实伦在线观看| 琪琪午夜伦伦电影理论片6080| 午夜老司机福利片| av福利片在线观看| 一个人免费在线观看的高清视频| 成年免费大片在线观看| 欧美另类亚洲清纯唯美| 波多野结衣巨乳人妻| 一级黄色大片毛片| 一本大道久久a久久精品| 国产av一区二区精品久久| 在线永久观看黄色视频| 久久99热这里只有精品18| 久久精品综合一区二区三区| 两个人视频免费观看高清| 男插女下体视频免费在线播放| 成人欧美大片| av天堂在线播放| 亚洲黑人精品在线| 50天的宝宝边吃奶边哭怎么回事| 亚洲欧美日韩东京热| 午夜视频精品福利| 在线视频色国产色| 91字幕亚洲| 欧美激情久久久久久爽电影| 亚洲va日本ⅴa欧美va伊人久久| 久久久久免费精品人妻一区二区| 亚洲全国av大片| www日本黄色视频网| 午夜激情av网站| 久久精品91蜜桃| 麻豆久久精品国产亚洲av| 淫秽高清视频在线观看| 夜夜夜夜夜久久久久| 婷婷精品国产亚洲av| 免费av毛片视频| 一个人观看的视频www高清免费观看 | 午夜福利视频1000在线观看| 色综合婷婷激情| 亚洲国产精品sss在线观看| www.www免费av| 国产av麻豆久久久久久久| 午夜福利18| 欧美在线一区亚洲| 精品高清国产在线一区| 一进一出好大好爽视频| 狂野欧美激情性xxxx| 国产精品久久久久久久电影 | 国产精品免费一区二区三区在线| 99在线视频只有这里精品首页| 亚洲av片天天在线观看| 88av欧美| 精品午夜福利视频在线观看一区| 一区二区三区高清视频在线| 久久久久久大精品| 国产在线精品亚洲第一网站| 亚洲真实伦在线观看| 久久精品成人免费网站| 99国产精品一区二区三区| 欧美黄色片欧美黄色片| 国产v大片淫在线免费观看| 超碰成人久久| 久久亚洲精品不卡| 大型av网站在线播放| 99久久精品国产亚洲精品| 久久午夜综合久久蜜桃| 欧美3d第一页| 精品欧美国产一区二区三| 50天的宝宝边吃奶边哭怎么回事| 在线十欧美十亚洲十日本专区| 国产成人精品久久二区二区免费| 成人永久免费在线观看视频| 精品久久久久久久人妻蜜臀av| 老司机福利观看| 国产aⅴ精品一区二区三区波| 亚洲av电影不卡..在线观看| 久久久久亚洲av毛片大全| 最近最新免费中文字幕在线| 欧美绝顶高潮抽搐喷水| 欧美性猛交黑人性爽| 欧美极品一区二区三区四区| av中文乱码字幕在线| 久久精品91无色码中文字幕| 成人三级做爰电影| 老司机深夜福利视频在线观看| 91九色精品人成在线观看| 黄色毛片三级朝国网站| 黄色视频不卡| 嫩草影院精品99| 亚洲一码二码三码区别大吗| 日本撒尿小便嘘嘘汇集6| 熟妇人妻久久中文字幕3abv| 亚洲欧美精品综合久久99| 欧美一级毛片孕妇| 一卡2卡三卡四卡精品乱码亚洲| 国产乱人伦免费视频| 在线永久观看黄色视频| 精品日产1卡2卡| 久久久久久免费高清国产稀缺| 国产成年人精品一区二区| 亚洲一卡2卡3卡4卡5卡精品中文| 久久久久久久久免费视频了| 日本黄色视频三级网站网址| 亚洲自拍偷在线| av国产免费在线观看| 欧美又色又爽又黄视频| 国产高清视频在线观看网站| 精品一区二区三区视频在线观看免费| 国产精品香港三级国产av潘金莲| 亚洲av熟女| 国产成人啪精品午夜网站| 色老头精品视频在线观看| 日韩大尺度精品在线看网址| 在线观看免费日韩欧美大片| 国产成人精品无人区| 亚洲国产欧美一区二区综合| 性欧美人与动物交配| 女警被强在线播放| 午夜福利成人在线免费观看| 手机成人av网站| 老汉色av国产亚洲站长工具| 免费在线观看成人毛片| 欧美一区二区精品小视频在线| 成人午夜高清在线视频| 亚洲国产欧美网| 国产精品久久久人人做人人爽| 欧美3d第一页| 日本五十路高清| 精品免费久久久久久久清纯| www.熟女人妻精品国产| 亚洲专区国产一区二区| 天天躁狠狠躁夜夜躁狠狠躁| 黄色 视频免费看| 亚洲人成网站在线播放欧美日韩| 黄色 视频免费看| 亚洲片人在线观看| 这个男人来自地球电影免费观看| 久久国产精品人妻蜜桃| 国产亚洲精品一区二区www| 男人舔女人的私密视频| 变态另类丝袜制服| 免费在线观看成人毛片| 大型黄色视频在线免费观看| 日本 欧美在线| 高潮久久久久久久久久久不卡| 午夜免费成人在线视频| 少妇裸体淫交视频免费看高清 | 欧美极品一区二区三区四区| 国产一区二区三区视频了| 琪琪午夜伦伦电影理论片6080| 国产亚洲欧美98| 99国产精品一区二区三区| 他把我摸到了高潮在线观看| 女警被强在线播放| 日韩国内少妇激情av| 久久婷婷人人爽人人干人人爱| 99在线视频只有这里精品首页| 熟妇人妻久久中文字幕3abv| 一a级毛片在线观看| 日韩大码丰满熟妇| 亚洲男人的天堂狠狠| 熟女电影av网| 免费观看人在逋| 欧美丝袜亚洲另类 | 搡老熟女国产l中国老女人| 成人国产综合亚洲| av在线播放免费不卡| 丝袜美腿诱惑在线| 久久久久九九精品影院| 亚洲人成网站高清观看| 人人妻,人人澡人人爽秒播| 一个人免费在线观看的高清视频| 十八禁人妻一区二区| 久久久精品大字幕| 久久精品aⅴ一区二区三区四区| 亚洲一区高清亚洲精品| 无遮挡黄片免费观看| 热99re8久久精品国产| 亚洲熟女毛片儿| 久久久精品欧美日韩精品| 亚洲在线自拍视频| 国产不卡一卡二| 亚洲成人久久爱视频| 国产一区二区三区视频了| 欧美成人一区二区免费高清观看 | avwww免费| 久久草成人影院| 国产三级在线视频| 亚洲一卡2卡3卡4卡5卡精品中文| 757午夜福利合集在线观看| 欧美性猛交黑人性爽| 窝窝影院91人妻| 亚洲精品美女久久久久99蜜臀| 成人18禁高潮啪啪吃奶动态图| 久久精品夜夜夜夜夜久久蜜豆 | 国产av在哪里看| 香蕉国产在线看| 好看av亚洲va欧美ⅴa在| 琪琪午夜伦伦电影理论片6080| 精品国产乱子伦一区二区三区| 精品乱码久久久久久99久播| 日本在线视频免费播放| 香蕉av资源在线| 国产激情久久老熟女| 亚洲乱码一区二区免费版| 国内精品久久久久久久电影| 亚洲全国av大片| av福利片在线| 国产三级中文精品| 国产成人av教育| 国内少妇人妻偷人精品xxx网站 | 亚洲欧美日韩高清在线视频| 国产免费av片在线观看野外av| 日韩欧美在线二视频| av国产免费在线观看| 国产成人欧美在线观看| 国产真人三级小视频在线观看| 国产v大片淫在线免费观看| 亚洲欧美日韩无卡精品| 成熟少妇高潮喷水视频| 男女做爰动态图高潮gif福利片| 精品欧美一区二区三区在线| 久久人人精品亚洲av| 国产成人一区二区三区免费视频网站| 嫩草影视91久久| 午夜精品在线福利| 国产精品亚洲一级av第二区| 成人手机av| 亚洲国产精品合色在线| 日本 欧美在线| 亚洲欧美精品综合一区二区三区| 亚洲精华国产精华精| 久热爱精品视频在线9| 国产精品精品国产色婷婷| 中文资源天堂在线| 狠狠狠狠99中文字幕| 国产aⅴ精品一区二区三区波| 久久精品夜夜夜夜夜久久蜜豆 | 色在线成人网| 人妻久久中文字幕网| 国产又色又爽无遮挡免费看| 美女 人体艺术 gogo| 91字幕亚洲| 免费在线观看亚洲国产| 国产成人系列免费观看| 法律面前人人平等表现在哪些方面| 在线观看美女被高潮喷水网站 | 久久久久久亚洲精品国产蜜桃av| 亚洲美女黄片视频| 午夜福利成人在线免费观看| 日韩欧美一区二区三区在线观看| www.熟女人妻精品国产| 国产高清视频在线观看网站| 一级毛片高清免费大全| 亚洲av电影在线进入| 在线观看舔阴道视频| 色综合站精品国产| 一本大道久久a久久精品| 搡老妇女老女人老熟妇| av免费在线观看网站| 国产精品 国内视频| 麻豆成人av在线观看| a级毛片在线看网站| 国产亚洲精品久久久久久毛片| 亚洲五月婷婷丁香| 日本免费一区二区三区高清不卡| 国产成人av教育| 免费看a级黄色片| 中出人妻视频一区二区| avwww免费| 国产片内射在线| 男女下面进入的视频免费午夜| e午夜精品久久久久久久| 999久久久国产精品视频| x7x7x7水蜜桃| 国产一区在线观看成人免费| 日韩欧美国产在线观看| 床上黄色一级片| 午夜日韩欧美国产| 狠狠狠狠99中文字幕| 欧美精品亚洲一区二区| 一本一本综合久久| 久久久久亚洲av毛片大全| 别揉我奶头~嗯~啊~动态视频| 亚洲最大成人中文| 黄片小视频在线播放| a级毛片在线看网站| 日本在线视频免费播放| 男人舔奶头视频| 国产成人精品无人区| 成人欧美大片| 国产野战对白在线观看| 久久中文字幕人妻熟女| 中文在线观看免费www的网站 | 久久久国产成人免费| 91九色精品人成在线观看| 黄片小视频在线播放| 亚洲av电影不卡..在线观看| 最好的美女福利视频网| 1024手机看黄色片| 国产精品一区二区精品视频观看| 一个人免费在线观看的高清视频| 久久精品国产综合久久久| 一进一出抽搐gif免费好疼| 夜夜爽天天搞| 色哟哟哟哟哟哟| 久9热在线精品视频| 伊人久久大香线蕉亚洲五| 久久久精品国产亚洲av高清涩受| 色在线成人网| 在线播放国产精品三级| 国产精品九九99| 50天的宝宝边吃奶边哭怎么回事| 天天添夜夜摸| av免费在线观看网站| tocl精华| 国产午夜福利久久久久久| 无人区码免费观看不卡| 亚洲国产看品久久| 国产成人av激情在线播放| 午夜福利免费观看在线| 婷婷亚洲欧美| 国产精品久久视频播放| 日韩中文字幕欧美一区二区| 99在线视频只有这里精品首页| 午夜免费成人在线视频| 日本三级黄在线观看| 免费高清视频大片| 久久精品亚洲精品国产色婷小说| 日韩欧美免费精品| 欧美成人午夜精品| 禁无遮挡网站| 日韩欧美国产一区二区入口| 久久草成人影院| 国产91精品成人一区二区三区| 日日摸夜夜添夜夜添小说| 亚洲性夜色夜夜综合| 国产精品亚洲美女久久久| 日本 欧美在线| 老司机靠b影院| 久久久久久亚洲精品国产蜜桃av| 国产欧美日韩一区二区三| 国内精品久久久久精免费| 岛国视频午夜一区免费看| 午夜日韩欧美国产| a级毛片在线看网站| 亚洲成人久久性| 亚洲一区高清亚洲精品| 18禁国产床啪视频网站| 免费在线观看日本一区| 18禁美女被吸乳视频| 亚洲精品一卡2卡三卡4卡5卡| 中亚洲国语对白在线视频| 日韩欧美 国产精品| 一个人免费在线观看电影 | 久久人人精品亚洲av| 国内久久婷婷六月综合欲色啪| 床上黄色一级片| 欧美性长视频在线观看| 午夜精品在线福利| 少妇人妻一区二区三区视频| 日本一本二区三区精品| 精品国产乱码久久久久久男人| 亚洲国产精品合色在线| 1024手机看黄色片| 97人妻精品一区二区三区麻豆| 欧美日韩亚洲国产一区二区在线观看| 波多野结衣高清作品| 亚洲中文日韩欧美视频| 亚洲精华国产精华精| 国内少妇人妻偷人精品xxx网站 | 国产精品免费视频内射| 热99re8久久精品国产| avwww免费| 窝窝影院91人妻| 亚洲一码二码三码区别大吗| 每晚都被弄得嗷嗷叫到高潮| 久久草成人影院| 99精品欧美一区二区三区四区| 成人精品一区二区免费| 中亚洲国语对白在线视频| 亚洲全国av大片| 精品久久久久久成人av| 女生性感内裤真人,穿戴方法视频| 欧美精品啪啪一区二区三区| 国产熟女午夜一区二区三区| 99re在线观看精品视频| 日日爽夜夜爽网站| 99久久无色码亚洲精品果冻| 亚洲 国产 在线| 日本三级黄在线观看| 久久精品综合一区二区三区| 国产精品一区二区精品视频观看| 99久久国产精品久久久| 色综合亚洲欧美另类图片| 日韩欧美在线乱码| 国产成人影院久久av| 亚洲精品一区av在线观看| 级片在线观看| 久久中文字幕一级| 亚洲中文字幕一区二区三区有码在线看 | 亚洲欧美精品综合久久99| 国产精品一区二区三区四区久久| 精品高清国产在线一区| 亚洲精品久久国产高清桃花| 国产男靠女视频免费网站| 可以免费在线观看a视频的电影网站| 国产成年人精品一区二区| 免费在线观看视频国产中文字幕亚洲| av超薄肉色丝袜交足视频| 97碰自拍视频| 中文在线观看免费www的网站 | 国内精品一区二区在线观看| 国产真实乱freesex| 久久精品夜夜夜夜夜久久蜜豆 | 亚洲18禁久久av| 欧美日韩国产亚洲二区| 亚洲黑人精品在线| 亚洲人成网站在线播放欧美日韩| 国产熟女午夜一区二区三区| 亚洲av成人不卡在线观看播放网| 免费在线观看亚洲国产| 亚洲自拍偷在线| 成人亚洲精品av一区二区| 美女午夜性视频免费| 亚洲av电影不卡..在线观看| 草草在线视频免费看| 久9热在线精品视频| 99国产极品粉嫩在线观看| 午夜激情福利司机影院| 又粗又爽又猛毛片免费看| 亚洲一区高清亚洲精品| 午夜a级毛片| 国产精品永久免费网站| 国产精品av视频在线免费观看| 一本精品99久久精品77| 色综合亚洲欧美另类图片| 91老司机精品| 亚洲熟妇熟女久久| 中文字幕高清在线视频| 日本免费a在线| 欧美激情久久久久久爽电影| 久久九九热精品免费| 中文字幕人成人乱码亚洲影| 中文字幕高清在线视频| 男插女下体视频免费在线播放| 丁香欧美五月| 亚洲av中文字字幕乱码综合| 十八禁人妻一区二区| 精华霜和精华液先用哪个| 国产1区2区3区精品| 99riav亚洲国产免费| 一级a爱片免费观看的视频| 精品国内亚洲2022精品成人| 精品久久久久久久末码| 神马国产精品三级电影在线观看 | 国产一区二区三区在线臀色熟女| 亚洲中文字幕日韩| 成熟少妇高潮喷水视频| 一个人免费在线观看的高清视频| 精品国产亚洲在线| 亚洲欧美精品综合久久99| 欧美日韩中文字幕国产精品一区二区三区| 一边摸一边做爽爽视频免费| 中出人妻视频一区二区| 视频区欧美日本亚洲| 欧美三级亚洲精品| 99热这里只有精品一区 | 在线观看午夜福利视频| 国产在线观看jvid| 男男h啪啪无遮挡| 成年人黄色毛片网站| 久久这里只有精品中国| 久久 成人 亚洲| 亚洲黑人精品在线| 久久久国产欧美日韩av| 最新美女视频免费是黄的| 99国产精品一区二区蜜桃av| av免费在线观看网站|