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

G1 面向服務(wù)端(多CPU)應(yīng)用的垃圾回收器

開發(fā) 前端
垃圾回收器可以說事Java的基石之一,垃圾回收器的實現(xiàn)充滿了大量的實現(xiàn)細(xì)節(jié),對于一些優(yōu)化十分具有參考價值。

總則:首先收集盡可能多的垃圾(Garbage First)

一定程度上,可以理解為 是CMS在全局不分區(qū)的一種改進。G1并不會等內(nèi)存耗盡(串行、并行)或者快耗盡(CMS)的時候開始垃圾收集,而是在內(nèi)部采用了啟發(fā)式算法,在老年代找出具有高收集收益的分區(qū)進行收集。

特點:

并發(fā)與并行:G1能充分的利用多CPU,多核環(huán)境下的硬件優(yōu)勢,使用多個CPU來縮短STW停頓時間。部分收集器需要停頓Java線程來執(zhí)行GC動作,G1收集器仍然可以通過并發(fā)的方式讓java程序繼續(xù)運行。

分代收集:G1可以獨自管理整個Java堆,只進行邏輯上的年輕代與老年代的區(qū)別。采用不同的方式去處理新創(chuàng)建的對象和已經(jīng)存活了一段時間的對象和已經(jīng)熬過多次GC的舊對象以獲得更好的收集效果。

空間整合:G1運作期間不會產(chǎn)生空間鎖片,收集后能提供規(guī)整可用的內(nèi)存。G 1將內(nèi)存劃分為一個個相等大小的內(nèi)存分區(qū),回收時則以分區(qū)為單位進行回收,存活的對象復(fù)制到另一個空閑分區(qū)中。由于都是以相等大小的分區(qū)為單位進行操作,因此G1天然就是一種壓縮方案(局部壓縮);

可預(yù)測的停頓:G1除了追求低停頓外,還能建立可以預(yù)測停頓時間的模型。能讓使用者明確指定在一個長度為M毫秒的時間段,消耗在垃圾回收上的時間不超過N毫秒。可以根據(jù)用戶設(shè)置的暫停時間目標(biāo)自動調(diào)整年輕代和總堆大小,暫停目標(biāo)越短年輕代空間越小、總空間就越大;

G1模型

內(nèi)存模型

分區(qū)(Region)

G1采用了內(nèi)存分區(qū)的概念,將整堆分為若干大小相等的區(qū)域逐步使用;G1僅要求對象邏輯上連續(xù)。區(qū)域也不會跟代進行綁定,可以切換代所屬。可以通過 -XX:G1HeapRegionSize=n設(shè)置整堆的大小(1-32mb,2^n),默認(rèn)將整堆劃分為2048個分區(qū)。說白了就是-Xms /2048 ,如果這個值小于1,則取值為1,大于32則取值32;其它值則取與2,4,8,16相近的。

卡片(card)

每個分組內(nèi)部劃分多個大小為512byte的卡片。同時G1 GC為每個區(qū)間設(shè)置了一個全局內(nèi)存塊表(Global Card Table)來幫助維護所有的堆內(nèi)存塊。內(nèi)存回收是對卡片進行處理的。

堆 (head)

代表整體空間總大小。可用-Xms/-Xmx來指定。在發(fā)生年輕代收集或混合收集的時候,會通過計算GC與應(yīng)用的耗費時間比,自動調(diào)整堆空間。GC頻率高則增大堆空間,GC占用時間高則減小堆空間。GC時間與應(yīng)用耗時比默認(rèn)為9。空間不足時會先嘗試擴容,失敗則進行Full GC。

分代模型

分代的分割

更關(guān)心最近被分配的對象,避免對長生命周期的對象進行改動。借鑒了分代思想,將內(nèi)存區(qū)邏輯區(qū)分為年輕代、幸存代、老年代。但是JVM會動態(tài)的調(diào)整空閑區(qū)間到年輕代空間。

年輕代會在初始空間(-XX:G1NewSizePercent 默認(rèn) 5%)到最大空間(-XX:G1MaxNewSizePercent默認(rèn)60%) 之間動態(tài)變化,且由參數(shù)目標(biāo)暫停時間(-XX:MaxGCPauseMillis默認(rèn)200ms)

本地分配緩沖 Local allocation buffer (Lab)

