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

5張圖帶你徹底理解G1垃圾收集器

開發(fā) 前端
作為一款高效的垃圾收集器,G1在JDK7中加入JVM,在JDK9中取代CMS成為了默認(rèn)的垃圾收集器。

[[417614]]

本文轉(zhuǎn)載自微信公眾號「程序員jinjunzhu」,作者jinjunzhu。轉(zhuǎn)載本文請聯(lián)系程序員jinjunzhu公眾號。

作為一款高效的垃圾收集器,G1在JDK7中加入JVM,在JDK9中取代CMS成為了默認(rèn)的垃圾收集器。

1 垃圾收集器回顧

1.1 新生代

新生代采用復(fù)制算法,主要的垃圾收集器有三個,Serial、Parallel New 和 Parallel Scavenge,特性如下:

Serial:單線程收集器,串行方式運行,GC 進行時,其他線程都會停止工作。在單核 CPU 下,收集效率最高。

Parallel New:Serial 的多線程版本,新生代默認(rèn)收集器。在多核 CPU 下,效率更高,可以跟CMS收集器配合使用。

Parallel Scavenge:多線程收集器,更加注重吞吐量,適合交互少的任務(wù),不能跟 CMS 配合使用。

1.2 老年代

Serial Old:采用標(biāo)記-整理(壓縮)算法,單線程收集。

Parallel Old:采用標(biāo)記-整理(壓縮)算法,可以跟 Parallel Scavenge 配合使用

CMS:Concurrent Mark Sweep,采用標(biāo)記-清除算法,收集線程可以跟用戶線程一起工作。

CMS缺點:吞吐量低、無法處理浮動垃圾、標(biāo)記清除算法會產(chǎn)生大量內(nèi)存碎片、并發(fā)模式失敗后會切到Serial old。

G1:把堆劃分成多個大小相等的Region,新生代和老年代不再物理隔離,多核 CPU 和大內(nèi)存的場景下有很好的性能。新生代使用復(fù)制算法,老年代使用標(biāo)記-壓縮(整理)算法。

2 G1介紹

2.1 初識G1

G1垃圾收集器主要用于多處理器、大內(nèi)存的場景,它有五個屬性:分代、增量、并行(大多時候可以并發(fā))、stop the word、標(biāo)記整理。

  • 分代:跟其他垃圾收集器一樣,G1把堆分成了年輕代和老年代,垃圾收集主要在年輕代,并且年輕代回收效率最高。偶爾也會在老年代進行回收。
  • 增量:為了讓垃圾收集時STW時間更短,G1采用增量和分步進行回收。G1通過對應(yīng)用之前的行為和停頓時間進行分析構(gòu)建出可預(yù)測停頓時間模型,并且利用這個信息來預(yù)測停頓時間內(nèi)的垃圾收集情況。比如:G1會首先回收那些收集效率高的內(nèi)存區(qū)域(這些區(qū)別大部分空間是可回收垃圾,這也是為啥叫G1的原因)。
  • 并行和并發(fā):為了提高吞吐量,一些操作需要STW。一些需要花費很多時間的操作,比如整堆操作(像全局標(biāo)記)可以并發(fā)執(zhí)行,同時可以并發(fā)跟應(yīng)用并行執(zhí)行。
  • 標(biāo)記整理:G1主要使用標(biāo)記整理算法來進行垃圾收集,把存活對象復(fù)制到一個新的區(qū)域,然后進行壓縮,之前的區(qū)域就可以重新為新的對象分配空間了。如下圖:

我們知道,垃圾收集器的一個目標(biāo)就是STW(stop the word)越短越好。利用可預(yù)測停頓時間模型,G1為垃圾收集設(shè)定一個STW的目標(biāo)時間(通過 -XX:MaxGCPauseMillis 參數(shù)設(shè)定,默認(rèn)200ms),G1盡可能地在這個時間內(nèi)完成垃圾收集,并且在不需要額外配置的情況下實現(xiàn)高吞吐量。

