国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Netty對(duì)象池

共 10683字,需瀏覽 22分鐘

 ·

2021-06-12 13:47


    在平時(shí)工作中,聽(tīng)說(shuō)和使用過(guò)連接池,線程池等.還有一種就是對(duì)象池,可以實(shí)現(xiàn)對(duì)象復(fù)用的功能.

當(dāng)然實(shí)現(xiàn)對(duì)象池的方式手段有多種,比如有一個(gè)公共的池子,所有需要對(duì)象的線程通過(guò)并發(fā)控制的方式從池子中獲取對(duì)象,并發(fā)控制的同時(shí)伴隨性能的損耗.那么Netty是如何實(shí)現(xiàn)對(duì)象池的呢? 先通過(guò)一段演示代碼說(shuō)起

import io.netty.util.Recycler;
public class Book {
private String name; private final Recycler.Handle<Book> recyclerHandle;
Book(Recycler.Handle<Book> recyclerHandle) { this.recyclerHandle = recyclerHandle; }
public void setName(String name) { this.name = name; }
void recycle() { recyclerHandle.recycle(this); }}



import io.netty.util.Recycler;import io.netty.util.concurrent.FastThreadLocalThread;
import java.util.concurrent.locks.LockSupport;
public class Main {

private static final Recycler<Book> BOOK = new Recycler<Book>() { @Override protected Book newObject(Handle<Book> handle) { return new Book(handle); } };

private static Book book1; private static Book book2; private static Book book3;
public static void main(String[] args) throws Exception {

new FastThreadLocalThread(() -> { // book1,book2,book3都是從線程Thread-1中創(chuàng)建產(chǎn)生 book1 = BOOK.get(); book1.setName("Java");
book2 = BOOK.get(); book2.setName("C");
book3 = BOOK.get(); book3.setName("C++"); // book1在線程Thread-1中回收 book1.recycle();
new FastThreadLocalThread(() -> { // book2在線程Thread-2中回收 book2.recycle(); LockSupport.park();// 讓線程不退出,便于觀察 }, "Thread-2").start();

new FastThreadLocalThread(() -> { // book3在線程Thread-3中回收 book3.recycle(); LockSupport.park();// 讓線程不退出,便于觀察 }, "Thread-3").start();

LockSupport.park();// 讓線程不退出,便于觀察 }, "Thread-1").start();

// 讓線程不退出,便于觀察 LockSupport.park();
}}




以上代碼,在線程Thread-1中創(chuàng)建了book1(Java),book2(C),book3(C++)這三個(gè)對(duì)象.然后在線程Thread-1中回收book1對(duì)象,在線程Thread-2中回收book2對(duì)象,在線程Thread-3中回收book3對(duì)象.

通過(guò)jps命令查看進(jìn)程ID



通過(guò)jmap命令dump堆內(nèi)存


jmap -dump:format=b,file=2021-heap.hprof 10624



接下來(lái)使用Eclipse的MAT工具打開(kāi)上面創(chuàng)建生成的2021-heap.hprof文件.



點(diǎn)擊上圖中的按鈕,查看線程.




找到線程Thread-1的內(nèi)存地址=0xd786b000

然后根據(jù)這個(gè)地址,查看線程內(nèi)部屬性信息.





線程Thread-1內(nèi)部屬性信息如下圖所示




其中,需要關(guān)注threadLocalMap屬性.



關(guān)于FastThreadLocal的內(nèi)容,之前的文章有介紹.





這里也附著一張F(tuán)astThreadLocal的圖


代碼中創(chuàng)建的book1,book2,book3這三個(gè)對(duì)象,就存放在threadLocalMap屬性里面.依次展開(kāi)它.

首先找到了book1對(duì)象



繼續(xù)找到了book2對(duì)象,而且這個(gè)book2對(duì)象和線程Thread-2有關(guān)系.



最后找到了book3對(duì)象,而且這個(gè)book3對(duì)象和線程Thread-3有關(guān)系.



根據(jù)以上堆數(shù)據(jù)的分析,可以得出如下簡(jiǎn)單關(guān)系.




如上圖,線程Thread-1創(chuàng)建了book1,book2,book3這三個(gè)對(duì)象. 回收之后,book1對(duì)象在線程Thread-1里,book2對(duì)象在線程Thread-2里,book3對(duì)象在線程Thread-3里.

接下來(lái),通過(guò)分析源碼的方式,完善這張圖.

我們先將上面一開(kāi)始的代碼,簡(jiǎn)化下,如下圖所示



根據(jù)上圖,得到如下一個(gè)引用關(guān)系


獲取對(duì)象路徑


Thread -> Recycler -> 目標(biāo)對(duì)象



線程如果需要對(duì)象,不能在像以前那樣手動(dòng)創(chuàng)建對(duì)象(比如new Book()),而是需要借助Recycler對(duì)象,通過(guò)它得到所需要的Book對(duì)象.

因此,Recycler是一個(gè)很重要的類

io.netty.util.Recycler

在Recycler內(nèi)部有一個(gè)很重要的屬性,如下


private final FastThreadLocal<Stack<T>> threadLocal = new FastThreadLocal<Stack<T>>() {    @Override    protected Stack<T> initialValue() {        return new Stack<T>(Recycler.this, Thread.currentThread(), maxCapacityPerThread, maxSharedCapacityFactor,                            interval, maxDelayedQueuesPerThread, delayedQueueInterval);    }
@Override protected void onRemoval(Stack<T> value) { if (value.threadRef.get() == Thread.currentThread()) { if (DELAYED_RECYCLED.isSet()) { DELAYED_RECYCLED.get().remove(value); } } }};


通過(guò)線程局部對(duì)象FastThreadLocal, 也就是說(shuō), 當(dāng)每個(gè)線程在使用Recycler獲取所需要的對(duì)象的時(shí)候,它的內(nèi)部是實(shí)際上是從每個(gè)線程的Stack中獲取對(duì)象.




小提示



每個(gè)線程都會(huì)有一個(gè)Stack. 當(dāng)然這句話也不是這么絕對(duì), 如果一個(gè)線程它使用了n個(gè)Recycler,那么這個(gè)線程就擁有n個(gè)Stack. 為了說(shuō)明這一點(diǎn),驗(yàn)證代碼如下



如果在一個(gè)線程中,使用多個(gè)Recycler對(duì)象.


import io.netty.util.Recycler;import io.netty.util.concurrent.FastThreadLocalThread;

public class Main {
private static final Recycler<Book> BOOK_CN = new Recycler<Book>() { @Override protected Book newObject(Handle<Book> handle) { return new Book(handle); } };
private static final Recycler<Book> BOOK_EN = new Recycler<Book>() { @Override protected Book newObject(Handle<Book> handle) { return new Book(handle); } };
public static void main(String[] args) throws Exception {
new FastThreadLocalThread(() -> { // 在同一個(gè)線程中使用2個(gè)Recycler實(shí)例,則會(huì)創(chuàng)建2個(gè)Stack Book book1 = BOOK_CN.get(); Book book2 = BOOK_EN.get();
}, "Thread-1").start();
}}




如上圖,線程Thread-1它擁有2個(gè)Stack對(duì)象.

接下來(lái)繼續(xù)分析Netty的對(duì)象池, 代碼中是通過(guò)io.netty.util.Recycler#get方法獲取對(duì)象的,追蹤此方法.


public final T get() {    // 如果沒(méi)有啟用線程池,則每次獲取對(duì)象都要新創(chuàng)建對(duì)象.    if (maxCapacityPerThread == 0) {        return newObject((Handle<T>) NOOP_HANDLE);    }    // 每個(gè)線程獲取它自己對(duì)應(yīng)的Stack對(duì)象.    Stack<T> stack = threadLocal.get();    // 從Stack中'彈出'一個(gè)對(duì)象.    DefaultHandle<T> handle = stack.pop();    if (handle == null) {        // 如果Stack中沒(méi)有DefaultHandle對(duì)象,則新創(chuàng)建一個(gè)DefaultHandle        handle = stack.newHandle();        // 創(chuàng)建線程需要的那個(gè)對(duì)象        handle.value = newObject(handle);    }    // 返回線程需要的那個(gè)對(duì)象    return (T) handle.value;}


根據(jù)以上代碼,得出如下關(guān)系.





Thread -> Recycler -> Stack -> DefaultHandle -> 目標(biāo)對(duì)象




一個(gè)線程,要想得到所需要的目標(biāo)對(duì)象,需要經(jīng)過(guò)Recycler->Stack->DefaultHandle之后,才能拿到目標(biāo)對(duì)象.

之前dump出來(lái)的堆內(nèi)存,也能看到目標(biāo)對(duì)象是'包裹'在DefaultHandle對(duì)象中的.



接下來(lái)看下它是怎么從Stack中'彈出'一個(gè)對(duì)象的.


DefaultHandle<T> pop() {    int size = this.size;    if (size == 0) {        // 這個(gè)地方后面會(huì)說(shuō)        if (!scavenge()) {            return null;        }        size = this.size;        if (size <= 0) {            return null;        }    }    size --;    // 從elements數(shù)組中拿出最后一個(gè)元素    DefaultHandle ret = elements[size];    elements[size] = null;
this.size = size;
if (ret.lastRecycledId != ret.recycleId) { throw new IllegalStateException("recycled multiple times"); } ret.recycleId = 0; ret.lastRecycledId = 0; // 將元素直接返回 return ret;}


在Stack內(nèi)部有個(gè)數(shù)組,用來(lái)'裝'DefaultHandle,當(dāng)需要的時(shí)候,直接從這個(gè)數(shù)組中拿出最后一個(gè)元素DefaultHandle返回.

到目前為止,看一下此時(shí)的結(jié)構(gòu)




正所謂'有借有還',既然它是一個(gè)對(duì)象池,當(dāng)使用完之后,需要調(diào)用回收方法. 在文章一開(kāi)始我們自己設(shè)計(jì)的Book類中也實(shí)現(xiàn)了回收方法.


public class Book {
private String name;
private final Recycler.Handle<Book> recyclerHandle;
Book(Recycler.Handle<Book> recyclerHandle) { this.recyclerHandle = recyclerHandle; }
public void setName(String name) { this.name = name; }
// 回收方法 void recycle() { // 實(shí)際調(diào)用io.netty.util.Recycler.DefaultHandle#recycle方法 recyclerHandle.recycle(this); }
}


回收操作就是從這個(gè)io.netty.util.Recycler.DefaultHandle#recycle方法開(kāi)始的.


@Overridepublic void recycle(Object object) {    if (object != value) {        throw new IllegalArgumentException("object does not belong to handle");    }  // 得到相應(yīng)的Stack    // 每個(gè)DefaultHandle有且僅屬于一個(gè)Stack    Stack<?> stack = this.stack;    if (lastRecycledId != recycleId || stack == null) {        throw new IllegalStateException("recycled already");    }  // 將DefaultHandle對(duì)象放入Stack中    stack.push(this);}



還要說(shuō)一點(diǎn)是,如下圖,比如線程Thread-1創(chuàng)建一個(gè)book對(duì)象,第一種情況,book對(duì)象使用完之后,最后是由線程Thread-1回收它的(誰(shuí)創(chuàng)建誰(shuí)回收). 第二種情況,book對(duì)象交給了線程Thread-3使用,最后由線程Thread-3回收它(他人創(chuàng)建我來(lái)回收).



根據(jù)上圖,再理解下push源碼


void push(DefaultHandle<?> item) {    // 得到當(dāng)前線程    Thread currentThread = Thread.currentThread();        // 如果當(dāng)前線程和Stack對(duì)應(yīng)的線程是同一個(gè)線程    // 每個(gè)Stack有且只屬于一個(gè)線程.    if (threadRef.get() == currentThread) {        pushNow(item);    } else {        // 當(dāng)前線程和Stack對(duì)應(yīng)的線程不是同一個(gè)線程        pushLater(item, currentThread);    }}


將對(duì)象放入Stack分2種情況,第一種是pushNow,第二種是pushLater.


private void pushNow(DefaultHandle<?> item) {    if (item.recycleId != 0 || !item.compareAndSetLastRecycledId(0, OWN_THREAD_ID)) {        throw new IllegalStateException("recycled already");    }    item.recycleId = OWN_THREAD_ID;
int size = this.size; // dropHandle方法用來(lái)控制放入Stack的速率,有點(diǎn)類似流控,稍后再說(shuō) if (size >= maxCapacity || dropHandle(item)) { return; } if (size == elements.length) { elements = Arrays.copyOf(elements, min(size << 1, maxCapacity)); } // 直接將元素放入elements數(shù)組的最后 elements[size] = item; this.size = size + 1;}


pushNow方法很簡(jiǎn)單,直接將DefaultHandle元素放入到數(shù)組即可.

pushLater方法有點(diǎn)麻煩.首先你要記得,執(zhí)行pushLater的線程一定不是歸屬Stack的線程.

說(shuō)白了,就是由其他線程'協(xié)助'歸屬Stack的線程來(lái)做push操作.


// 1.先將Queue鏈接到鏈表上// 2.將item添加到Queue#Linkprivate void pushLater(DefaultHandle<?> item, Thread thread) {
// DELAYED_RECYCLED是FastThreadLocal類型, 則每個(gè)線程都有一個(gè)DELAYED_RECYCLED. // 每個(gè)線程會(huì)維護(hù) Stack -> WeakOrderQueue 映射關(guān)系, 即每個(gè)線程會(huì)'協(xié)助'其他線程存儲(chǔ)它的對(duì)象. Map<Stack<?>, WeakOrderQueue> delayedRecycled = DELAYED_RECYCLED.get(); WeakOrderQueue queue = delayedRecycled.get(this); if (queue == null) { if (delayedRecycled.size() >= maxDelayedQueues) { delayedRecycled.put(this, WeakOrderQueue.DUMMY); return; } // 創(chuàng)建queue,同時(shí)鏈接到鏈表上 if ((queue = WeakOrderQueue.allocate(this, thread)) == null) { // drop object return; } delayedRecycled.put(this, queue); } else if (queue == WeakOrderQueue.DUMMY) { // drop object return; }
queue.add(item);}




結(jié)合上圖,再梳理下pushLater邏輯

1.首先線程Thread-3先從Map中查找對(duì)應(yīng)Stack的Queue. 第一次肯定找不到,于是新建一個(gè)Queue,然后再把這個(gè)新建的Queue鏈接到Stack上.

2.將元素添加到Queue.

到了現(xiàn)在,我們可以放一張全局圖了



如上圖,Stack對(duì)象是隸屬于線程thread-1的. 如果從Stack中獲取的對(duì)象,最后也是由線程thread-1回收的,那么對(duì)象就會(huì)存到Stack中的elements數(shù)組中.

如果從Stack中獲取的對(duì)象,最后是由線程thread-2回收,那么thread-2就會(huì)創(chuàng)建一個(gè)針對(duì)此Stack的Queue,鏈接到Queue鏈上.然后再把對(duì)象放到相應(yīng)的Link中的elements數(shù)組中.

還有一點(diǎn),在回收對(duì)象的時(shí)候,并不是'全部都回收'. 而是默認(rèn)每隔8個(gè)回收一個(gè)對(duì)象. 在pushNow和pushLater方法內(nèi)部都會(huì)調(diào)用如下方法


boolean dropHandle(DefaultHandle<?> handle) {    // 1.如果當(dāng)前handle之前被回收過(guò),那么此次也會(huì)被回收    // 2.如果當(dāng)前handle之前沒(méi)有回收過(guò),那么默認(rèn)每隔8個(gè)回收一個(gè),防止Stack的DefaultHandle[]數(shù)組發(fā)生爆炸性的增長(zhǎng).    if (!handle.hasBeenRecycled) {        if ((++handleRecycleCount & ratioMask) != 0) {            // Drop the object.            return true;        }        handle.hasBeenRecycled = true; // 標(biāo)記元素被回收    }    return false;}



在從Stack獲取元素的時(shí)候,代碼如下



DefaultHandle<T> pop() {    int size = this.size;    if (size == 0) {// 如果elements中沒(méi)有可用元素        if (!scavenge()) {// 從其他WeakOrderQueue中轉(zhuǎn)移數(shù)據(jù)到當(dāng)前stack#elements中            return null;        }        size = this.size;    }    size --;    DefaultHandle ret = elements[size];    elements[size] = null;    if (ret.lastRecycledId != ret.recycleId) {        throw new IllegalStateException("recycled multiple times");    }    ret.recycleId = 0;    ret.lastRecycledId = 0;    this.size = size;    return ret;}


默認(rèn)先從Stack自己的elements中獲取元素,如果elements中沒(méi)有元素的時(shí)候,則從Queue鏈上轉(zhuǎn)移數(shù)據(jù)到當(dāng)前Stack的elements數(shù)組中.

分析到這里,我們可以總結(jié)下Netty對(duì)象池的實(shí)現(xiàn)了.
每個(gè)線程都有一個(gè)Stack用于'裝載'需要復(fù)用的對(duì)象. 同時(shí)其他線程也會(huì)'協(xié)助'它回收對(duì)象. 如果Stack中沒(méi)有對(duì)象了,那么會(huì)從其他線程的Queue中轉(zhuǎn)移對(duì)象到Stack中. 如果是Stack隸屬的線程回收對(duì)象,那么對(duì)象會(huì)被放到Stack的elements數(shù)組中,如果是其他線程回收對(duì)象,那么會(huì)把這個(gè)對(duì)象放到其他線程維護(hù)的Queue中.



瀏覽 44
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 男女啪啪啪| 亚洲熟女av中文字幕| 午夜理论在线| 久操伊人大香蕉| 国精产品一区二区三区黑人和中国| 91麻豆福利视频| 在线视频福利导航| 91综合在线观看| 人人妻人人澡人人爽久久con| 亚洲中文字幕在线免费观看视频| 欧美精品第一页| 久久人人超碰| 久久久久久三级电影| 日韩一二三| 亚洲福利网站| 亚洲性爱小说| 国产毛片精品一区二区色欲黄A片| 狠狠色噜噜狠狠狠7777米奇网| 成人在线乱码视频| 成人精品在线视频| 欧美精品三级| 免费看成人A片无码照片88hⅤ| 成人小视频在线| 91国内产香蕉| 日本欧美中文字幕| 骚逼中文字幕| 国产欧美一区二区精品性色超碰| 边摸边操| 逼特逼视频在线观看| 在线观看中文字幕AV| 国产真实乱婬A片久久久老牛| 级婬片AAAAAAA免费| 爆乳一区二区三区AV| 国产精品久久久久野外| 亚洲男人天堂av| 99视频这里有精品| 国产成人精品无码区在线| 亚洲三级在线免费观看| XX熟女HD| 青娱在线视频| 逼逼AV网站-日韩电影| 激情五月综合| 黄色三级在线观看| 一二三四在线视频| 91露脸熟女四川熟女在线观看 | 欧美v日韩| 婷婷五月天色色| 日韩图色| 影音先锋无码专区| 免费观看黄片视频| 亚欧美日韩| 青青草99热| 免费一级无码婬片A片AAA毛片| 欧美日屄| 3D动漫啪啪精品一区二| 久草福利在线视频| wwwxxx18| av无码中文| 日皮视频在线| 欧一美一婬一伦一区二区三区自慰, | 97av视频| 欧美亚洲小说| 免费黄片无码| 亚洲AV无码乱码AV| 国产A片录制现场妹子都很多| 亚洲色图偷拍| 人人妻人人澡人人爽人人欧美一区| 大香蕉在线观看视频| 巨い巨乳の少妇あジed2k| 免费操逼视频网站| 夜夜爽久久精品91| 亚洲国产精品久久人人爱| 爱搞搞网| 一区二区三区四区视频在线| 五月天高清无码| 国产av一区二区三区四区| 黄色一级视频在线观看| 熟女熟妇人妻一区二区三区 | 久久无码在线观看| 国产中文自拍| 中文字幕日韩AV| 国产成人h| 无码国产99精品久久久久网站| 成年人免费看视频| 思思热在线视频播放| 自拍毛片| 苍井空中文字幕在线观看| 11孩岁女精品A片BBB| 无码一区二区三区四季| 国精产品一区一区三区四区| 亚洲无码门| 日本一级做a爱片| 无码中文视频| 日韩精品在线免费观看| 操逼综合网| 青青草原av| 高清无码免费在线观看| 国产xxxx| 久久一级视频| 亚洲国产中文字幕| 国产精品视频播放| 三级片在线看片AV| 国产老女人操逼视频| 亚洲黄色激情| 久久久成人精品| AV资源网站| 国产精品久久毛片A片| 日本少妇无码| 91传媒在线观看| 中文字幕高清AⅤ| 天堂8在线19| 日本久久不卡| 国产精品国产三级囯产普通话2| 91网站在线播放| 99视频这里有精品| 成人AA片| 色综合色| 污污的网站18| 国产草逼网站| 天天日天天干天天草| 97人妻人人澡人| Chinese搡老女人| 91在线无码精品秘| www.超碰| 色老板在线视频| 黄一区二区| 99久久婷婷国产综合| 91青青草在线| 国产成人无码一区二区| 亚洲国产一区二区三区| 亚洲第一区欧美日韩| 欧美成人五月天| 女女久久| 看肏屄视频| 五十路AV| 884aa四虎影成人精品一区| 熊猫视频91| 国产AV综合网| 69久久久久| 国产精品911| 一本色道久久综合亚洲精品久久| 波多野结衣一区二区三区| 加勒比久久久| 就操| 国产三级黄色片| 九九re精品视频在线观看| 人人操人人爽人人妻| 日韩精品视频一区二区三区| 亚洲香蕉在线视频| 黄色高清无码| 国产九色91回来了| 水果派解说A∨无码区| 男女啪网站| 新超碰97| 探花无码| 西西444www无码精品| 国产又粗又长| 日韩中文性受视频| 亚洲插逼视频| 四川少BBB搡BBB爽爽爽| 五月天AV在线| 操BBBB| 97毛片| 无码啪啪| 国产无遮挡又黄又爽又色视频软件| 中文字幕欧美激情| 免费AV毛片| 91精品网站| 日韩欧美在线播放| 国产精品无码激情视频| 人妻18无码人伦一区二区三区精品| 色小说在线| 丰满人妻一区二区| jizz在线观看视频| 国精品无码人妻一区二区三区免费 | 国产十八岁在线观看| 狠狠综合| 一级片AA| 一级片黄片| sm在线| 欧美sese| 黄色成人网站在线观看| 国产午夜福利免费视频在线观看| 国产九九九视频| 北条麻妃av在线播放| 国产av中文字幕| 99九九网| 嫩草视频在线播放| 操精品| 一本高清无码| 激情六月| 大香蕉在线视频观看| 免费在线观看无码| 成人毛片100免费观看| 无码AV在线播放| 91大神在线免费看| 日本三级久久| 亚洲免费观看高清完| 中日韩特黄A片免费视频| 国产VA| 国产一级黄片| 操美女的网站| 国产做爱视频| 99热自拍| 三级AV在线免费观看| 五月丁香人妻| 一本色道久久综合无码| 免费日韩| 欧美性爱香蕉视频| 午夜私人福利| 亚洲一区二区在线视频| 91搞搞| 日本免费福利视频| 九九人妻| 翔田千里一区二区三区| 成人视频在线观看18| 天天操视频网站| 俺来俺也去www色在线观看| 青青操逼视频| 婷婷开心色四房播播在线| 日韩黄色片在线观看| 国产理论片在线观看| 色播五月婷婷| 久久久18禁一区二区三区精品| 国产高清第一页| 天天操天天撸| 日韩免费在线| 久久久午夜| AV先锋资源| 日韩免费高清视频| 中文字幕视频在线直播| 超碰牛牛| 国产淫语| a亚洲天堂| 亚洲色图欧美在线| 欧美三级片在线视频| 北条麻妃视频在线| 看免费操逼视频| 9l农村站街老熟女| 日本在线| AV大片免费看| 天天添| 久久免费黄色视频| 97精品无码| 国产色情视频在线观看| 日本人妻中文字幕| 国产亚洲婷婷| 精品成人视频| 日日碰狠狠| 中文字幕一级片| 中国国产乱子伦| 江苏妇搡BBBB搡BBB| 亚洲欧美在线一区| 黄a无码| 欧美黄色影院| 国产SUV精品一区二区| 99热在线只有精品| 日韩精品无码一区二区| 亚洲AV久久无码| 亚洲欧美高清| 日韩无码免费| 免费观看一区| 日批免费网站| 思思热思思操免费视频| 免费观看高清无码| 精品乱子伦一区二区三区| 美女裸体视频网站| 久久色婷婷| 国产A片免费看| 亚洲免费观看高清完整| 亚洲图片小说区| 日本一级一片免费视频| 久久久久亚洲AV无码专区| av怡红院| 国产精品国内自产拍| 欧美小黄片| 操BAV| 人人插人人澡| 九九精品热播| 无码不卡视频| 欧美高清一级| 天堂成人网| 欧美精产国品一| 亚洲日韩三级片| 综合网亚洲| 香蕉福利网| 免费高潮视频| 在线观看2区| www三级片| 伊人成人在线观看| 一边做一边说国语对白| 蜜桃秘av一区二区三区安全| 欧美特级黄片| 三级片一区| 超碰人人操| 欧美中文字幕视频| 久操视频免费观看| 爱搞搞就要爱搞搞| 夜夜夜影院| 日韩三级在线免费观看| a免费在线观看| 精品视频在线播放| 国产精品国产三级国产AⅤ中文| 亚洲中文字幕2025| 中文字幕一区三区人妻视频| xxxxx日韩| 成人操B视频在线观看| 国产亚洲色婷婷久久99精品| 天堂一区二区| 午夜偷拍视频| 久草综合视频| 三级片AV在线| 久久午夜无码鲁丝片午夜精| 免费AV资源在线观看| 午夜精东影业传媒在线观看| 伊人春色AV| 西西444WWW无码大胆知乎| 一级片在线| 九九视频网| 久久久精品电影| 亚洲第一成年人网站| 18禁亚洲| 国精品无码一区二区三区在线秋菊| 国内老熟妇对白HDXXXX| 91人妻一区二区三区无不码超满| 亚洲日韩中文在线| 中文字幕日本欧美| 日韩一级片在线播放| 天堂A片电影网站在线观看| 摸BBB搡BBB搡BBBB| www黄片| 一级片黄片| 91精品一区| 岛国电影av| 欧美精品黄片| 国产午夜精品一区二区三区四区| 欧美级毛片一进一出| 天天爽夜夜爽夜夜爽| 51成人网| 午夜久| 久久中文视频| 国产一级婬乱片免费| 第一福利视频| 免费看黄色的网站| 苍井空一区二区| 特级特黄AAAA免费看| 五月天最新网址| 黄色片AA| 成人毛片在线观看| 欧美成人精品三级网站| 一级爱爱免费视频| 欧美黄色免费在线观看| 91久久欧美极品XXXXⅩ| 91蝌蚪91九色| 色男人的天堂| 亚洲综合日韩| 亚洲一区二区三区在线++中国| 国产精品成人免费视频| 天堂AV色| 国产2页| 88av在线观看| 国产一级女婬乱免费看| 韩国一区二区三区在线观看| 日逼电影网| 中文字幕一级片| 成年人黄色片| 欧美三级欧美三级三级| 亚洲热视频| 精品码A片18| 国产无码av| 99久久99久久精品免费看小说。| 五月伊人婷婷| 手机av免费| 亚洲AV秘无码一区在线| 操逼操逼操逼操逼| 在线播放一区二区三区| 江苏妇搡BBBB搡BBB| 草逼视频网站| 永井玛丽亚av无码中出流出| 中文在线字幕免费观看| 成人a片在线免费观看| 午夜av福利| 国产精品啪啪啪啪| 日本一区二区三区免费视频| 亚洲无码精品专区| 亚洲一本在线电影av| 一区二区黄| AV在线播放中文字幕| 欧美亚洲激情| 激情小视频在线观看| 超碰AV在线| 久久人人超碰| 久久99精品国产.久久久久| 国产精品93333333| 久久久伊人网| 国产中文字幕在线播放| 日韩久久久久| 天堂AV色| 狼友视频在线免费观看| 不卡无码中文字幕| 欧美激情在线| 天天天天天天天天操| 亚洲香蕉av| 欧美精品91| 欧美成人A片AAA片在线播放| 安徽妇搡BBBB搡BBBB按摩小说| 久久久高清无码| 三级理论片| 欧美一区二区三曲的| 在线观看中文字幕一区| 久久99精品国产| 三级片一区| 91AV免费看| 狠狠干2018| 极品少妇av| 久久欧洲成人精品无码区| 日本伊人大香蕉| 波多野结衣av一区| www.骚逼| 久久午夜一级A片| 亚洲日韩精品在线视频| 人人干人人干| 久久午夜无码鲁丝片主演是谁| 天天干强奸视频在线综合| 伊人成人小说| 探花一区二区| 欧美经典自拍狼友| 男女做爱视频网站| 欧美成人国产| 成人大香蕉| 人成视频在线免费观看| 狠狠色噜噜狠狠狠888| 青春草在线观看| 蜜臀久久99精品久久久兰草影视| 中文字幕成人在线播放| 一区二区AV| 国产91精品久久久天天| AV中文字幕电影| 91综合娱乐| 日韩亚洲天堂| 亚洲欧洲精品成人久久曰影片 | 麻豆精品传媒国产剧的特点 | 日本高潮视频| 日本一级黄| 91热99| 亚洲国产精品久久人人爱| 自拍偷拍激情视频| WWW.豆花视频精品| 一级a片在线观看| 在线免费观看a| 国产乱伦精品视频| 亚洲v在线| 精品蜜桃秘一区二区三区在线播放 | 大香蕉综合伊人| 手机AV在线| 一级片久久| 黄色一级大片在线免费看国产| 丁月婷婷五香天日五月天| 成人做爰黄AA片免费看三区 | a√天堂资源中文8| 精品无码一区二区人妻久久蜜桃| 永久免费视频| 国产成人自拍视频在线观看| 亚洲A片免费看| 久久九| 奇米影视狠狠干| 成人黃色A片免费看| 欧美中文字幕| 残忍另类BBWBBWBBW| 亚洲一级二级三级片| 亚洲无码免费视频在线观看| 无码免费观看视频| 精品久久久国产| 中文字幕AV在线免费观看| 午夜做爱福利视频| 91成人免费电影| 一本一本久久a久久精品牛牛影视| 在线免费观看国产视频| 日本免费A片| 久操人妻| 成人做爰黄A片免费| 狠操网| 人妻少妇精品视频| 一区二区国产精品| 黄色a一级| 伊人蕉| 日本免费一区二区三区| 日韩国产一区二区| 狠狠色噜噜狠狠狠7777| 精品日韩在线视频| 成人久久久| 国产午夜无码视频在线观看| 激情综合视频| www.黄色大片| 青青操逼| 51午夜| av在线免费观看网址| 色老板综合| a天堂8| 成人免费版欧美州| 亚洲Av无码成人专区擼| 免费成人视频在线观看| 亚洲高清视频无码| 一区二区亚洲| 成人三级片在线播放| www.a片| 无码人妻精品一区二区蜜桃网站| 色mm在线播放| 国产裸体网站| 中文字幕国产在线观看| 大鸡吧操逼| 欧美,日韩,日| 奇米AV| 大香蕉久久久久久| 精品国产久久久久久| 91大屁股| 任你爽在线视频| 中文字幕综合网| 欧美人妻少妇| 在线亚洲欧美| 看免费黄色视频| 91破处网站| 91人妻一区二区| 99精品热| 五月天福利视频| 成人激情在线视频| av无码免费| 首屈一指视频在线观看| 国产婬片一级A片AAA毛片AⅤ| 午夜视频在线| 中文字幕在线视频观看| 男女操网站| 中文字幕av一区二区| 一本无码高清| 久久福利视频导航| 免费69视频| 欧美一区二区丁香五月天激情| 狼友视频在线观看| 久久久久久亚洲AV无码专区| 亚洲无码人妻| 久久偷拍网| 手机在线操B视频| 一区二区三区国产精品| 丁香婷婷五月综合影院| 亚洲九九九| 久久这里只有| 老司机免费福利视频| 91视频专区| 黄色一级视频网站| 最新免费一区二区三区| 美女被操面费网站| 熟妇高潮一区二区高潮| 北条麻妃在线播放一区| 亚洲欧美色图| 成人在线观看网站| 成人内射视频| 国产一级a毛一级a毛观看视频网站| 欧美又粗又长| 人妻天天爽夜夜爽| 另类欧美| 影音先锋男人天堂| 天天搞搞| 黄片91| 狠狠色一区| 99热大香蕉| 天天做天天爱| 51妺嘿嘿午夜福利| 激情五月天影院| 亚洲色小说| 再深点好爽灬轻点久久国产| 黄视频免费| AⅤ在线观看| 欧美国产中文| 中文字幕乱在线| 天天操天天射天天爽| 天堂8在线19| 国产十欧洲十美国+亚洲一二三区在线午夜| www.操逼| 91精品人妻一区二区三区蜜桃 | 亚洲中文字幕一区二区| 蝌蚪窝视频在线| 手机在线观看av| 国产精品啪啪视频| 国产精品无码免费视频| 操逼视频网站免费观看| 成人精品一区二区三区无码视频| 亚洲乱伦av| 日韩在线观看免| 一级a爱视频| 人人摸人人操人人爽| 69成人导航| 亭亭色| 国产精品免费久久影院| 伊人乱伦| 五月天福利导航| 唐山熟女工棚嗷嗷叫| 日韩免费无码| 国产视频99| 欧美性爱福利| 久久成人网站| 色综合一区二区三区| 影音先锋av资源网站| 国产三级片在线观看视频| 午夜神马影院| 影音先锋国产av| 一级片黑人| 一本色道久久综合熟妇| 性爱无码网站| 国产黄A| 羞羞视频com.入口| xxxxx日韩| 三级自拍| 亚洲无码视频一区二区| 麻豆国产91在线播放| 日韩成人区| 狠狠躁日日躁夜夜躁2022麻豆| 亚洲视频在线免费看| 影音先锋成人无码| 日韩性爱A片| 69av在线观看视频| 免费黄色欧美| 亚洲天堂av网| 久久久久97| 久久精品一区二区三区不卡牛牛| 熟妇槡BBBB槡BBBB图| 一级无码在线观看| 国产精品久久久久久无码人妻| 97超碰资源总站| 18禁污网站| 中文字幕高清| 国产精品国产三级国产专区53 | 成人黃色A片免费看| 51国产视频| 亚洲高清福利视频| 人人澡人人摸| 91久久婷婷亚洲精品成人| 天天干天天操天天爽| 日韩欧美一区二区在线观看| 亚洲视频福利| 18精品爽国产冫绿帽社| 亚洲精品成人一二三区| 亚洲视频91| 国产九九在线视频| 一级黄色小视频| 国产亚洲欧美精品综合在线| 麻豆久久久久| 午夜99| 欧美特黄AAAAAAAAA片| 黄片高清免费| 久色国产| 日韩免费高清无码| 精品国产无码怀孕| 91传媒在线观看| 婷婷五月综合久久中文字幕| 成年人在线视频| 韩剧《邻居的妻子》电视剧 | 亚洲免费观看高清完| 美女超碰| 日本爱爱网址| а√在线中文8| 3d动漫精品H区XXXXX区| 人人操人人摸人人爱| 国产亚洲Av| 色五月综合网| 特级特黄AAAAAAAA片| 69毛片| 日韩高清国产一区在线| 北条麻妃电影九九九| 手机在线成人视频| www.seses| 91在线欧美| 在线播放91灌醉迷J高跟美女| www.五月天.con| 又色又爽| 欧美久久性爱| 国产成人在线免费| 精品一区二区三区四区视频| 亚洲视频播放| 日韩天天操| 91视频网站| 菊花插综合网| v天堂在线观看| 久久99视频免费观看| 二区三区视频| www.亚洲视频| 成人综合网站| 麻豆内射| 豆花视频成人网站入口免费观看| 欧美精品99久久久| 久久婷婷五月天| 18SAV| 亚洲一道本在线| 亚洲成免费| 亚洲日韩在线免费观看| 欧美亚洲综合在线| 欧美日韩在线视频观看| 亚州激情| xxx综合网| 韩剧《邻居的妻子》电视剧 | 亚洲无码视频在线免费观看| 欧美人人爱| 亚洲欧美日本在线观看| 91成人福利| 国产A片免费看| 一欧美日韩免费/看| 国产在线久久久| 日韩免费性爱视频| 国产一级片内射| 在线国产91| 视频一区二区三区在线观看| 亚洲欧美一区二区三区在线| 夜夜嗨老熟女AV一区二区三区| 国产A片录制现场妹子都很多| 中国最大成人网站| 中国毛片视频| 国产乱人伦无码视频| 偷拍二区| 豆花视频成人精品视频| 毛片二区| 天天躁狠狠躁夜躁2024| 日本精品在线观看视频| 天天日av| 免费黄色一级电影| 中文字幕2018第一页| 黃色一级A片一級片| 精品一区二区三区三区| 中国女人如毛片| 九色丨蝌蚪丨老版熟女| 久久久久久久久久国产精品| 久草国产视频| 亚洲少妇一区| www.天天干| 亚洲乱码一区| 亚洲人妖在线| 特黄AAAAAAAA片免费直播 | 这里有精品| 中文字幕高清在线中文字幕中文字幕 | 成人在线视频网站| 2025av中文字幕| 在线免费黄色网址| 性爱91视频| 翔田千里50岁无码| www.国产精品| 大香蕉在线观看视频| 日韩在线1| 全国男人的天堂网站| 精品人伦一区二区三区| 人人妻人人爱人人操| 国产www| 艹b视频在线观看| 8050午夜一级| 操逼操逼逼| 日韩精品成人在线| 麻豆中文字幕| 日韩三级在线免费观看| 免费观看A级毛片| 黄色视频导航| 成人av天堂| 乱伦五月天| 国产成人小视频在线观看| www.99热视频| 成人亚洲AV| 91新视频| 国产麻豆AⅤMDMD0071| 日韩操比视频| 特级西西人体444www高清大胆| 色婷婷在线观看视频| 国产午夜视频在线观看| 青娱乐黄片| 激情五月天激情网| 99久久99久久精品免费看小说。| 亚洲一区二区三区在线| 免费AV在线| 丁香激情综合| 99热免费精品| 国产精品久久久久久亚洲影视| 97精品国产| 日韩精彩视频| jizz免费在线观看| 国产精品欧美一区二区三区苍井空| 国产成人AV在线| 久久国产热在8| 国产www视频| 国产在线精品观看| 免费性爱视频网站| 国产又爽又黄视频| 99无码精品| 日韩欧美精品18| 口爆在线观看| 91国产视频在线播放| 永久免费AV无码| 亚洲AV小说| 久久9热| 这里视频很精彩免费观看电视剧最新 | 午夜A区| 成人免费A片| 中文资源在线√8| 91丨九色丨蝌蚪丨丝袜| 中文字幕在线不卡| av干在线| 午夜操逼逼| 日本A在线观看| 日本无码人妻| 中文字幕播放| 中文字幕视频免费| 日韩综合另类| 影音先锋一区| 一级一级a免一级a做免费线看内裤| 精品人妻无码一区二区三区四川人| 亚洲欧美另类在线| 久久人妻无码中文字幕系列| 日韩精品极品视频在线观看免费| 久久精品内射| 波多野结衣一区| 精品女同一区二区三区四区外站在线 | 毛茸茸BBBBBB毛茸茸| 亚洲高清无码中文字幕| 黑人av| 秘蜜桃色一区二区三区在线观看| 密臀av在线| 亚洲日韩AV在线| 中国免费毛片| 成人中文字幕在线观看| 欧美A√| 日韩高清色| 狼友自拍| 欧美性爱一区二区三区| a片在线电影网| 特写毛茸茸BBwBBwBBw| 亚洲精品成人av无码| 躁BBB躁BBB躁BBBBBB| 最近中文字幕中文翻译歌词| 神马影院午夜福利| 女毛片| 中文字幕一区二区三区人妻电影| 欧美搡BBBB搡BBB| 欧美三级| 亚洲视频在线免费| 亚洲另类天堂| 四川少妇搡bbbbb搡多人| 中文字幕无码精品三级在线欧美| 色骚综合| 北条麻妃无码在线播放| 69av视频在线观看| 爱色五月| 国产无码激情视频| 亚洲第一综合网| 欧美日韩国产激情| 成人久久电影| 91无码高清视频| 久久久久久久97| 99久久99| 欧美在线A片| 乱伦综合网| 亚洲系列| 狠狠艹狠狠干| 成人a片在线观看| 中文字幕在线观看完整av| 亚洲第一黄色视频| 国产乱伦自拍| 天天射夜夜骑| 手机AV在线播放| 欧美久久久久| 强开小嫩苞毛片一二三区| 日韩在线视频免费播放| 日本18禁网站| 免费无码国产在线怀| 蜜臀av一区二区| 91在线观看18| 激情另类视频| 91丨熟女丨首页| 欧美精品18videosex性欧美| 成人无码免费毛片| 香蕉久久久| 无码人妻一区二区三区三| 神马影院午夜福利| 日韩精品在线观看视频| 人人操人人操人人操人人操| 亚洲成人视频免费观看| 日韩黄色A级片| 翔田千里在线播放| 99精品免费视频| 久久成人久久爱| 丁香婷婷视频| 丰满人妻一区二区免费看| 亚洲日韩在线免费观看| 人人爽人人爽人人爽| 嫩草A片www在线观看| 亚洲精品资源在线| 国产大奶一区二区| 青娱乐日韩| 久热精品视频在线观看| 国产麻豆免费| 日产无码| 日韩A片免费| 五月丁香激情婷婷| 黄色精品| 无码一页| 79色色| 婷婷男人天堂|