由于是分區(qū)的內(nèi)存,所以可以每個線程領(lǐng)取一部分內(nèi)存使用。這樣領(lǐng)取后的內(nèi)存與GC所進行任務(wù)的內(nèi)存都是獨立進行的,從而減少同步時間,提高GC時的效率。稱這種線程領(lǐng)取后的分區(qū)稱之為本地分配緩存。

分區(qū)模型

G1對內(nèi)存的分配是以“分區(qū)(Region)”為單位,針對區(qū)內(nèi)對“對象”的分配是以“卡片(Card)”為單位。

巨型對象區(qū)域 (Humongous Region)

大于了分區(qū)大小一半以上的對象成為巨型對象。由于巨型對象的移動成本很高,甚至分區(qū)無法容納對象,所以線程并不會直接在TLAB中創(chuàng)建對象。針對巨型對象,會直接分配在老年代的連續(xù)空間中,所占用的連續(xù)空間叫做“巨型分區(qū)(Humongous Region)”。優(yōu)化: 巨型對象如果沒有指向巨型對象,直接會在年輕代收集周期中被回收。

巨型對象會獨占一個、或多個物理連續(xù)分區(qū),其中第一個分區(qū)被標(biāo)記為開始巨型(StartsHumongous),相鄰連續(xù)分區(qū)被標(biāo)記為連續(xù)巨型(ContinuesHumongous)。由于無法享受Lab帶來的優(yōu)化,并且確定一片連續(xù)的內(nèi)存空間需要掃描整堆,因此確定巨型對象開始位置的成本非常高,如果可以,應(yīng)用程序應(yīng)避免生成巨型對象。

已記憶集合 Remember Set (RSet)

Serial 和Parllel GC的時候是掃描整堆來確認(rèn)可達性。G1 通過為每個分區(qū)建立一個已記憶集合 (RSet)記錄引用分區(qū)內(nèi)對象的卡片索引(反向索引,誰引用了我),當(dāng)要回收該分區(qū)時,通過掃描分區(qū)的RSet,來確定引用本分區(qū)內(nèi)的對象是否存活,進而確定本分區(qū)內(nèi)的對象存活情況。

RSet空了,說明這個Region中的中的對象已經(jīng)沒有被其他對象引用了。

兩種場景下依賴Rset加速(由于年輕代會被完整回收,同時因為寫屏障性能消耗,所以不記錄年輕代飲用)。

  • 老年代引用老年代對象,Rset保存在老年代中
  • 老年代引用年輕代對象,Rset保存在年輕代中

Per Region Table (PRT)

RSet通過PRT記錄分區(qū)的引用情況。當(dāng)一個指針引用到Rset中的一個區(qū)間時(圖右上角),包含該指針的堆塊就會被PRT標(biāo)記。PRT需要內(nèi)存空間來存儲這些引用關(guān)系,根據(jù)引用的數(shù)量,PRT有三種的記錄引用的模式,會根據(jù)調(diào)用次數(shù)轉(zhuǎn)變: 稀疏(hash)->細(xì)粒度->粗粒度。

稀疏表:通過哈希表來存儲,key是region index,value是card數(shù)組

細(xì)粒度PerRegionTable:當(dāng)稀疏表指定region的card數(shù)量超過閾值時,則在細(xì)粒度PRT中創(chuàng)建一個對應(yīng)的PerRegionTable對象。一個Region地址鏈表,維護當(dāng)前Region中所有card對應(yīng)的一個BitMap集合。

粗粒度位圖:當(dāng)細(xì)粒度PRT size超過閾值時,所有region 形成一個 bitMap。如果有region 對當(dāng)前 Region 有指針指向,就設(shè)置其對應(yīng)的bit 為1

CSet

收集集合(CSet)代表每次GC暫停時回收的一系列目標(biāo)分區(qū)。在收集暫停中,CSet Region都會被釋放,存活的對象會被分配到空閑分區(qū)中。G1的收集都是根據(jù)CSet進行操作的,年輕代收集與混合收集沒有明顯的不同,最大的區(qū)別在于兩種收集的觸發(fā)條件。

年輕代收集集合:

當(dāng)年輕代空間增長到Eden已經(jīng)滿了的時候,便會觸發(fā)一次STW式的年輕代收集。Eden分區(qū)存活的對象將被拷貝到Survivor分區(qū);原有Survivor分區(qū)存活的對象,將根據(jù)任期閾值(tenuring threshold)分別晉升到PLAB中、新的survivor分區(qū)和老年代分區(qū)。而原有的年輕代分區(qū)將被整體回收掉。

混合收集集合:

老年代的空間被逐漸填充。當(dāng)老年代占用空間超過整堆比IHOP閾值

-XX:InitiatingHeapOccupancyPercent(默認(rèn)45%)時,G1就會啟動一次混合垃圾收集周期。為了減小暫停目標(biāo),混合收集會分批次,與用戶線程交替執(zhí)行,每次STW的混合收集與年輕代收集過程相類似。

G1的活動周期

工作流程:

RSet的維護

G1通過維護RSet來記錄對象分區(qū)之間的引用,避免全量掃堆。維護RSet通過兩個方面:

寫屏障(Write Barrier)

并發(fā)優(yōu)化線程(Concurrence Refinement Threads)

寫屏障

屏障指在原生代碼片段中,當(dāng)某些語句被執(zhí)行時,柵欄代碼也會被執(zhí)行(類似aop)。G1主要在賦值語句中,使用寫前柵欄(Pre-Write Barrrier)和寫后柵欄(Post-Write Barrrier)。注意: 寫柵欄的指令序列開銷非常昂貴,應(yīng)用吞吐量也會根據(jù)柵欄復(fù)雜度而降低。

寫前屏障: 在進行等式賦值前,等式左側(cè)原先的引用就會失去一個引用,所以jvm就需要在語句執(zhí)行前記錄喪失的引用對象。(并不是立即執(zhí)行,是后續(xù)批量執(zhí)行,使用SATB方法)

寫后屏障: 賦值等式執(zhí)行后,右側(cè)的引用多了一個引用,需要確實否是需要增加引用,JVM也不會立即處理,會先進行記錄,然后會在后續(xù)進行批量處理(并發(fā)優(yōu)化線程)。

SATB + RSet 解決了什么問題?

主要是為了解決并發(fā)標(biāo)記過程中,出現(xiàn)的漏標(biāo),誤標(biāo)等問題。

起始快照算法(Snapshot at the beginning (SATB))-寫前屏障處理

G1 SATB和Incremental Update算法的理解

SATB是一種增量式完全并發(fā)標(biāo)記算法,針對并發(fā)標(biāo)記階段,適用于G1的分塊堆結(jié)構(gòu)。

SATB 算法認(rèn)為開始標(biāo)記的都認(rèn)為是活的對象,SATB會創(chuàng)建一個對象圖,相當(dāng)于堆的邏輯快照。所以對象可按圖結(jié)構(gòu)遍歷(用RSet可以加速)。當(dāng)發(fā)生已掃描對象引用未掃描對象時(黑色引用白色),通過write barrier寫屏障技術(shù),會把B到D 的引用推到gc 遍歷執(zhí)行的堆棧上,這樣在后續(xù)會繼續(xù)針對D進行掃描。

Snapshot at the beginning,可以理解為,在進行掃描之前,將整個對象引用關(guān)系都認(rèn)為是 存活的節(jié)點進行掃描,如果在掃描過程中把B = null,這是D其實已經(jīng)是垃圾了,但是在后續(xù)流程中仍然會處理D并標(biāo)記為黑色。D在本輪本該清除,但是會暫時保留,在remark階段處理。

每個線程有一個256條記錄的SATB緩存區(qū),當(dāng)滿了之后會將數(shù)據(jù)加入到全局列表中中并重新申請新的一批256緩存。還會定期檢查和處理全局緩沖區(qū)列表的記錄,然后根據(jù)標(biāo)記位圖分片的標(biāo)記位,掃描引用字段來更新RSet。此過程又稱為并發(fā)標(biāo)記/SATB寫前柵欄。

并發(fā)優(yōu)化線程(Concurrence Refinement Threads)- 寫后屏障處理

寫后屏障(需要2個額外指令)會更新一個Card Table Type結(jié)構(gòu)來跟蹤代間引用。觸發(fā)寫屏障時,會過濾是否為本分區(qū)的對象,如果發(fā)生跨區(qū)應(yīng)用更新,則將更新對象的卡片加入到緩沖(新日志緩沖或者臟卡片)。一旦日志緩沖區(qū)用盡,則分配一個新的日志緩沖區(qū),并將原來的緩沖區(qū)加入全局列表中。

并發(fā)優(yōu)化線程會一直活躍,當(dāng)全局列表中有數(shù)據(jù)就會處理來更新RSet。如果處理不過來,就會讓更多線程來處理全局表;如果還處理不過來,會暫停應(yīng)用線程來處理全局列表。(對象變更過于頻繁)

并發(fā)標(biāo)記周期