G1致力于在下面的應(yīng)用和環(huán)境下尋找延遲和吞吐量的最佳平衡:

  • 堆大小達(dá)到10GB以上,并且一半以上的空間被存活的對象占用
  • 隨著系統(tǒng)長期運行,對象分配和升級速率變化很快
  • 堆中存在大量內(nèi)存碎片
  • 垃圾收集時停頓時間不能超過幾百毫秒,避免垃圾收集造成的長時間停頓。

如果在JDK8中使用G1,我們可以使用參數(shù) -XX:+UseG1GC 來開啟。

G1并不是一款實時收集器,它盡最大努力以高性能完成 MaxGCPauseMillis 設(shè)置的停頓時間,但并不能絕對保證在這個時間內(nèi)完成收集。

2.2 堆布局

G1把整個堆分成了大小相等的region,每一個region都是連續(xù)的虛擬內(nèi)存,region是內(nèi)存分配和回收的基本單位。如下圖:

紅色帶"S"的region表示新生代的survivor,紅色不帶"S"的表示新生代eden,淺藍(lán)色不帶"H"的表示老年代,淺藍(lán)色帶"H"的表示老年代中的大對象。跟G1之前的內(nèi)存分配策略不同的是,survivor、eden、老年代這些區(qū)域可能是不連續(xù)的。

G1在停頓的時候可以回收整個新生代的region,新生代region的對象要不復(fù)制到survivor區(qū)要不復(fù)制到老年代region。同時每次停頓都可以回收一部分老年代的內(nèi)存,把老年代從一個region復(fù)制到另一個region。

2.3 關(guān)于region

上一節(jié)我們看到,整個堆內(nèi)存被G1分成了多個大小相等的region,每個堆大約可以有2048個region,每個region大小為 1~32 MB(必須是2的次方)。region的大小通過 -XX:G1HeapRegionSize 來設(shè)置,所以按照默認(rèn)值來G1能管理的最大內(nèi)存大約 32MB * 2048 = 64G。

2.4 大對象

大對象是指大小超過了region一半的對象,大對象可以橫跨多個region,給大對象分配內(nèi)存的時候會直接分配在老年代,并不會分配在eden區(qū)。

如下圖,一個大對象占據(jù)了兩個半region,給大對象分配內(nèi)存時,必須從一個region開始分配連續(xù)的region,在大對象被回收前,最后一個region不能被分配給其他對象。

大對象什么時候回收?通常,只有在mark結(jié)束以后的Cleanup停頓階段或者FullGC的時候,死亡的大對象才會被回收掉。但是,基本類型(比如bool數(shù)組、所有的整形數(shù)組、浮點型數(shù)組等)的數(shù)組大對象有個例外,G1會在任何GC停頓的時候回收這些死亡大對象。這個默認(rèn)是開啟的,但是可以使用 -XX:G1EagerReclaimHumongousObjects 這個參數(shù)禁用掉。

分配大對象的時候,因為占用空間太大,可能會過早發(fā)生GC停頓。G1在每次分配大對象的時候都會去檢查當(dāng)前堆內(nèi)存占用是否超過初始堆占用閾值IHOP(The Initiating Heap Occupancy Percent),如果當(dāng)前的堆占用率超過了IHOP閾值,就會立刻觸發(fā) initial mark。關(guān)于initial mark詳見第4節(jié)。

即使是在FullGC的時候,大對象也是永遠(yuǎn)不會被移動的。這可能導(dǎo)致過早發(fā)生FullGC或者是意外的OOM,因為此時雖然還有大量的空閑內(nèi)存,但是這些內(nèi)存都是region中的內(nèi)存碎片。

3 內(nèi)存分配

G1雖然把堆內(nèi)存劃分成了多個region,但是依然存在新生代和老年代的概念。G1新增了2個控制新生代內(nèi)存大小的參數(shù),-XX:G1NewSizePercent(默認(rèn)等于5),-XX:G1MaxNewSizePercent(默認(rèn)等于60)。也就是說新生代大小默認(rèn)占整個堆內(nèi)存的 5% ~ 60%。

根據(jù)前面介紹,一個堆大概可以分配2048個region,每個region最大32M,這樣G1管理的整個堆的大小最大可以是64G,新生代占用的大小范圍是 3.2G ~ 38.4G。

