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

12 張圖帶你徹底理解 ZGC

存儲 存儲設(shè)備
ZGC(Z Garbage Collector) 是一款性能比 G1 更加優(yōu)秀的垃圾收集器。ZGC 的一大創(chuàng)舉是將 GC 信息保存在了染色指針上。染色指針是一種將少量信息直接存儲在指針上的技術(shù)。

大家好,我是君哥。今天來聊一聊 ZGC。

ZGC(Z Garbage Collector) 是一款性能比 G1 更加優(yōu)秀的垃圾收集器。ZGC 第一次出現(xiàn)是在 JDK 11 中以實驗性的特性引入,這也是 JDK 11 中最大的亮點(diǎn)。在 JDK 15 中 ZGC 不再是實驗功能,可以正式投入生產(chǎn)使用了,使用 –XX:+UseZGC 可以啟用 ZGC。

ZGC 有 3 個重要特性:

  • 暫停時間不會超過 10 ms。

JDK 16 發(fā)布后,GC 暫停時間已經(jīng)縮小到 1 ms 以內(nèi),并且時間復(fù)雜度是 o(1),這也就是說 GC 停頓時間是一個固定值了,并不會受堆內(nèi)存大小影響。

下面圖片來自:https://malloc.se/blog/zgc-jdk16

  • 最大支持 16TB 的大堆,最小支持 8MB 的小堆。
  • 跟 G1 相比,對應(yīng)用程序吞吐量的影響小于 15 %。

1.內(nèi)存多重映射

內(nèi)存多重映射,就是使用 mmap 把不同的虛擬內(nèi)存地址映射到同一個物理內(nèi)存地址上。如下圖:

ZGC 為了更靈活高效地管理內(nèi)存,使用了內(nèi)存多重映射,把同一塊兒物理內(nèi)存映射為 Marked0、Marked1 和 Remapped 三個虛擬內(nèi)存。

當(dāng)應(yīng)用程序創(chuàng)建對象時,會在堆上申請一個虛擬地址,這時 ZGC 會為這個對象在 Marked0、Marked1 和 Remapped 這三個視圖空間分別申請一個虛擬地址,這三個虛擬地址映射到同一個物理地址。

Marked0、Marked1 和 Remapped 這三個虛擬內(nèi)存作為 ZGC 的三個視圖空間,在同一個時間點(diǎn)內(nèi)只能有一個有效。ZGC 就是通過這三個視圖空間的切換,來完成并發(fā)的垃圾回收。

2.染色指針

2.1 三色標(biāo)記回顧

我們知道 G1 垃圾收集器使用了三色標(biāo)記,這里先做一個回顧。下面是一個三色標(biāo)記過程中的對象引用示例圖:

總共有三種顏色,說明如下:

  • 白色:本對象還沒有被標(biāo)記線程訪問過。
  • 灰色:本對象已經(jīng)被訪問過,但是本對象引用的其他對象還沒有被全部訪問。
  • 黑色:本對象已經(jīng)被訪問過,并且本對象引用的其他對象也都被訪問過了。

三色標(biāo)記的過程如下:

  • 初始階段,所有對象都是白色。
  • 將 GC Roots 直接引用的對象標(biāo)記為灰色。
  • 處理灰色對象,把當(dāng)前灰色對象引用的所有對象都變成灰色,之后將當(dāng)前灰色對象變成黑色。
  • 重復(fù)步驟 3,直到不存在灰色對象為止。

三色標(biāo)記結(jié)束后,白色對象就是沒有被引用的對象(比如上圖中的 H 和 G),可以被回收了。

2.2 染色指針

ZGC 出現(xiàn)之前, GC 信息保存在對象頭的 Mark Word 中。比如 64 位的 JVM,對象頭的 Mark Word 中保存的信息如下圖:

前 62位保存了 GC 信息,最后兩位保存了鎖標(biāo)志。

ZGC 的一大創(chuàng)舉是將 GC 信息保存在了染色指針上。染色指針是一種將少量信息直接存儲在指針上的技術(shù)。在 64 位 JVM 中,對象指針是 64 位,如下圖:

在這個 64 位的指針上,高 16 位都是 0,暫時不用來尋址。剩下的 48 位支持的內(nèi)存可以達(dá)到 256 TB(2 ^48),這可以滿足多數(shù)大型服務(wù)器的需要了。不過 ZGC 并沒有把 48 位都用來保存對象信息,而是用高 4 位保存了四個標(biāo)志位,這樣 ZGC 可以管理的最大內(nèi)存可以達(dá)到 16 TB(2 ^ 44)。

通過這四個標(biāo)志位,JVM 可以從指針上直接看到對象的三色標(biāo)記狀態(tài)(Marked0、Marked1)、是否進(jìn)入了重分配集(Remapped)、是否需要通過 finalize 方法來訪問到(Finalizable)。

無需進(jìn)行對象訪問就可以獲得 GC 信息,這大大提高了 GC 效率。

3.內(nèi)存布局

首先我們回顧一下 G1 垃圾收集器的內(nèi)存布局。G1把整個堆分成了大小相同的 region,每個堆大約可以有 2048 個region,每個 region 大小為 1~32 MB (必須是 2 的次方)。如下圖:

  • 跟 G1 類似,ZGC 的堆內(nèi)存也是基于 Region 來分布,不過 ZGC 是不區(qū)分新生代老年代的。不同的是,ZGC 的 Region 支持動態(tài)地創(chuàng)建和銷毀,并且 Region 的大小不是固定的,包括三種類型的 Region :
  • Small Region:2MB,主要用于放置小于 256 KB 的小對象。
  • Medium Region:32MB,主要用于放置大于等于 256 KB 小于 4 MB 的對象。
  • Large Region:N * 2MB。這個類型的 Region 是可以動態(tài)變化的,不過必須是 2MB 的整數(shù)倍,最小支持 4 MB。每個 Large Region 只放置一個大對象,并且是不會被重分配的。

4.讀屏障

讀屏障類似于 Spring AOP 的前置增強(qiáng),是 JVM 向應(yīng)用代碼中插入一小段代碼,當(dāng)應(yīng)用線程從堆中讀取對象的引用時,會先執(zhí)行這段代碼。注意:只有從堆內(nèi)存中讀取對象的引用時,才會執(zhí)行這個代碼。下面代碼只有第一行需要加入讀屏障。

Object o = obj.FieldA
Object p = o //不是從堆中讀取引用
o.dosomething() //不是從堆中讀取引用
int i = obj.FieldB //不是引用類型




讀屏障在解釋執(zhí)行時通過 load 相關(guān)的字節(jié)碼指令加載數(shù)據(jù)。作用是在對象標(biāo)記和轉(zhuǎn)移過程中,判斷對象的引用地址是否滿足條件,并作出相應(yīng)動作。如下圖:

標(biāo)記、轉(zhuǎn)移和重定位這些過程請看下一節(jié)。

讀屏障會對應(yīng)用程序的性能有一定影響,據(jù)測試,對性能的最高影響達(dá)到 4%,但提高了 GC 并發(fā)能力,降低了 STW。

5.GC 過程

前面已經(jīng)講過,ZGC 使用內(nèi)存多重映射技術(shù),把物理內(nèi)存映射為 Marked0、Marked1 和 Remapped 三個地址視圖,利用地址視圖的切換,ZGC 實現(xiàn)了高效的并發(fā)收集。

ZGC 的垃圾收集過程包括標(biāo)記、轉(zhuǎn)移和重定位三個階段。如下圖:

ZGC 初始化后,整個內(nèi)存空間的地址視圖被設(shè)置為 Remapped。

5.1 初始標(biāo)記

從 GC Roots 出發(fā),找出 GC Roots 直接引用的對象,放入活躍對象集合,這個過程需要 STW,不過STW 的時間跟 GC Roots 數(shù)量成正比,耗時比較短。

5.2 并發(fā)標(biāo)記

并發(fā)標(biāo)記過程中,GC 線程和 Java 應(yīng)用線程會并行運(yùn)行。這個過程需要注意下面幾點(diǎn):

  • GC 標(biāo)記線程訪問對象時,如果對象地址視圖是 Remapped,就把對象地址視圖切換到 Marked0,如果對象地址視圖已經(jīng)是 Marked0,說明已經(jīng)被其他標(biāo)記線程訪問過了,跳過不處理。
  • 標(biāo)記過程中Java 應(yīng)用線程新創(chuàng)建的對象會直接進(jìn)入 Marked0 視圖。
  • 標(biāo)記過程中Java 應(yīng)用線程訪問對象時,如果對象的地址視圖是 Remapped,就把對象地址視圖切換到 Marked0,可以參考前面講的讀屏障。
  • 標(biāo)記結(jié)束后,如果對象地址視圖是 Marked0,那就是活躍的,如果對象地址視圖是 Remapped,那就是不活躍的。