并發(fā)標(biāo)記周期(Concurrent Marking Cycle)需要會為混合收集周期識別垃圾最多的老年代分區(qū)。整個周期完成根標(biāo)記、識別可能存活對象、計算分區(qū)活躍從而確定GC效率等級。

觸發(fā)條件: 達到IHOP閾值(

-XX:InitiatingHeapOccupancyPercent 老年代整堆比,默認(rèn)45%),

步驟(STW):

  • 初始標(biāo)記(Initial Mark)
  • 根分區(qū)掃描(Root Region Scanning)
  • 并發(fā)標(biāo)記(Concurrent Marking)
  • 重新標(biāo)記(Remark)
  • 清除(Cleanup)
  • 并發(fā)標(biāo)記線程 (Concurrent Marking Threads)

并發(fā)標(biāo)記階段,會針對分區(qū)進行數(shù)據(jù)標(biāo)記,一個分區(qū)會會建立兩個位圖來記錄標(biāo)記結(jié)果:Previous Bitmap、Next Bitmap。

  • Previous Bitmap為上一次的標(biāo)記(已經(jīng)完成標(biāo)記)
  • Next Bitmap為本次的標(biāo)記結(jié)果(即將進行標(biāo)記)

對應(yīng)的,針對標(biāo)記的位置利用兩個變量記錄(TAMS: Top-At-Mark_Start)分別是:

  • Previous TAMS(PTAMS) 前一次
  • Next TAMS(NTAMS) 后一次

總的來說: 區(qū)間內(nèi)的數(shù)據(jù)用兩個Bitmap兩個‘指針’進行滾動回收,當(dāng)回收完畢后,區(qū)間回收。

初始標(biāo)記結(jié)束后:會先將Next Bitmap設(shè)置為空,并將N TAMS設(shè)置到區(qū)間頂部。此時P TAMS仍然為上一大輪時標(biāo)記的位置。

并發(fā)循環(huán): 會對 PTAMS 到 NTAMS中間的數(shù)據(jù)進行標(biāo)記,將本段標(biāo)記的結(jié)果+上一次標(biāo)記的結(jié)果一同更新到Next Bitmap。

一次循環(huán)結(jié)束: 將Next Bitmap 更新到 Previous Bitmap中,同時,更新 PTAMS與 NTAMS的位置。

在并發(fā)標(biāo)記階段,G1根據(jù)參數(shù)(-XX:ConcGCThreads(默認(rèn)GC線程數(shù)的1/4,即-XX:ParallelGCThreads/4))分配線程,每個線程一次流程只進行一個分區(qū)的掃描。

并發(fā)標(biāo)記循環(huán)流程 (Concurrent Marking Cycle)

并發(fā)循環(huán)的流程為:初始標(biāo)記、根分區(qū)掃描、并發(fā)標(biāo)記、重新標(biāo)記、清除階段。

初始標(biāo)記(Initial Mark):

獨占,會觸發(fā)STW,然后標(biāo)記GC ROOT可達的所有對象。

當(dāng)IHOP觸發(fā)閾值的時候,G1并不會立即開啟循環(huán),而是等待下一次年輕代收集(同樣需要STW),和年輕代收集一起在一次STW之間執(zhí)行(借道(Piggybacking))。

在初始標(biāo)記暫停中,分區(qū)的NTAMS都被設(shè)置到分區(qū)頂部Top,初始標(biāo)記是并發(fā)執(zhí)行,會處理所有的分區(qū)。

根分區(qū)掃描(Root Region Scanning)

當(dāng)STW結(jié)束,年輕代收集和初始標(biāo)記完成后。基于標(biāo)記算法,拷貝到幸存者區(qū)間的區(qū)間也需要被當(dāng)作根元素進行標(biāo)記,同時G1會掃描這個區(qū)間,然后將幸存者區(qū)間所引用的對象進行標(biāo)記。所以幸存者區(qū)間也被稱為根區(qū)間。

特別的: 因為 并發(fā)循環(huán)流程中會多次執(zhí)行年輕代收集(被年輕代收集打斷),所以需要在下一次被打斷前完成。

并發(fā)標(biāo)記(Concurrent Marking)

該階段和應(yīng)用縣城并發(fā)執(zhí)行,每個線程一次只掃描一個分區(qū),標(biāo)記出存活對象圖。在這一階段會處理Previous/Next標(biāo)記位圖,掃描標(biāo)記對象的引用字段。同時并發(fā)標(biāo)記線程還會處理SATB的全局列表信息。