對于 -XX:G1NewSizePercent 和 -XX:G1MaxNewSizePercent,下面幾個問題需要注意:

  • 如果設(shè)置了-Xmn,那這兩個參數(shù)是否生效?

生效,比如堆大小是64G,設(shè)置 -Xmn3.2G,那么就等價于 -XX:G1NewSizePercent=5 并且 -XX:G1MaxNewSizePercent=5,因為3.2G/64G = 5%。

  • 如果設(shè)置了 -XX:NewRatio,這兩個參數(shù)是否生效?

生效,比如堆大小是64G,設(shè)置 -XX:NewRatio=3,那么就等價于 -XX:G1NewSizePercent=25 并且 -XX:G1MaxNewSizePercent=25。因為年輕代:老年代 = 1 :3,說明年輕代占1/4 = 25%。

  • 如果 -XX:G1NewSizePercent 和 -XX:G1MaxNewSizePercent 只設(shè)置其中一個,那這兩個參數(shù)還生效嗎?

設(shè)置的這個參數(shù)不生效,兩個參數(shù)都用默認(rèn)值。

  • 如果-XX:G1NewSizePercent 和 -XX:G1MaxNewSizePercent 這兩個參數(shù)都生效了,什么時候動態(tài)擴容?

跟 -XX:GCTimeRatio 這個參數(shù)相關(guān)。這個參數(shù)為0~100之間的整數(shù)(G1默認(rèn)是9, 其它收集器默認(rèn)是99),值為 n 則系統(tǒng)將花費不超過 1/(1+n) 的時間用于垃圾收集。因此G1默認(rèn)最多 10% 的時間用于垃圾收集,如果垃圾收集時間超過10%,則觸發(fā)擴容。如果擴容失敗,則發(fā)起Full GC。

4 垃圾回收

G1的垃圾收集是在 Young-Only 和 Space-Reclamation兩個階段交替執(zhí)行的。如下圖:

young-only階段會用對象逐步把老年代區(qū)域填滿,space-reclamation階段除了會回收年輕代的內(nèi)存以外,還會增量回收老年代的內(nèi)存。完成后重新開始young-only階段。

4.1 Young-only

Young-only階段流程如下圖:

這個階段從普通的 young-only GC 開始,young-only GC把一些對象移動到老年代,當(dāng)老年代的空間占用達(dá)到IHOP時,G1就停止普通的young-only GC,開始初始標(biāo)記(Initial Mark)。

  • 初始標(biāo)記:這個過程除了普通的 young-only GC 外,還會開始并發(fā)標(biāo)記過程,這個過程決定了被標(biāo)記的老年代存活對象在下一次space-reclamation階段會被保留。這個過程不會STW,有可能標(biāo)記還沒有結(jié)束普通的 young-only GC 就開始了。這個標(biāo)記過程需要在重新標(biāo)記(Remark)和清理(Cleanup)兩個過程后才能結(jié)束。
  • 重新標(biāo)記: 這個過程會STW,這個過程做全局引用和類卸載。
  • 在重新標(biāo)記和清理這兩個階段之間G1會并發(fā)計算對象存活信息,這個信息用于清理階段更新內(nèi)部數(shù)據(jù)結(jié)構(gòu)。
  • 清理階段:

這個節(jié)點回收所有的空閑區(qū)域,并且決定是否接著執(zhí)行一次space-reclamation,如果是,則僅僅執(zhí)行一次單獨的young-only GC,young-only階段就結(jié)束了。

關(guān)于IHOP,默認(rèn)情況下,G1會觀察標(biāo)記周期內(nèi)標(biāo)記花了多少時間,老年代分配了多少內(nèi)存,以此來自動確定一個最佳的IHOP,這叫做自適應(yīng)IHOP。如果開啟這個功能,因為初始時沒有足夠的觀察數(shù)據(jù)來確定IHOP,G1會用參數(shù) -XX:InitiatingHeapOccupancyPercent 來指定初始IHOP。可以用 -XX:-G1UseAdaptiveIHOP 參數(shù)關(guān)閉自適應(yīng)IHOP,這樣IHOP就參數(shù) -XX:InitiatingHeapOccupancyPercent 指定的固定值。自適應(yīng)IHOP這樣設(shè)置老年代占有率,當(dāng)老年代占有率=老年代最大占有率 - 參數(shù) -XX:G1HeapReservePercent 值時,啟動space-reclamation階段的第一個Mixed GC。這里參數(shù) -XX:G1HeapReservePercent 作為一個額外的緩存值。