標(biāo)記階段的活躍視圖也可能是 Marked1,為什么會采用兩個視圖呢?

這里采用兩個視圖是為了區(qū)分前一次標(biāo)記和這一次標(biāo)記。如果這次標(biāo)記的視圖是 Marked0,那下一次并發(fā)標(biāo)記就會把視圖切換到 Marked1。這樣做可以配合 ZGC 按照頁回收垃圾的做法。如下圖:

第二次標(biāo)記的時候,如果還是切換到 Marked0,那么 2 這個對象區(qū)分不出是活躍的還是上次標(biāo)記過的。如果第二次標(biāo)記切換到 Marked1,就可以區(qū)分出了。

這時 Marked0 這個視圖的對象就是上次標(biāo)記過程被標(biāo)記過活躍,轉(zhuǎn)移的時候沒有被轉(zhuǎn)移,但這次標(biāo)記沒有被標(biāo)記為活躍的對象。Marked1 視圖的對象是這次標(biāo)記被標(biāo)記為活躍的對象。Remapped 視圖的對象是上次垃圾回收發(fā)生轉(zhuǎn)移或者是被 Java 應(yīng)用線程訪問過,本次垃圾回收中被標(biāo)記為不活躍的對象。

5.3 再標(biāo)記

并發(fā)標(biāo)記階段 GC 線程和 Java 應(yīng)用線程并發(fā)執(zhí)行,標(biāo)記過程中可能會有引用關(guān)系發(fā)生變化而導(dǎo)致的漏標(biāo)記問題。再標(biāo)記階段重新標(biāo)記并發(fā)標(biāo)記階段發(fā)生變化的對象,還會對非強(qiáng)引用(軟應(yīng)用,虛引用等)進(jìn)行并行標(biāo)記。

這個階段需要 STW,但是需要標(biāo)記的對象少,耗時很短。

5.4 初始轉(zhuǎn)移

轉(zhuǎn)移就是把活躍對象復(fù)制到新的內(nèi)存,之前的內(nèi)存空間可以被回收。

初始轉(zhuǎn)移需要掃描 GC Roots 直接引用的對象并進(jìn)行轉(zhuǎn)移,這個過程需要 STW,STW 時間跟 GC Roots 成正比。

5.5 并發(fā)轉(zhuǎn)移

并發(fā)轉(zhuǎn)移過程 GC 線程和 Java 線程是并發(fā)進(jìn)行的。上面已經(jīng)講過,轉(zhuǎn)移過程中對象視圖會被切回 Remapped 。轉(zhuǎn)移過程需要注意以下幾點(diǎn):

如果 GC 線程訪問對象的視圖是 Marked0,則轉(zhuǎn)移對象,并把對象視圖設(shè)置成 Remapped。

如果 GC 線程訪問對象的視圖是 Remapped,說明被其他 GC 線程處理過,跳過不再處理。

并發(fā)轉(zhuǎn)移過程中 Java 應(yīng)用線程創(chuàng)建的新對象地址視圖是 Remapped。

如果 Java 應(yīng)用線程訪問的對象被標(biāo)記為活躍并且對象視圖是 Marked0,則轉(zhuǎn)移對象,并把對象視圖設(shè)置成 Remapped。

5.6 重定位

轉(zhuǎn)移過程對象的地址發(fā)生了變化,在這個階段,把所有指向?qū)ο笈f地址的指針調(diào)整到對象的新地址上。

6.垃圾收集算法

ZGC 采用標(biāo)記 - 整理算法,算法的思想是把所有存活對象移動到堆的一側(cè),移動完成后回收掉邊界以外的對象。如下圖:

6.1 JDK 16 之前

在 JDK 16 之前,ZGC 會預(yù)留(Reserve)一塊兒堆內(nèi)存,這個預(yù)留內(nèi)存不能用于 Java 線程的內(nèi)存分配。即使從 Java 線程的角度看堆內(nèi)存已經(jīng)滿了也不能使用 Reserve,只有 GC 過程中搬移存活對象的時候才可以使用。如下圖:

這樣做的好處是算法簡單,非常適合并行收集。但這樣做有幾個問題:

因為有預(yù)留內(nèi)存,能給 Java 線程分配的堆內(nèi)存小于 JVM 聲明的堆內(nèi)存。

Reserve 僅僅用于存放 GC 過程中搬移的對象,有點(diǎn)內(nèi)存浪費(fèi)。

因為 Reserve 不能給 GC 過程中搬移對象的 Java 線程使用,搬移線程可能會因為申請不到足夠內(nèi)存而不能完成對象搬移,這返回過來又會導(dǎo)致應(yīng)用程序的 OOM。

6.2 JDK 16 改進(jìn)

JDK 16 發(fā)布后,ZGC 支持就地搬移對象(G1 在 Full GC 的時候也是就地搬移)。這樣做的好處是不用預(yù)留空閑內(nèi)存了。如下圖:

不過就地搬移也有一定的挑戰(zhàn)。比如:必須考慮搬移對象的順序,否則可能會覆蓋尚未移動的對象。這就需要 GC 線程之間更好的進(jìn)行協(xié)作,不利于并發(fā)收集,同時也會導(dǎo)致搬移對象的 Java 線程需要考慮什么可以做什么不可以做。

為了獲得更好的 GC 表現(xiàn),JDK 16 在支持就地搬移的同時,也支持預(yù)留(Reserve)堆內(nèi)存的方式,并且 ZGC 不需要真的預(yù)留空閑的堆內(nèi)存。默認(rèn)情況下,只要有空閑的 region,ZGC 就會使用預(yù)留堆內(nèi)存的方式,如果沒有空閑的 region,否則 ZGC 就會啟用就地搬移。如果有了空閑的 region, ZGC 又會切換到預(yù)留堆內(nèi)存的搬移方式。

7.總結(jié)

內(nèi)存多重映射和染色指針的引入,使 ZGC 的并發(fā)性能大幅度提升。

ZGC 只有 3 個需要 STW 的階段,其中初始標(biāo)記和初始轉(zhuǎn)移只需要掃描所有 GC Roots,STW 時間 GC Roots 的數(shù)量成正比,不會耗費(fèi)太多時間。再標(biāo)記過程主要處理并發(fā)標(biāo)記引用地址發(fā)生變化的對象,這些對象數(shù)量比較少,耗時非常短。可見整個 ZGC 的 STW 時間幾乎只跟 GC Roots 數(shù)量有關(guān)系,不會隨著堆大小和對象數(shù)量的變化而變化。

ZGC 也有一個缺點(diǎn),就是浮動垃圾。因為 ZGC 沒有分代概念,雖然 ZGC 的 STW 時間在 1ms 以內(nèi),但是 ZGC 的整個執(zhí)行過程耗時還是挺長的。在這個過程中 Java 線程可能會創(chuàng)建大量的新對象,這些對象會成為浮動垃圾,只能等下次 GC 的時候進(jìn)行回收。

責(zé)任編輯:武曉燕 來源: 君哥聊技術(shù)
相關(guān)推薦

2022-07-11 11:06:11

RocketMQ函數(shù).消費(fèi)端

2021-05-18 06:55:07

Java AQS源碼

2022-07-04 11:06:02

RocketMQ事務(wù)消息實現(xiàn)

2021-12-06 07:15:47

Pulsar地域復(fù)制

2020-10-16 06:30:45

分布式場景方案

2021-08-15 18:59:13

垃圾收集器JDK

2020-11-27 06:28:55

Spring循環(huán)依賴

2020-11-13 10:29:37

流程控制語句

2022-04-11 11:55:34

架構(gòu)技術(shù)調(diào)優(yōu)

2023-04-11 08:35:22

RocketMQ云原生

2022-06-13 11:05:35

RocketMQ消費(fèi)者線程

2022-06-11 18:15:26

KubernetesDockerLinux

2021-04-25 10:45:59

Docker架構(gòu)Job

2024-07-03 08:28:44

HWKafkaLEO

2021-10-22 09:28:15

開發(fā)技能代碼

2020-11-03 10:32:48