重新標(biāo)記(Remark)

最后一個標(biāo)記動作,會是一個獨占(STW)階段,可以并行執(zhí)行。在整個階段中,會處理所有遺留的SATB日志。找出所有未被訪問的存活對象。

注意:引用處理也是重新標(biāo)記階段的一部分,所有重度使用引用對象(弱引用、軟引用、虛引用、最終引用)的應(yīng)用都會在引用處理上產(chǎn)生開銷。

清理(Cleanup)

清理結(jié)算會識別并清理完全空閑的區(qū)域(RSet中引用計數(shù)空了)并清理空閑的區(qū)域。這個階段會處理Previous/Next標(biāo)記位圖、以及PTAMS/NTAMS。主要進行的操作有一下幾種:

RSet梳理(根據(jù)掃描后的結(jié)果,確認(rèn)RSet各個粒度中的數(shù)據(jù)是否維護的正確)

整理堆分區(qū),為分區(qū)確定訪問熱度,為后續(xù)確認(rèn)回收收益高的分區(qū)。

識別空閑區(qū)間直接回收。

年輕代收集/混合收集周期

年輕代收集(Young Collection)

年輕代由:Eden 和 Survivor組成,當(dāng)Eden分配失敗的時候會觸發(fā),執(zhí)行年輕代收集的時候會進行中斷(STW)

對象復(fù)制 Object Copy: 根據(jù)CSet 會將Eden中的存活對象復(fù)制到Survivor區(qū)間。注意:會將所有的年輕代對象(Eden和Survivor)拷貝到新的Survivor區(qū)間。

對象提升: 如果對象經(jīng)歷的幸存次數(shù)達到閾值,會提升到老年代中,這個閾值經(jīng)過計算配置得到。

分區(qū)調(diào)整: 收集期間,G1會計算當(dāng)前年輕代需要擴容或者壓縮的總量例如:

  • 空閑區(qū)間
  • RSet大小
  • 當(dāng)前最大可用年輕代
  • 當(dāng)前最小可用年輕代
  • 停頓時間

信息維護: 記錄收集對象的年齡信息"Age Info",便于后續(xù)是否晉升到老年區(qū)、時候在混合收集階段進行回收。

更新RSet:會處理還沒有提交到全局列表中的本地緩沖區(qū)中的RSet更新日志。

掃描RSet: 在收集當(dāng)前CSet之前,考慮到分區(qū)外的引用,必須掃描CSet分區(qū)的RSet。

釋放分區(qū): 釋放Free CSet

混合收集周期(Mixed Collection Cycle)

當(dāng)一次并發(fā)標(biāo)記循環(huán)完成了之后,會開始一次混合收集周期,在周期中G1不僅收集年輕代,也同時收集老年代,而收集那些老年代,則是根據(jù)老年代中的垃圾數(shù)量確定的。

單輪的混合收集與年輕代收集無區(qū)別,但是因為老年代垃圾可能比較多,為了滿足暫停的需求,可能會連續(xù)的進行多次的混合收集。再過程中,G1會計算下一次處理的CSet集合的分區(qū)數(shù)量,是否本次收集之后需要結(jié)束周期。

Full GC

當(dāng)無法申請新的空間時,會執(zhí)行一次STW式的、單線程的Full GC。Full GC會對整堆做標(biāo)記清除和壓縮,最后將只包含純粹的存活對象。觸發(fā)Full GC的方式:

  • 從年輕代分區(qū)拷貝存活對象時,無法找到可用的空閑分區(qū)
  • 從老年代分區(qū)轉(zhuǎn)移存活對象時,無法找到可用的空閑分區(qū)
  • 分配巨型對象時在老年代無法找到足夠的連續(xù)分區(qū)

流程簡述:

最后

垃圾回收器可以說事Java的基石之一,垃圾回收器的實現(xiàn)充滿了大量的實現(xiàn)細(xì)節(jié),對于一些優(yōu)化十分具有參考價值。


責(zé)任編輯:武曉燕 來源: 蜜糖的代碼注釋
相關(guān)推薦

2009-08-14 08:56:49

Java垃圾回收器G1

2025-05-16 08:00:00

2009-07-24 09:41:45

Java 7 G1垃圾回收器

2024-10-22 16:26:11

2025-07-11 02:33:00

JVM垃圾回收

2009-06-02 10:18:43

Java垃圾回收器垃圾回收器Java垃圾回收

2023-11-16 08:00:56