關(guān)于標(biāo)記,標(biāo)記使用 SATB 算法,初始標(biāo)記開始時,G1保存堆的一份虛擬鏡像,這份鏡像存活的對象在后續(xù)的標(biāo)記過程中也被認(rèn)為是存活的。這有一個問題,就是標(biāo)記過程中如果部分對象死亡了,對于 space-reclamation 階段來說它們?nèi)匀皇谴婊畹?也有少部分例外)。跟其他垃圾收集器相比,這會導(dǎo)致一部分死亡對象被錯誤保留,但是為標(biāo)記階段提供了更好的吞吐量,而且這些錯誤保留的對象會在下一次標(biāo)記階段被回收。

在young-only階段,要回收新生代的region。每一次 young-only 結(jié)束的時候,G1總是會調(diào)整新生代大小。G1可以使用參數(shù) -XX:MaxGCPauseTimeMillis和 -XX:PauseTimeIntervalMillis 來設(shè)置目標(biāo)停頓時間,這兩個參數(shù)是對實際停頓時間的長期觀察得來的。他會根據(jù)在GC的時候要拷貝多少個對象,對象之間是如何相互關(guān)聯(lián)的等信息計算出來回收相同大小的新生代內(nèi)存需要花費多少時間,

如果沒有其他的限定條件,G1會把young區(qū)的大小調(diào)整為 -XX:G1NewSizePercent和 -XX:G1MaxNewSizePercent 之間的值來滿足停頓時間的要求。

4.2 Space-reclamation

這個階段由多個Mixed GC組成,不光回收年輕代垃圾,也回收老年代垃圾。當(dāng) G1 發(fā)現(xiàn)回收更多的老年代區(qū)域不能釋放更多空閑空間時,這個階段結(jié)束。之后,周期性地再次開啟一個新的Young-only階段。

當(dāng)G1收集存活對象信息時內(nèi)存不足,G1會做一個Full GC,并且會STW。

在 space-reclamation 階段,G1會盡量在GC停頓時間內(nèi)回收盡可能多的老年代內(nèi)存。這個階段新生代內(nèi)存大小被調(diào)整為 -XX:G1NewSizePercent 設(shè)置的允許的最小值,只要存在可回收的老年代region就會被添加到回收集合中,直到再添加會超出目標(biāo)停頓時間為止。在特定的某個GC停頓時間內(nèi),G1會按照這老年代region回收的效率(效率高的優(yōu)先收集)和剩余可用時間來得到最終待回收region集合。

每一個GC停頓期間要回收的老年代region數(shù)量受限于候選region集合數(shù)量除以 -XX:G1MixedGCCountTarget 這個參數(shù)值,參數(shù) -XX:G1MixedGCCountTarget 指定一個周期內(nèi)觸發(fā)Mixed GC最大次數(shù),默認(rèn)值8。比如 -XX:G1MixedGCCountTarget 采用默認(rèn)值8,候選region集合有200個region,那每次停頓期間收集25個region。

候選region集合是老年代中所有占用率低于 -XX:G1MixedGCLiveThresholdPercent 的region。

當(dāng)待回收region集合中可回收的空間占用率低于參數(shù)值 -XX:G1HeapWastePercent 的時候,Space-Reclamation結(jié)束。

4.3 內(nèi)存緊張情況

當(dāng)應(yīng)用存活對象占用了大量內(nèi)存,以至于回收剩余對象沒有足夠的空間拷貝時,就會觸發(fā) evacuation failure。這時G1為了完成當(dāng)前的垃圾收集,會保留已經(jīng)位于新的位置上的存活對象不動,對于沒有移動和拷貝的對象就不會進行拷貝了,僅僅調(diào)整對象間的引用。