回調(diào)函數(shù)模塊

2022-06-27 11:04:24

RocketMQ順序消息

2019-07-24 08:49:36

Docker容器鏡像

2022-10-20 08:31:33

加鎖解鎖代碼

2020-06-28 07:39:44

Kafka分布式消息
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

人妻精品无码一区二区三区| 亚洲自拍小视频| 亚洲av永久无码精品| 涩涩视频在线| 国产精品你懂的在线欣赏| 亚洲自拍偷拍视频| 五月婷婷激情视频| 亚洲天堂免费| 亚洲欧美日韩爽爽影院| 日韩av一卡二卡三卡| 超级碰碰不卡在线视频| 久久精品一区二区三区四区| 91亚洲人电影| www.久久久久久久| 亚洲大胆视频| 日韩在线欧美在线| 久久丫精品国产亚洲av不卡| 涩涩涩久久久成人精品| 精品久久久久久久久久久久久久| 一卡二卡3卡四卡高清精品视频| 亚洲卡一卡二卡三| 奇米一区二区三区av| 欧美黑人又粗大| 网站永久看片免费| 亚洲电影男人天堂| 精品国产乱码久久久久久图片| 色哟哟精品视频| 日本在线啊啊| 亚洲高清在线视频| 无颜之月在线看| 日本韩国在线视频爽| 久久综合久久综合久久| 114国产精品久久免费观看| 日本成人一级片| 国产精品美女久久久| 欧美国产日韩在线| www深夜成人a√在线| 青青草国产成人a∨下载安卓| 亚洲免费一在线| 亚洲一区二区三区四区五区六区 | 日韩免费av| 亚洲欧美中文另类| 免费看黄色aaaaaa 片| 精品国产一区二区三区不卡蜜臂| 欧美一级黄色录像| 国产又黄又猛的视频| 欧美123区| 欧美在线免费视屏| 一区二区三区免费播放| 毛片无码国产| 91久久线看在观草草青青| 日韩欧美一区二| 少妇视频一区| 一本色道a无线码一区v| 日韩视频第二页| 一区二区乱码| 91官网在线免费观看| 久久9精品区-无套内射无码| 中老年在线免费视频| 精品日韩中文字幕| 成年人视频网站免费观看| 美女91在线看| 色琪琪一区二区三区亚洲区| 国产精品久久久久9999小说| a屁视频一区二区三区四区| 欧美色综合影院| 福利片一区二区三区| 国产精品一区二区精品视频观看| 欧美一级高清片在线观看| 人妻巨大乳一二三区| 国产 日韩 欧美 综合 一区| 日韩av在线看| 一级黄色片网址| 99久久久久久中文字幕一区| 欧美成人免费一级人片100| 久久久久久久久久久久国产| 亚洲精品在线二区| 国产精品jvid在线观看蜜臀 | 蓝色福利精品导航| 91沈先生在线观看| 欧美一级做性受免费大片免费| 91偷拍与自偷拍精品| 午夜精品区一区二区三| 成人在线观看亚洲| 午夜精品影院在线观看| 成人3d动漫一区二区三区| 久久久久黄色| 精品国产污网站| xxxxx在线观看| 91精品国产乱码久久久久久 | 国产亚洲一区精品| 国产成人自拍网站| 亚洲综合国产| 成人午夜在线影院| 亚欧洲精品视频| 中文字幕中文字幕一区| 青草青青在线视频| 成人国产综合| 日韩高清免费在线| 欧美三级在线免费观看| 男女精品网站| 91丝袜脚交足在线播放| 免费一级在线观看播放网址| 亚洲精品国产无天堂网2021| 免费日韩视频在线观看| 日韩中文字幕无砖| 国产午夜精品视频免费不卡69堂| 久久国产精品二区| 麻豆国产精品视频| 精品一区二区三区国产| 97超碰资源站在线观看| 在线观看成人小视频| 波多野结衣办公室双飞| 国产精品videosex性欧美| 欧美在线观看一区二区三区| 国产伦精品一区二区三区视频痴汉 | 婷婷国产v国产偷v亚洲高清| 久久久精品视频国产| 激情五月综合| 91高清免费视频| 亚洲国产精品久久久久爰性色| 中文字幕av一区二区三区| 日韩av在线播放不卡| 久久久91麻豆精品国产一区| 夜夜嗨av一区二区三区免费区| 日韩精品视频免费看| 国产麻豆成人传媒免费观看| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 成人性生交大片免费网站| 精品国产精品网麻豆系列| 美女视频久久久| 麻豆成人在线观看| 日韩欧美亚洲v片| 超碰aⅴ人人做人人爽欧美| 精品免费视频一区二区| 校园春色 亚洲| 国产乱码精品一品二品| 黄色www在线观看| 欧美黄色成人| 日日狠狠久久偷偷四色综合免费| 波多野结衣网站| 国产农村妇女精品| av免费网站观看| 精品日韩一区| 国产精品黄视频| 国产精品一区二区三区四区色| 狠狠爱在线视频一区| 欧美深性狂猛ⅹxxx深喉| 日韩一级免费| 精品国产综合区久久久久久| sm在线播放| 日韩精品在线私人| 黄色av一级片| 中文字幕成人在线观看| 777视频在线| 日韩欧美高清在线播放| 国产日本欧美在线观看| 成人直播在线| 欧美变态tickle挠乳网站| 精品无码久久久久久久| 成人av电影在线| 成人毛片视频网站| 国产成人精品三级高清久久91| 国产成人精品亚洲精品| 在线观看免费版| 日韩三级视频在线看| 久久免费在线观看视频| av电影在线观看完整版一区二区| 97超碰青青草| 欧美综合在线视频观看 | 一道本无吗一区| 亚洲精品中文在线影院| 五十路六十路七十路熟婆| 久久www成人_看片免费不卡| 五月天色一区| 日韩影片在线观看| 国产成人97精品免费看片| av在线三区| 欧美v日韩v国产v| 特级做a爱片免费69| 国产精品无人区| 韩国av中国字幕| 噜噜噜久久亚洲精品国产品小说| 在线免费一区| 欧美三级午夜理伦三级小说| 国产精品美女免费| 日本欧美电影在线观看| 亚洲日本欧美日韩高观看| 国产人妻精品一区二区三区| 天天影视网天天综合色在线播放| 国产123在线| 白白色亚洲国产精品| 无限资源日本好片| 精品99视频| 亚洲va韩国va欧美va精四季| 亚洲一区二区三区免费| 国产成人精品免高潮费视频| 伊人在我在线看导航| 日韩av一卡二卡| 99视频免费看| 91成人免费在线| 久久国产在线观看| 国产精品久久久久永久免费观看| 成人做爰www看视频软件| 可以免费看不卡的av网站| 成人高清dvd| 日韩精品一区二区三区免费观影| 国外成人免费视频| 欧美高清一级片| 国产精品美女午夜av| 欧美aa在线观看| 欧美美女操人视频| 尤物网在线观看| 亚洲人成亚洲人成在线观看| 黄色a在线观看| 337p亚洲精品色噜噜| 国产乱码77777777| 婷婷丁香久久五月婷婷| 欧美日韩偷拍视频| 国产精品家庭影院| 欧美 日韩 成人| 91一区在线观看| 国产69视频在线观看| 国产乱码精品一品二品| 激情五月婷婷基地| 日本视频在线一区| 激情网站五月天| 亚洲欧美视频| 成人黄色av片| 伊人久久综合| 国产毛片久久久久久国产毛片| 亚洲精品电影| 国产日本欧美在线| 无需播放器亚洲| 一区二区三区的久久的视频| 日本高清免费电影一区| 色噜噜狠狠一区二区三区| 国产成人1区| 欧美三级电影在线播放| 久久91麻豆精品一区| 青青草国产精品| 精品中文字幕一区二区三区av| 久久免费视频1| 色狼人综合干| 美脚丝袜一区二区三区在线观看| 欧美巨大xxxx| 精品国产一区二区三区免费| 亚洲丝袜啪啪| 蜜桃麻豆www久久国产精品| 日韩成人一级| 欧美在线播放一区| 国产成人三级| 亚洲ai欧洲av| 婷婷精品进入| 大地资源网在线观看免费官网| 在线观看免费一区二区| 男人c女人视频| 亚洲片区在线| 免费在线观看日韩视频| 日本欧美一区二区三区乱码| 三上悠亚在线一区| 国产精品综合二区| 95视频在线观看| 久久久五月婷婷| 最新日韩免费视频| 亚洲欧美国产77777| 国产在线免费视频| 欧美午夜宅男影院在线观看| 波多野结衣网站| 日韩一区二区三区电影在线观看| 国 产 黄 色 大 片| 日韩av综合网站| eeuss影院www在线播放| 久久在精品线影院精品国产| 91超碰免费在线| 亚洲最色的网站| 精品人妻少妇一区二区| 亚洲精品三级| 成年网站在线播放| 国产.欧美.日韩| 国产真实乱人偷精品人妻| 成人欧美一区二区三区白人| 国产性70yerg老太| 色中色一区二区| 国产三级按摩推拿按摩| 亚洲精品国产电影| 久热国产在线| 3344国产精品免费看| 欧美高清免费| 乱一区二区三区在线播放| 亚洲色图88| 欧美成人xxxxx| 国产最新精品精品你懂的| 精品一区二区视频在线观看| 国产精品美女www爽爽爽| 日韩精品视频播放| 91精品国产综合久久福利| 日本在线一二三| 色与欲影视天天看综合网| 99久久久国产精品免费调教网站 | 久久91亚洲人成电影网站 | 欧美亚韩一区| 亚洲欧美另类动漫| av中文字幕亚洲| 中日韩一级黄色片| 色婷婷久久久久swag精品| 性做久久久久久久久久| 在线看福利67194| 九色porny自拍视频在线播放| 成人激情视频在线播放| 国产欧美一区二区三区精品观看| 日本福利视频一区| 精品一区二区在线看| 中文字幕在线观看免费高清| 亚洲午夜一区二区三区| 91资源在线视频| 亚洲色图五月天| 麻豆视频在线看| 高清不卡日本v二区在线| 天天综合网91| 日本特黄a级片| 国产夜色精品一区二区av| 日韩精品一区二区三区国语自制| 欧美一级久久久久久久大片| 在线国产91| 国产精品久久久久久久久男| 国产99久久| 漂亮人妻被中出中文字幕| 99re成人在线| 日韩女同强女同hd| 欧美va日韩va| 欧美寡妇性猛交xxx免费| 91理论片午午论夜理片久久| 久久一本综合| 天天综合网久久| 国产精品伦一区二区三级视频| 波多野结衣视频网站| 日韩av一区在线观看| 免费高潮视频95在线观看网站| 成人午夜影院在线观看| 欧美日韩网站| 成人啪啪18免费游戏链接| 亚洲综合一区二区精品导航| www.四虎在线观看| 久久91精品国产91久久久| 中文无码日韩欧| 国产va亚洲va在线va| 岛国精品在线观看| 日韩成人免费观看| 精品精品欲导航| 国产在线精彩视频| 农村寡妇一区二区三区| 久久综合图片| 成人午夜免费影院| 制服丝袜中文字幕一区| 色www永久免费视频首页在线 | 亚洲已满18点击进入久久| 亚洲xxx在线| 91精品国产91久久久久久不卡| 任你躁在线精品免费| 成人在线观看a| 国产精品久久久久天堂| www.av黄色| 992tv成人免费影院| 精品国产乱码久久久| 久久久精品高清| 亚洲成人在线观看视频| 亚洲AV第二区国产精品| 国产精品日韩久久久久| 亚洲精品a级片| 国产 中文 字幕 日韩 在线| 欧美性猛交xxxx黑人交| av免费在线观看网址| 国产精品一区二区欧美黑人喷潮水 | 久久久久久麻豆| 91影院在线播放| 久久久久久中文| 禁果av一区二区三区| 手机精品视频在线| 欧美日韩另类字幕中文| 在线看黄色av| 精品久久久久久一区二区里番| 日产国产高清一区二区三区| 久热这里有精品| 日韩精品www| 欧美日韩黄网站| 37pao成人国产永久免费视频| 中文字幕一区二区视频| 日本毛片在线观看| 国产精品视频免费在线观看| 欧美日韩影院| 欧美人与禽zoz0善交| 精品国产一区二区三区忘忧草| 一区二区视频免费完整版观看| 亚洲区成人777777精品| 国产亚洲制服色| 亚洲国产综合网| 国产在线观看一区二区三区| 久久国产直播| 久艹视频在线观看|