Java11G1

2020-06-01 20:08:47

垃圾G1回收器

2009-06-18 13:59:33

Java SE 6垃圾回收器

2021-08-10 07:00:02

Java8 G1垃圾回收器

2024-12-03 09:01:33

2021-08-15 18:59:13

垃圾收集器JDK

2015-06-17 14:10:52

OracleJava 9垃圾收集器

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2022-01-20 10:34:49

JVM垃圾回收算法

2020-05-14 13:39:19

Java 垃圾回收機制

2025-01-06 08:22:41

2024-03-15 08:04:30

G1CMSJVM

2024-03-11 16:27:02

垃圾回收器JVM
點贊
收藏

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

久久久亚洲影院| 日韩欧美专区在线| 亚洲不卡1区| 精品一区二三区| 91精品二区| 精品国产乱码久久久久久闺蜜| 日韩欧美视频网站| 第九色区av在线| 国产九九视频一区二区三区| 高清欧美性猛交| 最新中文字幕av| 清纯唯美激情亚洲| 色综合久久88色综合天天免费| 亚洲资源视频| 香蕉久久一区二区三区| 久久超级碰视频| 91av在线不卡| 日韩精品一区二区亚洲av性色 | 国产日韩av在线| 久久久久久久久精| 成人精品视频| 亚洲高清久久网| 亚洲小视频网站| 欧美男人天堂| 亚洲精品视频一区| 亚洲韩国在线| 三级理论午夜在线观看| 国产另类ts人妖一区二区| 日本不卡视频在线播放| 538任你躁在线精品视频网站| 欧美天堂社区| 欧美zozo另类异族| 福利视频999| 成人精品国产| 日韩欧美精品网站| 97视频在线免费| 日本最新在线视频| 久久久一区二区三区捆绑**| 国产精品久久久久久久免费大片 | 日韩精品资源二区在线| 91高清国产视频| 久久99久久99精品免观看软件| 亚洲午夜激情网站| 91嫩草国产丨精品入口麻豆| 免费在线午夜视频| 欧美极品aⅴ影院| 欧美一二三区| 污污网站免费在线观看| 成人久久18免费网站麻豆 | 国产69精品久久久久999小说| 精品国产av无码| 日韩精品在线一区| 日韩三级免费观看| 欧美激情成人网| а√天堂中文在线资源8| 综合久久久久久| 亚洲精品人成| 91视频在线观看| 国产清纯白嫩初高生在线观看91 | 久久久久久久久久久免费| 久久噜噜色综合一区二区| 精品视频网站| 亚洲小视频在线观看| 玖玖爱在线观看| 久久男人av| 亚洲精品久久7777777| 四虎成人免费视频| 久草在线综合| 日韩成人在线视频| 粉嫩av蜜桃av蜜臀av| 伊人久久大香线蕉| 亚洲人精品午夜在线观看| 日韩精品电影一区二区| 欧美少妇性xxxx| 色阁综合伊人av| 麻豆精品国产免费| 欧美一区二区三区久久精品| 欧美激情一区二区三区久久久| 欧美激情精品久久| 亚洲影院一区| 国产精品美女久久久久久免费| 中文字幕人妻精品一区| 六月丁香婷婷色狠狠久久| 成人写真福利网| 性做久久久久久久| 久久综合久久综合久久综合| 日韩中文字幕av在线| 秋霞a级毛片在线看| 亚洲精品视频在线看| 成人性生活视频免费看| 操人在线观看| 欧美丝袜第三区| 国产调教打屁股xxxx网站| 久久精品66| 国产一区二区欧美日韩| 国产黄在线免费观看| 亚洲精品乱码| 国产欧美日韩最新| 国模无码一区二区三区| 久久亚洲欧美国产精品乐播 | 久久人妻少妇嫩草av无码专区| 久久99视频| 欧美刺激性大交免费视频| 日韩无码精品一区二区三区| 秋霞影院一区二区| 国产精品亚洲综合| 二区在线视频| 午夜精品免费在线观看| 91日韩视频在线观看| 日韩中文字幕| 夜夜嗨av一区二区三区四区 | 男女av在线| 亚洲男同性视频| 国模杨依粉嫩蝴蝶150p| 成人日韩视频| 亚洲精品在线91| 欧美 日韩 国产 一区二区三区| 亚洲国产精品一区| 国产日韩欧美在线播放| 香蕉视频网站在线| ...中文天堂在线一区| 97国产精东麻豆人妻电影| 91精品一久久香蕉国产线看观看| 日韩高清人体午夜| 免费一级片视频| 蜜桃精品视频在线| 免费h精品视频在线播放| 先锋成人av| 欧美三级电影一区| 男生裸体视频网站| 亚洲欧美一区在线| 国产在线a不卡| 国产三区四区在线观看| 欧美日韩在线视频一区| 在线成人精品视频| 一区二区不卡| 国产欧美日韩精品丝袜高跟鞋| 污视频网站免费观看| 亚洲欧美日韩久久| 九九热免费在线观看| 国产欧美日韩精品一区二区免费 | 日本中文字幕亚洲| 视频在线观看免费影院欧美meiju| 在线观看国产欧美| 欧美性猛交xxxx乱大交hd| 91小视频在线观看| 国产毛片视频网站| 国产精东传媒成人av电影| 欧美成人免费小视频| 91欧美日韩麻豆精品| 欧美激情一区不卡| 毛葺葺老太做受视频| 丝袜美腿综合| 日韩美女主播视频| 久久电影中文字幕| 91精品91久久久中77777| 偷拍女澡堂一区二区三区| 亚洲精品少妇| 欧美精品一区二区三区在线四季| 色一区二区三区| 亚洲精品一区在线观看香蕉| 视频一区二区三区四区五区| 久久伊人中文字幕| 国产一级特黄a大片免费| 精品国产乱码久久久久久果冻传媒 | 久久免费99精品久久久久久| 女人让男人操自己视频在线观看 | 欧美亚洲自拍偷拍| 日韩av毛片在线观看| 韩国精品一区二区| 国产欧美精品aaaaaa片| 欧美freesex8一10精品| 欧美一级片一区| 99re在线视频| 日韩欧美国产电影| 在线观看 中文字幕| 久久综合国产精品| 污污的视频免费| 欧美午夜不卡| 久久久久免费网| 国产精品天堂蜜av在线播放 | 欧美日韩精品亚洲精品| 成人av综合一区| 凹凸日日摸日日碰夜夜爽1| 欧美亚洲在线日韩| 91精品国产99久久久久久红楼| 超碰中文在线| 国产亚洲精品高潮| 99久久免费国产精精品| 五月婷婷综合在线| 麻豆一区在线观看| 高清成人在线观看| 国语对白做受xxxxx在线中国| 99热国内精品| 精品人伦一区二区三区| 91tv亚洲精品香蕉国产一区| 欧美成人性生活| 国产综合在线观看| 日韩视频在线一区二区| 天天干天天操天天爱| 国产精品久久久久婷婷二区次| 亚洲欧洲日韩综合| 免费观看久久久4p| 亚洲色成人www永久在线观看| 成人在线免费视频观看| 国产欧美日韩在线播放| 欧美一区二区三区婷婷| 韩国欧美亚洲国产| 日本中文字幕在线视频| 精品无人国产偷自产在线| 国产又粗又猛视频免费| 欧美视频不卡中文| 全网免费在线播放视频入口| 久久精品亚洲国产奇米99| 日批免费观看视频| 美女网站色91| 欧美视频第三页| 国产综合网站| 异国色恋浪漫潭| 女人丝袜激情亚洲| 国产精品免费视频一区二区| 亚洲日韩中文字幕一区| 国产97在线视频| 秋霞伦理一区| 久久久久久成人精品| 免费的黄网站在线观看| 国产一区二区三区在线| 天天干,夜夜操| 精品少妇一区二区三区免费观看 | 亚洲国产精品女人| 国产麻豆精品久久| 看欧美日韩国产| 开心激情综合| 翡翠波斯猫1977年美国| 9999在线精品视频| 国产一区私人高清影院| 成人日韩精品| 日本久久精品视频| 亚洲风情在线资源| 亚州成人av在线| 超碰91在线观看| 高清亚洲成在人网站天堂| 国模雨婷捆绑高清在线| 九九热这里只有精品6| 国产成人无吗| 久久影院模特热| 超碰免费公开在线| 久久视频国产精品免费视频在线 | 亚洲欧洲精品一区二区三区 | 精品久久久久久久久久久久久 | 免费在线观看污| 久久久99精品久久| 欧美偷拍一区二区三区| 久久久久久久久97黄色工厂| 公侵犯人妻一区二区三区| 久久久精品tv| 午夜精产品一区二区在线观看的| 久久精品亚洲精品国产欧美| 国产jjizz一区二区三区视频| 久久久影院官网| 伊人网在线视频观看| 国产精品视频线看| 亚洲女人久久久| 一区二区三区四区视频精品免费| 久草免费在线视频观看| 亚洲香肠在线观看| 日韩av在线天堂| 色综合久久久久| 依依成人在线视频| 日韩一区二区三区在线视频| 亚洲国产精品欧美久久| 亚洲二区在线播放视频| 青青免费在线视频| 色悠悠国产精品| av片哪里在线观看| 国内偷自视频区视频综合| 亚洲天堂电影| 国产啪精品视频网站| 日韩精品三级| 久久久久网址| 天堂网在线观看国产精品| 少妇一晚三次一区二区三区| 国产日本精品| 老司机久久精品| 国产99精品国产| 国产激情在线免费观看| 国产精品久久久99| 国产一级做a爰片在线看免费| 色婷婷综合久色| 国产男男gay体育生网站| 欧美精品一区二区三区久久久| 飘雪影院手机免费高清版在线观看| 中文字幕亚洲综合久久| 福利小视频在线| 国产精品第七十二页| 视频精品一区| 日韩在线电影一区| 红桃视频国产一区| 国产精品视频分类| 成人高清视频在线| 五月天精品在线| 图片区小说区国产精品视频| 中文字幕永久在线视频| 亚洲黄色免费三级| 国产淫片在线观看| 欧美中文字幕视频| 日韩影片在线观看| 日韩欧美精品一区二区| 伊人久久大香线蕉av超碰演员| 亚洲第一中文av| 97se狠狠狠综合亚洲狠狠| 97在线观看视频免费| 色欧美乱欧美15图片| 亚洲精品字幕在线| 久久精品国产精品亚洲| 欧美大胆性生话| 国产精品国色综合久久| 性欧美欧美巨大69| 日本成人黄色网| 99久久99久久精品国产片果冻| 91高清免费观看| 欧美午夜电影在线播放| 色哟哟在线观看| 久久久久久中文| 精品中文字幕一区二区三区四区| 日韩欧美精品一区二区| 久久不射2019中文字幕| 成人做爰www看视频软件| 综合色天天鬼久久鬼色| 在线视频免费观看一区| 亚洲视频欧洲视频| 亚洲女同av| 久久免费99精品久久久久久| 亚洲黄色三级| 波多野结衣有码| 一级做a爱片久久| 国产99999| 美女av一区二区三区 | 免费久久精品视频| 公侵犯人妻一区二区三区| 欧美日韩中文字幕日韩欧美| 人成网站在线观看| 午夜精品久久久99热福利| 国产精品115| 欧美又粗又长又爽做受| 成人精品国产一区二区4080| 国产主播在线播放| 亚洲精品理论电影| 激情国产在线| 美脚丝袜一区二区三区在线观看| 国产精品久久久久久模特 | 国产高潮在线观看| 超碰精品一区二区三区乱码| 国产免费区一区二区三视频免费 | 污污免费在线观看| 亚洲宅男天堂在线观看无病毒| 国产福利小视频| 欧美大胆a视频| 黄色成人美女网站| 久久这里只有精品18| 成人av网站免费| 国产无套在线观看| 亚洲国产欧美一区| 日本v片在线免费观看| 51精品国产黑色丝袜高跟鞋| 九九热精品视频在线观看| jizzjizzxxxx| 欧美激情综合网| 一级片在线观看视频| 九九久久国产精品| japanese色系久久精品| 亚洲天堂av免费在线观看| 黄网站免费久久| 乱h高h女3p含苞待放| 亚洲国产中文字幕在线观看| a国产在线视频| 日韩免费电影一区二区| 看片网站欧美日韩| 欧美日韩精品在线观看视频 | 麻豆成人久久精品二区三区红 | 一区二区三区免费在线看| 一本一生久久a久久精品综合蜜| 蜜桃免费网站一区二区三区| 999久久久国产| 精品久久久久久最新网址| 秋霞在线午夜| 欧美一卡2卡3卡4卡无卡免费观看水多多| 久久久精品午夜少妇| 久久国产高清视频| 精品国产一区二区精华| 先锋欧美三级| 国产三级中文字幕| 国产一区二区三区久久悠悠色av| 日韩美女黄色片| 正在播放欧美视频| 欧洲精品99毛片免费高清观看| 乱妇乱女熟妇熟女网站| 国产精品久久久久影院色老大 | 免费成人深夜天涯网站| 在线综合亚洲欧美在线视频 |