evacuation failure會導(dǎo)致一些額外的開銷,但是一般會跟其他 young GC 一樣快。evacuation failure完成以后,G1會跟正常情況下一樣繼續(xù)恢復(fù)應(yīng)用的執(zhí)行。G1會假設(shè) evacuation failure是發(fā)生在GC的后期,這時大部分對象已經(jīng)移動過了,并且已經(jīng)有足夠的內(nèi)存來繼續(xù)執(zhí)行應(yīng)用程序一直到 mark 結(jié)束 space-reclamation 開始。如果這個假設(shè)不成立(也就是說沒有足夠的內(nèi)存來執(zhí)行應(yīng)用程序),G1最終只能發(fā)起Full GC,對整個堆做壓縮,這個過程可能會非常慢。

5 跟其他收集器比較

5.1 Parallel GC

Parallel GC 可以壓縮和回收老年代的內(nèi)存,但是也只能對老年代整體來操作。G1以增量的方式把整個GC工作增量的分散到多個更短的停頓時間中,當(dāng)然這可能會犧牲一定吞吐量。

5.2 CMS

跟CMS類似,G1并發(fā)回收老年代內(nèi)存,但是,CMS采用標(biāo)記-清除算法,不會處理老年代的內(nèi)存碎片,最終就會導(dǎo)致長時間的FullGC。

5.3 G1問題

因為采用并發(fā)收集,G1的性能開銷會更大,這可能會影響吞吐量。

5.4 G1優(yōu)勢

G1在任何的GC期間都可以回收老年代中全空或者占用大空間的內(nèi)存。這可以避免一些不必要的GC,因為可以非常輕易地釋放大量的內(nèi)存空間。這個功能默認(rèn)開啟,可以采用 -XX:-G1EagerReclaimHumongousObjects 參數(shù)關(guān)閉。

G1可以選擇對整個堆里面的String進行并行去重。這個功能默認(rèn)關(guān)閉,可以使用參數(shù) -XX:+G1EnableStringDeduplication 來開啟。

6 總結(jié)

本文詳細(xì)介紹了G1垃圾收集器,希望能夠?qū)δ憷斫釭1有所幫助。

參考:

https://docs.oracle.com/javase/10/gctuning/garbage-first-garbage-collector.htm#JSGCT-GUID-CE6F94B6-71AF-45D5-829E-DEADD9BA929D

 

https://mp.weixin.qq.com/s/KkA3c2_AX6feYPJRhnPOyQ

 

責(zé)任編輯:武曉燕 來源: 程序員jinjunzhu
相關(guān)推薦

2023-11-16 08:00:56

Java11G1

2015-06-17 14:10:52

OracleJava 9垃圾收集器

2025-07-11 02:33:00

JVM垃圾回收

2022-02-28 11:10:42

ZGCG1收集器

2015-07-29 10:28:59

JVM參數(shù)配置參數(shù)

2022-07-11 11:06:11

RocketMQ函數(shù).消費端

2009-08-14 08:56:49

Java垃圾回收器G1

2021-05-18 06:55:07

Java AQS源碼

2022-07-04 11:06:02

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

2025-05-16 08:00:00

2009-07-24 09:41:45

Java 7 G1垃圾回收器

2020-02-25 22:01:36

理解JVM垃圾收集器

2024-03-14 09:00:00

2011-07-21 14:54:26

java垃圾收集器

2009-10-30 10:47:48

VB.NET垃圾收集器

2017-09-21 14:40:06

jvm算法收集器

2022-07-25 10:15:29

垃圾收集器Java虛擬機

2021-12-06 07:15:47

Pulsar地域復(fù)制

2024-04-29 08:20:40

Java后端Redlock

2024-10-22 16:26:11

點贊
收藏

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

一区二区三区免费播放| 亚洲精品久久区二区三区蜜桃臀| 国产香蕉视频在线| 国产一区不卡| 4438亚洲最大| 免费一级特黄特色毛片久久看| 蜜芽tv福利在线视频| 国产精品资源网| 日本精品视频在线播放| 欧美黑人性猛交xxx| 天堂成人娱乐在线视频免费播放网站| 欧美性色欧美a在线播放| 成人国产在线看| 成人亚洲性情网站www在线观看| 韩国一区二区三区| 日韩av手机在线看| 日韩三级视频在线播放| 97国产成人高清在线观看| 亚洲黄页网在线观看| 天堂av8在线| 九九热线视频只有这里最精品| 亚洲在线中文字幕| 自拍偷拍99| 噜噜噜在线观看播放视频| 成人午夜精品在线| 成人久久一区二区| 中日精品一色哟哟| 亚洲专区一区| 91国产美女在线观看| 91成人福利视频| 午夜影院欧美| 日韩有码在线播放| 黄色av免费播放| 欧美人与拘性视交免费看| 亚洲激情小视频| 亚洲精品乱码久久久久久9色| 久久青草视频| 欧美午夜精品一区| 少妇黄色一级片| 成人日韩在线观看| 色悠久久久久综合欧美99| www.av毛片| 欧美aaaaaaa| 一区二区三区四区不卡在线 | 成年人观看网站| 91资源在线观看| 亚洲v日本v欧美v久久精品| 可以在线看黄的网站| 免费av网站在线看| 国产精品网站在线| 亚洲精品欧美精品| 亚洲成人三级| ...xxx性欧美| 欧洲金发美女大战黑人| 成年视频在线观看| 一区二区三区中文字幕电影 | 国产自产自拍视频在线观看| 亚洲一区二区五区| 丁香花在线影院观看在线播放| 黑人另类精品××××性爽| 亚洲一区二区三区四区中文字幕| 国产www免费| 岛国av在线播放| 欧美日韩一区二区免费在线观看| 男女高潮又爽又黄又无遮挡| 美女100%一区| 欧美视频在线观看一区| 色婷婷激情视频| 成人免费在线电影网| 亚洲国产精品大全| 受虐m奴xxx在线观看| 日韩免费视频| 久久999免费视频| 91视频免费网址| 日韩精品欧美精品| 91嫩草在线视频| 亚洲精品字幕在线| 久久综合五月天婷婷伊人| 日韩一区二区三区资源| 黄av在线免费观看| 黄色成人在线免费| 国产xxxxx视频| 久久天堂久久| 日韩精品亚洲精品| 91久久久久久久久久久久久久| 欧美精品一线| 国产成人拍精品视频午夜网站| 国产一区二区麻豆| av亚洲精华国产精华精华 | 888av在线| 亚洲愉拍自拍另类高清精品| 国产在线青青草| 亚洲在线资源| 日韩精品亚洲元码| 成人免费毛片东京热| 视频一区视频二区中文字幕| 91日本视频在线| 日av在线播放| 亚洲美女视频在线| 男女无套免费视频网站动漫| 第四色中文综合网| 中文字幕精品网| 国产午夜视频在线| 久久丁香综合五月国产三级网站| 亚洲欧美日韩国产另类专区| 精品免费在线观看| 欧美 国产 小说 另类| 国产精品第一| 亚洲国产精品成人av| 五月激情四射婷婷| 日韩午夜免费| 成人亚洲激情网| 深夜视频在线免费| 亚洲黄色免费电影| 色悠悠久久综合网| 欧美亚洲大陆| 欧美大片va欧美在线播放| wwwwww在线观看| 99精品视频一区| 欧美日韩中文字幕在线播放 | 久久久噜久噜久久综合| 中文字字幕在线中文乱码| 99v久久综合狠狠综合久久| 伊人久久大香线蕉精品| 电影一区二区三区| 亚洲黄页视频免费观看| 久久97人妻无码一区二区三区| 免费不卡在线视频| 欧洲成人一区二区| 蜜桃视频动漫在线播放| 精品国产乱码久久久久久老虎| 婷婷国产成人精品视频| 秋霞影院一区二区| 日产精品久久久一区二区| 成人免费观看在线观看| 精品国产一区二区三区久久久蜜月| 日韩免费av一区| 日韩va亚洲va欧美va久久| 蜜桃av色综合| 在线观看涩涩| 亚洲精品综合久久中文字幕| 精品国产乱码一区二区| 99在线精品免费| 黄色国产一级视频| 秋霞在线一区| 国产不卡av在线| 国产在线视频资源| 色94色欧美sute亚洲线路一ni| jizz欧美性20| 日韩精品一级中文字幕精品视频免费观看 | 亚洲最大成人综合| 国产视频精品视频| 亚洲国产午夜| 蜜桃999成人看片在线观看| 美女日韩欧美| 中文字幕欧美日韩精品| 136福利视频导航| 亚洲免费av在线| 亚洲麻豆一区二区三区| 国产视频一区在线观看一区免费| 久久精品国产一区二区三区日韩| 中国色在线日|韩| 国产一区二区三区18| 在线不卡免费视频| 一区二区三区成人| 国产黄色三级网站| 水野朝阳av一区二区三区| 日韩理论片在线观看| 欧美天堂一区二区| 欧美激情一二三| 日本亚洲一区| 欧美日韩一本到| 青青草手机在线观看| av一二三不卡影片| 男人搞女人网站| 91精品天堂福利在线观看| 国产福利久久精品| 电影一区二区三| 欧美老女人性视频| 外国精品视频在线观看 | 精品国产av一区二区三区| 亚洲va国产天堂va久久en| 亚洲综合色一区| 国产一区二区不卡在线| 欧美不卡在线播放| 久久中文字幕二区| 久草一区二区| 亚洲成人高清| 5566日本婷婷色中文字幕97| 欧美96在线| 日韩av一区在线观看| ,亚洲人成毛片在线播放| 五月天中文字幕一区二区| 欧美大波大乳巨大乳| 国产精品影音先锋| 看欧美ab黄色大片视频免费| 韩国一区二区三区在线观看| 日韩av不卡播放| www.久久东京| 国产精品自拍小视频| 99re6在线精品视频免费播放| 深夜福利亚洲导航| 日本一二三区在线视频| 欧美va亚洲va国产综合| 最近中文字幕免费观看| 舔着乳尖日韩一区| 免费在线黄色片| 国产精品福利一区二区三区| 青青草成人免费视频| 国产乱子伦一区二区三区国色天香 | 在线中文字幕电影| 一区二区欧美久久| 五月激情婷婷网| 日韩欧美激情一区| 亚洲一级特黄毛片| 欧美亚洲日本国产| 一区二区三区在线观看av| 一区二区三区欧美亚洲| 中文字幕91视频| 26uuu精品一区二区三区四区在线| 两女双腿交缠激烈磨豆腐| 久久精品国产精品亚洲红杏| 爱福利视频一区二区| 国内精品福利| 国产爆乳无码一区二区麻豆| 久久久久电影| 中文字幕一区二区三区有限公司 | 四虎影视国产精品| 国产精品扒开腿做爽爽爽男男| free性m.freesex欧美| 欧美韩国理论所午夜片917电影| 黄色小网站在线观看| 中国日韩欧美久久久久久久久| 欧美18xxxxx| 亚洲欧美999| 亚洲欧洲成人在线| 日韩精品在线影院| 日本高清中文字幕二区在线| 精品视频—区二区三区免费| 女人18毛片一区二区三区| 日韩一级片在线播放| 国产高清免费av| 欧美一区二区三区在线观看 | 青青草原网站在线观看| 91精品一区二区三区综合在线爱| 一本一道久久a久久精品综合 | 狠狠干视频网站| 欧美成人一品| 国产成人永久免费视频| 韩日精品视频| 国产在线播放观看| 免费亚洲视频| 成年网站在线播放| 国产在线一区二区综合免费视频| 奇米777在线| 成人国产精品免费网站| theav精尽人亡av| 欧美国产在线观看| 无码人妻精品中文字幕| 一区二区三区欧美| 欧美激情黑白配| 欧美亚洲尤物久久| 国产欧美久久久精品免费| 日韩三级精品电影久久久| 日韩在线观看视频一区二区三区| 日韩精品久久久久久福利| 国产福利电影在线| 久久国产精品网站| 三级中文字幕在线观看| 国产激情综合五月久久| 9999精品视频| 精品蜜桃传媒| 久久一级电影| av无码久久久久久不卡网站| 米奇777在线欧美播放| 午夜剧场在线免费观看| 成人在线视频首页| 制服 丝袜 综合 日韩 欧美| ●精品国产综合乱码久久久久| 久久综合成人网| 91久久精品一区二区二区| 在线免费看毛片| 亚洲国产福利在线| 五月天婷婷在线视频| 久久久久久久久国产精品| 3d欧美精品动漫xxxx无尽| 97人人模人人爽人人喊38tv| 蜜桃国内精品久久久久软件9| 一区二区在线观| 亚洲深夜av| 丰满人妻一区二区三区大胸 | 亚洲四虎影院| 国产chinese精品一区二区| 沈樵精品国产成av片| 国产 欧美 日本| 日韩av成人高清| 在线观看av中文字幕| 亚洲欧美怡红院| 丁香社区五月天| 亚洲激情视频网站| 91福利国产在线观看菠萝蜜| 日韩免费av片在线观看| 中文在线综合| 成人手机视频在线| 日欧美一区二区| 亚洲av无码一区二区三区观看| 中文字幕一区在线观看视频| 一二三区免费视频| 亚洲国产精品va在线看黑人动漫 | 亚洲精品成人精品456| 免费看av在线| 亚洲精品一区中文字幕乱码| 啦啦啦中文在线观看日本| 成人写真福利网| 奇米影视亚洲| 亚洲人成无码www久久久| 成a人片亚洲日本久久| 国产又黄又爽又无遮挡| 欧美日韩国产123区| av在线播放网| 日韩美女视频在线观看| 日韩有码中文字幕在线| 18禁裸男晨勃露j毛免费观看 | 制服丝袜第二页| 亚洲第一久久影院| 亚洲AV无码乱码国产精品牛牛| 日韩中文字幕免费视频| 欧洲成人一区| 日本在线观看不卡| 日日噜噜夜夜狠狠视频欧美人 | 九一精品国产| 国产亚洲精品网站| 久久久天堂av| 亚洲精品久久久久久久蜜桃| 日韩精品免费观看| 色资源二区在线视频| 精品无码久久久久久久动漫| 激情视频一区| 一起草在线视频| 日韩欧美在线国产| 青青草在线视频免费观看| 欧美洲成人男女午夜视频| 欧美男人操女人视频| 日韩少妇内射免费播放| 99麻豆久久久国产精品免费| 国产一级精品视频| 亚洲乱码一区av黑人高潮 | 影音先锋久久精品| 国产69视频在线观看| 亚洲h精品动漫在线观看| 五月天婷婷社区| 日本不卡免费高清视频| 黄色不卡一区| 91亚洲精品久久久蜜桃借种| 日韩毛片在线免费观看| www.黄色av| 97视频免费看| 国产精品手机在线播放| 高清av免费看| 亚洲精品乱码久久久久久日本蜜臀| 亚洲经典一区二区三区| 97免费在线视频| 精品香蕉视频| 爱情岛论坛亚洲自拍| 亚洲成人黄色影院| 极品白浆推特女神在线观看| 国产精品视频资源| 欧美精品不卡| 可以直接看的无码av| 欧洲另类一二三四区| 国产视频中文字幕在线观看| 国产一区二区三区色淫影院| 久久久久久黄| 日日噜噜夜夜狠狠久久波多野| 欧美大片国产精品| 日本综合字幕| 精品国产三级a∨在线| 99v久久综合狠狠综合久久| 在线观看中文字幕码| 久久免费国产视频| 欧美丝袜一区| 人妻 丝袜美腿 中文字幕| 日本福利一区二区| av免费在线观看网站| 欧美激情第六页| 国产精品中文字幕欧美| 无码人妻精品一区二区蜜桃色欲 | 青娱乐国产在线| 亚洲无亚洲人成网站77777| 日韩一二三区| 欧美黑人又粗又大又爽免费| 日韩久久一区二区| 日韩美女一级视频| 999国内精品视频在线| 久久精品欧洲| 日本免费在线播放| 久久精品2019中文字幕| 夜色77av精品影院| 波多野吉衣在线视频| 精品视频色一区|