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

深入淺出JVM垃圾回收器

云計(jì)算 虛擬化
本文對(duì)Java虛擬機(jī)垃圾回收器及其回收策略進(jìn)行逐一介紹,同時(shí)對(duì)垃圾回收的優(yōu)化思路做一些簡(jiǎn)單討論,以期讀者能對(duì)Java虛擬機(jī)的垃圾回收增加理解,同時(shí)對(duì)垃圾回收的優(yōu)化有一些初步認(rèn)識(shí),為后續(xù)工作中的Java應(yīng)用調(diào)優(yōu)打下基礎(chǔ)。

[[427167]]

引言

程序的運(yùn)行必然需要申請(qǐng)內(nèi)存資源,使用結(jié)束后的內(nèi)存資源如果不及時(shí)釋放就會(huì)造成內(nèi)存中的垃圾越來(lái)越多,最終造成內(nèi)存溢出,而垃圾回收就是把無(wú)用的內(nèi)存垃圾清理掉,這樣內(nèi)存就可以被程序反復(fù)使用。

垃圾回收(Garbage Collection 簡(jiǎn)稱GC)是Java體系最重要的組成部分之一,和C/C++的手工內(nèi)存管理方式不同,JVM虛擬機(jī)提供了一套全自動(dòng)的內(nèi)存管理方案,以減少開發(fā)人員在內(nèi)存管理方面的相關(guān)工作。

(一) 常見的垃圾回收算法和垃圾回收器

1. 常見的垃圾回收算法

a) 標(biāo)記清除算法(Mark-Sweep)

最早出現(xiàn)也是最基礎(chǔ)的垃圾回收算法,算法整體分為兩個(gè)階段“標(biāo)記”和“清除”,首先標(biāo)記出所有需要回收的對(duì)象,在標(biāo)記完成后,統(tǒng)一回收掉所有被標(biāo)記的對(duì)象,該算法簡(jiǎn)單快速,但是缺點(diǎn)明顯:一是標(biāo)記和清除兩個(gè)過(guò)程的效率都不高。二是清除之后會(huì)產(chǎn)生大量不連續(xù)的內(nèi)存碎片。內(nèi)存碎片過(guò)多可能導(dǎo)致以后在程序運(yùn)行過(guò)程中需要分配較大對(duì)象時(shí),無(wú)法找到足夠的連續(xù)內(nèi)存而提前觸發(fā)另一次垃圾回收動(dòng)作。圖1中展示了標(biāo)記-清楚算法的過(guò)程。

圖 1

b) 標(biāo)記復(fù)制算法(Copying)

為了解決標(biāo)記清除算法的大對(duì)象回收效率和內(nèi)存碎片化問題。提出了另一種“半?yún)^(qū)復(fù)制”的算法,核心思想就是將原有的內(nèi)存空間分為兩塊,每次只使用一半?yún)^(qū)域。垃圾回收時(shí)將使用的對(duì)象復(fù)制到未使用的半?yún)^(qū)中,之后清除當(dāng)前使用半?yún)^(qū)的所有對(duì)象,最后交換兩個(gè)內(nèi)存角色,完成回收工作。雖然解決了內(nèi)存碎片化的問題,但是如果活動(dòng)對(duì)象較多,就會(huì)導(dǎo)致復(fù)制的對(duì)象過(guò)多,復(fù)制的成本很高且僅能使用一半的內(nèi)存,因此單純的復(fù)制算法也有很多問題。圖2展示了復(fù)制算法的過(guò)程。

圖 2

c) 標(biāo)記壓縮算法(Mark-Compact)

標(biāo)記壓縮算法的標(biāo)記過(guò)程與標(biāo)記清除算法一樣,但是后續(xù)步驟不是直接對(duì)可回收對(duì)象進(jìn)行清理,而是讓所有存活的對(duì)象都向空閑內(nèi)存的一端移動(dòng),然后直接清理掉邊界以外的所有內(nèi)存,這種方法避免了內(nèi)存碎片的產(chǎn)生,又不需要兩塊相同的內(nèi)存空間,標(biāo)記壓縮算法的最終效果等于標(biāo)記清除執(zhí)行后再進(jìn)行一次內(nèi)存碎片整理。圖3展示了標(biāo)記壓縮算法的過(guò)程。

圖3

2.分代回收理論(GenerationalCollecting)

分代回收是一種回收思想,目前被虛擬機(jī)廣泛使用,在前面介紹的算法中,沒有一種算法可以完全替代其他算法,分代收集就是基于這種思想,將內(nèi)存根據(jù)對(duì)象的特點(diǎn)分成幾塊,根據(jù)每塊內(nèi)存的特點(diǎn)使用不同的回收算法,提高內(nèi)存的回收效率。主流的JVM虛擬機(jī)里面一般會(huì)把JAVA堆內(nèi)存劃分為年輕代(Young Generation)和老年代(Old Generation)兩個(gè)區(qū)域,每次垃圾收集時(shí)會(huì)有大批的對(duì)象被回收,少量存活的對(duì)象將逐步轉(zhuǎn)移到老年代存放。圖4展示了主流JVM虛擬機(jī)的內(nèi)存的分代情況。

圖 4

3. 常見的垃圾回收器

再說(shuō)垃圾回收器之前,需要再說(shuō)一下為什么需要不斷優(yōu)化垃圾回收器,一切都源于一個(gè)詞語(yǔ)“Stop The World”簡(jiǎn)稱STW,JVM虛擬機(jī)會(huì)自動(dòng)發(fā)起和自動(dòng)完成回收垃圾的工作,用戶在不可干預(yù)的情況下,需要暫停所有正常工作線程來(lái)等待垃圾回收的完成。試想下每工作幾小時(shí)就需要暫停幾分鐘,這樣的程序是無(wú)法讓人接受的。

垃圾回收的算法為垃圾回收器提供了理論基礎(chǔ),垃圾回收器就是這些理論算法的具體實(shí)現(xiàn)。圖5展示了七種不同的垃圾回收器,如果兩回收器之前存在連線,就說(shuō)明可以搭配使用。

圖5

a) 串行回收器(Serial + Serial Old)

最古老的垃圾回收器,也是最基本的垃圾回收器之一,是一個(gè)單線程的垃圾回收器,在年輕代工作時(shí)使用的是標(biāo)記復(fù)制算法,在老年代工作時(shí)使用的是標(biāo)記壓縮算法。在CPU性能受限的情況下,它的性能表現(xiàn)依然很優(yōu)秀。圖6展示了串行垃圾回收器的回收過(guò)程。

圖6

b) 并發(fā)回收器(ParNew和CMS)

ParNew回收器是一款只能工作在年輕代的并行收集器 ,它是Serial收集器的多線程版本,由于使用多線程進(jìn)行垃圾回收,在計(jì)算能力較強(qiáng)的CPU上,產(chǎn)生的停頓時(shí)間要小于串行回收器。圖7展示了ParNew并行的回收的過(guò)程。

圖7

CMS(Concurrent Mark Sweep)是一款只能工作在老年代的收集器,第一款設(shè)計(jì)較為的復(fù)雜的收集器,也是JVM虛擬機(jī)追求低停頓的第一次嘗試,但是也有明顯的缺點(diǎn),圖8展示了CMS收集器的回收過(guò)程。總的來(lái)說(shuō)有三點(diǎn):首先CMS收集器對(duì)CPU性能比較敏感,如果CPU性能不足或者本身的負(fù)載就很高,那這會(huì)讓整個(gè)垃圾回收的過(guò)程變長(zhǎng)。其次,在并發(fā)標(biāo)記和并發(fā)清除的階段,用戶線程會(huì)有新的垃圾產(chǎn)生,就會(huì)產(chǎn)生“浮動(dòng)垃圾(Floating Garbage)”,所以就不能像其他回收器那樣等到老年代100%再進(jìn)行回收,需要預(yù)留一部分內(nèi)存提供給用戶線程使用。最后,CMS是一個(gè)基于標(biāo)記清除算法實(shí)現(xiàn)的回收器,這就會(huì)產(chǎn)生大量的內(nèi)存碎片,如果有大對(duì)象需要處理,碎片過(guò)多時(shí)就需要對(duì)Old區(qū)再進(jìn)行一次垃圾回收進(jìn)行內(nèi)存整理。ParNew和CMS垃圾回收器一般搭配來(lái)進(jìn)行使用,不過(guò)這兩個(gè)收集器已經(jīng)在JDK9中被標(biāo)記為廢棄,JDK14該回收器將被正式刪除。

圖8

c) 并行回收(ParallelGC+ParallelOldGC)

ParallelGC和ParallelOldGC是JDK8中默認(rèn)使用的兩個(gè)回收器分別用在年輕代和老年代, 并且他們都是多線程回收器。ParallelGC采用的是復(fù)制算法進(jìn)行垃圾回收,它和ParNew不同的是可以控制系統(tǒng)的吞吐量和最大停頓時(shí)間,并且增加了自調(diào)優(yōu)的功能,相當(dāng)于ParNew的升級(jí)版本。ParallelOldGC使用的是標(biāo)記壓縮算法,這個(gè)回收器在JDK6時(shí)開始提供使用。圖9展示了ParallelGC和ParallelOldGC的回收過(guò)程。

圖9

d)分區(qū)回收器(Garbage First)

隨著大數(shù)據(jù)時(shí)代的來(lái)臨,JVM虛擬機(jī)的內(nèi)存也越來(lái)越大,在相同條件下,內(nèi)存空間越大,一次GC所需的時(shí)間就越長(zhǎng),產(chǎn)生的停頓就越長(zhǎng)。為了更好的控制GC產(chǎn)生的STW時(shí)間。Garbage First回收器(簡(jiǎn)稱G1)出現(xiàn)了,JDK6時(shí)開始推出試驗(yàn)版本,JDK7 Update4中逐漸的成熟起來(lái),終于在JDK8 Update40以后G1提供并發(fā)的類卸載功能成為了可以替代CMS的回收器,JDK9版本中G1被設(shè)置成默認(rèn)的垃圾回收器。G1回收器引入了分區(qū)(Region)的概念,將整個(gè)內(nèi)存空間分為不同大小的小分區(qū),每個(gè)小分區(qū)單獨(dú)使用,獨(dú)立回收。不過(guò)G1也還是遵循了分代回收的理論,還是會(huì)區(qū)分年輕代和老年代的概念,從整體看G1是基于標(biāo)記壓縮算法實(shí)現(xiàn)的,但是從局部看每個(gè)分區(qū)之間又是基于標(biāo)記復(fù)制算法實(shí)現(xiàn)的。

圖10

(二) 垃圾回收器內(nèi)存分配詳解

1. 分代垃圾回收器

分代的垃圾回收器是如何進(jìn)行內(nèi)存分配和管理的呢?我們?cè)賮?lái)回顧下分代思想。如圖11所示,整個(gè)的JVM空間被分成2個(gè)區(qū)域年輕代(Young Generation)和老年代(Old Generation),而Young區(qū)又被分成了伊甸園區(qū)(Eden,統(tǒng)簡(jiǎn)稱Eden)和生存區(qū)(Survivor),而Survivor又被分為From(Survivor0,統(tǒng)簡(jiǎn)稱“S0”)和To(Survivor1,統(tǒng)簡(jiǎn)稱“S1”)兩個(gè)區(qū)域。年輕代和老年代比例為1:2(默認(rèn)參數(shù)),在年輕代中內(nèi)存中又被分成了三份(默認(rèn)為8:1:1)。

G行已經(jīng)開始逐步開始從JDK6向JDK8進(jìn)行替換,關(guān)于這部分內(nèi)容主要針對(duì)JDK8版本進(jìn)行說(shuō)明。

圖 11

幾乎所有新生成的對(duì)象首先都是放在年輕代,大部分對(duì)象在 Eden 區(qū)中生成,當(dāng)Eden區(qū)內(nèi)存空間不足時(shí),則會(huì)發(fā)起一次GC,回收器會(huì)將Eden區(qū)存活對(duì)象復(fù)制到S0,然后清空Eden區(qū)。如圖12展示的過(guò)程。

圖 12

下一次Eden區(qū)空間不足時(shí),會(huì)將Eden區(qū)和S0區(qū)的存活對(duì)象復(fù)制到S1區(qū),然后清空Eden區(qū)和S0區(qū)。如圖13展示的過(guò)程。

圖 13

這時(shí)候會(huì)又出一個(gè)問題,對(duì)象什么時(shí)候去老年代呢?對(duì)象每次在S0和S1之間復(fù)制一次,這個(gè)對(duì)象的年齡就長(zhǎng)一歲,當(dāng)15歲(默認(rèn)為15歲,可通過(guò)參數(shù)調(diào)整)之后這個(gè)對(duì)象就會(huì)被復(fù)制到老年代去。如圖14展示的過(guò)程。

圖 14

如此這樣循環(huán)往復(fù),當(dāng)老年代也空間不足時(shí),回收器就會(huì)用對(duì)老年代進(jìn)行回收來(lái)釋放內(nèi)存空間,也就是通常說(shuō)的Full GC。

2. 分區(qū)垃圾回收器

傳統(tǒng)的GC收集器將連續(xù)的內(nèi)存空間劃分為新生代、老年代和永久代(JDK 8去除了永久代,引入了元空間Metaspace)。如下圖15所示,不過(guò)現(xiàn)在請(qǐng)大家忘記它吧。

圖 15

G1的內(nèi)存存儲(chǔ)地址是不連續(xù)的,G1 將連續(xù)的Java堆劃分為多個(gè)大小相等的獨(dú)立區(qū)域(Region),每一個(gè)Region都可以根據(jù)需要,扮演新生代的Eden空間、Survivor空間,或者老年代Old空間,每個(gè)Region的大小可以取值范圍為1MB~32MB,且應(yīng)為2的N次冪,并且新增一個(gè)區(qū)域叫巨大對(duì)象(humongous object,H-obj),只要大小超過(guò)了一個(gè)Region容量一半即可判定為大對(duì)象,直接放入大對(duì)象區(qū)。對(duì)于那些超過(guò)了整個(gè)Region容量的超級(jí)大對(duì)象,將會(huì)被存放在N個(gè)連續(xù)的Humongous Region之中。如下圖16所示G1內(nèi)存的分配情況。

圖 16

在分配一般對(duì)象時(shí),當(dāng)所有Eden Region使用達(dá)到最大閾值并且無(wú)法申請(qǐng)足夠內(nèi)存時(shí),會(huì)觸發(fā)一次年輕代Region的GC。每次GC會(huì)回收所有Eden以及Survivor,并且將存活對(duì)象復(fù)制到空白的Survivor區(qū)。如下圖17所示。

5A974d6e659b30673a30fcdee4aa6e7.jpg" target="_blank">5A974d6e659b30673a30fcdee4aa6e7.jpg" width="auto" border="0" height="auto" alt="" title="">

圖 17

那內(nèi)存什么時(shí)候進(jìn)入老年代的Region呢?在G1回收器中有兩種情況會(huì)進(jìn)入到老年代Region:

同分代回收的規(guī)則,內(nèi)存每在年輕代的Region被復(fù)制一次,年齡就長(zhǎng)一歲,當(dāng)15歲(默認(rèn)為15歲,可通過(guò)參數(shù)調(diào)整)之后這個(gè)對(duì)象就會(huì)被復(fù)制到老年代的Region。

動(dòng)態(tài)年齡判斷規(guī)則,某次年輕代GC 過(guò)后,發(fā)現(xiàn) Survivor 區(qū)中相同年齡的對(duì)象達(dá)到了 Survivor 的 50%,那么該年齡及以上的對(duì)象,會(huì)被直接移動(dòng)到老年代中。例如Survivor 區(qū)中存在年齡分別為 1、2、3、4 的對(duì)象,而年齡為 3 的對(duì)象超過(guò)了 Survivor 區(qū)的 50%,那么年齡大于等于 3 的對(duì)象,就會(huì)被全部移動(dòng)到老年代的Region。

最后再談下分區(qū)回收獨(dú)有的混合回收(Mixed GC),在G1中不存在單獨(dú)回收老年代Region的行為,而是當(dāng)要發(fā)生老年代的回收時(shí),同時(shí)也會(huì)對(duì)新生代以及大對(duì)象進(jìn)行回收,因此這個(gè)階段稱之為混合回收。當(dāng)老年代Region的使用率占比達(dá)到 45%時(shí),就會(huì)觸發(fā)混合回收。

不過(guò)在G1中Full GC還是存在的,如果空閑的 Region 大小無(wú)法放得下存活對(duì)象的內(nèi)存大小時(shí)系統(tǒng)就不得不暫停應(yīng)用程序,進(jìn)行一次 Full GC。進(jìn)行 Full GC 時(shí)采用的是單線程進(jìn)行標(biāo)記、清理和整理內(nèi)存,這個(gè)過(guò)程是非常漫長(zhǎng)的,因此應(yīng)該盡量避免 Full GC 的觸發(fā)。

(三) 垃圾回收器的優(yōu)化思路

垃圾回收器的優(yōu)化思路

垃圾回收器的選擇是JVM優(yōu)化的一個(gè)重要配置,選擇合適的垃圾回收器可以讓JVM性能有一個(gè)很大的提升。其實(shí)JVM調(diào)優(yōu)主要是調(diào)整兩個(gè)指標(biāo):

JVM虛擬機(jī)停頓時(shí)間(Stop The World)

吞吐量是指CPU用于運(yùn)行用戶代碼的時(shí)間與CPU總消耗時(shí)間的比值,即吞吐量 = 運(yùn)行用戶代碼時(shí)間 /( 運(yùn)行用戶代碼時(shí)間 + 垃圾收集時(shí)間 )

下面分享下關(guān)于回收器選擇上的一些經(jīng)驗(yàn)。

1. 小內(nèi)存,默認(rèn)優(yōu)先:

大部分應(yīng)用JVM堆內(nèi)存都在4G以內(nèi),優(yōu)先使用JDK8默認(rèn)的垃圾回收器。如今大部分系統(tǒng)都運(yùn)行在虛擬機(jī)上,G1固然是更先進(jìn)的垃圾回收器,但是G1在垃圾回收時(shí)產(chǎn)生的內(nèi)存占用也更高,所以小內(nèi)容使用G1作為回收器會(huì)增加GC的次數(shù),吞吐量會(huì)下降。

2. 大內(nèi)存,G1優(yōu)先:

當(dāng)內(nèi)存大于8G后,應(yīng)該優(yōu)先考慮G1垃圾回收器,因?yàn)楫?dāng)內(nèi)存增大后,在進(jìn)行垃圾回收時(shí)會(huì)將對(duì)象從s0復(fù)制到s1內(nèi)存越大,復(fù)制的時(shí)間越長(zhǎng),會(huì)增加系統(tǒng)STW的時(shí)間,導(dǎo)致系統(tǒng)的停頓時(shí)間過(guò)長(zhǎng)。

總結(jié)

隨著Java的不斷發(fā)展,有很多新的回收器出現(xiàn),如:shenandoahGC和ZGC,同為新一代的低延遲收集器, 分別由RedHat和Oracle開發(fā), 不過(guò)還在實(shí)驗(yàn)階段, 尚未使用于生產(chǎn)環(huán)境,針對(duì)不同類型的應(yīng)用Java提供了多種垃圾回收策略。

 

本文對(duì)Java虛擬機(jī)垃圾回收器及其回收策略進(jìn)行逐一介紹,同時(shí)對(duì)垃圾回收的優(yōu)化思路做一些簡(jiǎn)單討論,以期讀者能對(duì)Java虛擬機(jī)的垃圾回收增加理解,同時(shí)對(duì)垃圾回收的優(yōu)化有一些初步認(rèn)識(shí),為后續(xù)工作中的Java應(yīng)用調(diào)優(yōu)打下基礎(chǔ)。

 

責(zé)任編輯:武曉燕 來(lái)源: 匠心獨(dú)運(yùn)維妙維效
相關(guān)推薦

2023-05-05 18:33:15

2021-03-16 08:54:35

AQSAbstractQueJava

2011-07-04 10:39:57

Web

2019-10-10 16:25:02

JVM數(shù)據(jù)多線程

2017-07-02 18:04:53

塊加密算法AES算法

2019-01-07 15:29:07

HadoopYarn架構(gòu)調(diào)度器

2021-07-20 15:20:02

FlatBuffers阿里云Java

2012-05-21 10:06:26

FrameworkCocoa

2022-09-26 09:01:15

語(yǔ)言數(shù)據(jù)JavaScript

2009-12-01 16:37:00

2019-11-11 14:51:19

Java數(shù)據(jù)結(jié)構(gòu)Properties

2009-11-30 16:46:29

學(xué)習(xí)Linux

2018-11-09 16:24:25

物聯(lián)網(wǎng)云計(jì)算云系統(tǒng)

2021-04-27 08:54:43

ConcurrentH數(shù)據(jù)結(jié)構(gòu)JDK8

2022-11-09 08:06:15

GreatSQLMGR模式

2012-02-21 13:55:45

JavaScript

2022-10-31 09:00:24

Promise數(shù)組參數(shù)

2009-11-18 13:30:37

Oracle Sequ

2022-12-02 09:13:28

SeataAT模式

2019-12-04 10:13:58

Kubernetes存儲(chǔ)Docker
點(diǎn)贊
收藏

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

日本高清免费电影一区| 国产在线电影| 亚洲视频免费| 国产午夜精品久久久久久久| 国产成人黄色av| 美女视频久久久| 红杏aⅴ成人免费视频| 日本道色综合久久| www.国产二区| 国产精品二线| 成人福利电影精品一区二区在线观看 | 日韩av在线网站| 91xxx视频| 亚洲欧洲成人在线| 日韩va欧美va亚洲va久久| 日韩成人黄色av| 污污网站在线观看视频| 日本不卡网站| 亚洲精品免费在线观看| 久久精品人人做人人爽电影| 99国产成人精品| 丝袜亚洲另类欧美| 久久久亚洲精品视频| 亚洲无在线观看| 免费h视频在线观看| 自拍偷拍欧美精品| 日本一区二区三区www| 国产刺激高潮av| 激情综合一区二区三区| 国产成人精品综合久久久| 国产精品suv一区二区69| 97视频精品| 亚洲视频电影图片偷拍一区| 熟妇高潮一区二区| 久久爱www.| 7777精品伊人久久久大香线蕉完整版 | 电影一区电影二区| 高跟丝袜一区二区三区| 日本男女交配视频| 超碰在线观看免费版| 国产精品理论片| 色播五月综合| 丁香在线视频| 国产欧美一二三区| 日本一区视频在线播放| 免费在线毛片| 久久九九久久九九| 日本在线观看不卡| 国产一级片在线| 日韩精品在线观看视频| 图片区小说区区亚洲五月| 亚州精品国产精品乱码不99按摩| 国产999精品久久| 91精品国产高清久久久久久91裸体| 亚洲天堂中文字幕在线| 免费亚洲电影在线| 国产欧美日韩专区发布| 一区二区国产欧美| 精品午夜一区二区三区在线观看| 国产在线精品播放| 国产又黄又大又爽| 国产精品99久| 久久综合电影一区| 欧美特级一级片| 99re6热只有精品免费观看| 日韩一级片网址| 欧美xxxx日本和非洲| 亚洲伊人av| 亚洲美女偷拍久久| 女人被男人躁得好爽免费视频 | 亚洲成熟丰满熟妇高潮xxxxx| 亚洲天堂av在线| 一本久道久久综合中文字幕| 少妇黄色一级片| 成人综合日日夜夜| 欧美精品一区二区三区在线播放 | 午夜精品久久久久久久白皮肤| 五月天婷婷丁香| 久久精品网址| 成人啪啪免费看| 人人妻人人澡人人爽精品日本| 日韩黄色免费电影| 成人精品在线观看| 人妻va精品va欧美va| 久久久av毛片精品| 国产成人三级视频| 麻豆av在线播放| 中文字幕一区av| 欧洲精品在线播放| av在线日韩| 欧美草草影院在线视频| 蜜桃av免费看| 国产精品久久占久久| 久久欧美在线电影| 中文无码av一区二区三区| 国产999精品久久久久久 | 亚洲国产精品综合久久久| 国语自产精品视频在线看抢先版图片| 日韩精选在线观看| 风间由美性色一区二区三区| 日日噜噜噜噜夜夜爽亚洲精品| av超碰免费在线| 日本精品视频一区二区| 国产精久久久久| 成人免费在线观看av| 久久久久久亚洲精品不卡| 国产字幕在线观看| 成人免费av网站| 一区二区三区四区视频在线观看| 青青视频在线观| 国产成人av一区二区三区在线观看| 欧美日韩最好看的视频| 午夜在线激情影院| 欧美日韩国产三级| 国产黄色网址在线观看| 国产精品www.| 成人免费看片视频| 超碰97在线免费观看| 欧美国产欧美综合| 熟女少妇在线视频播放| 日本少妇精品亚洲第一区| 亚洲性猛交xxxxwww| 日韩av在线播| 国产91露脸合集magnet| 欧美日韩视频免费在线观看| 性欧美18一19sex性欧美| 亚洲电影成人av99爱色| 国产a级黄色片| 91欧美大片| 国产精品羞羞答答| 国产高清免费在线播放| 一本久久综合亚洲鲁鲁五月天| 精品国产人妻一区二区三区| 国产一区二区三区四区三区四| 成人高清视频观看www| 91社区在线观看播放| 一本到一区二区三区| 亚洲国产欧美视频| 欧美亚洲精品在线| 日本高清+成人网在线观看| 手机看片一区二区| 亚洲成人激情自拍| 秘密基地免费观看完整版中文| 牛夜精品久久久久久久99黑人| 成人精品一区二区三区电影黑人| 日韩三级影院| 欧美久久高跟鞋激| 国产人妻精品一区二区三区不卡 | 亚洲精品无码一区二区| 欧美精品三区| 国产成人精品福利一区二区三区| 在线观看a级片| 欧美成人免费网站| 日韩 欧美 精品| 91蜜桃婷婷狠狠久久综合9色| 四虎影院一区二区三区 | 91禁男男在线观看| 麻豆91在线观看| 中文字幕日韩一区二区三区| 警花av一区二区三区| 欧美激情2020午夜免费观看| 欧洲av在线播放| 色综合一个色综合| 日本午夜精品视频| 国产乱人伦偷精品视频免下载| 在线视频不卡一区二区| 欧一区二区三区| 97视频人免费观看| 国产小视频在线| 欧美日韩一区不卡| 久久国产露脸精品国产| 99久久婷婷国产精品综合| 亚洲啪啪av| 久久精品97| 亚洲男人天堂视频| 一区二区视频播放| 亚洲黄色在线视频| 风间由美一二三区av片| 视频一区免费在线观看| 在线播放 亚洲| 欧美成人基地| 国产免费一区二区三区在线观看| 亚洲欧美成人影院| 日韩国产中文字幕| 97超碰资源站| 精品免费在线观看| 成人亚洲免费视频| 亚洲二区在线| 亚洲精品一卡二卡三卡四卡| 91精品入口| 国产精品久久久999| 黑人精品视频| 日韩中文字幕在线观看| 天堂av资源网| 欧美夫妻性生活| 亚洲精品www久久久久久| 国产精品你懂的在线欣赏| 18禁一区二区三区| 美洲天堂一区二卡三卡四卡视频| 日韩精品视频在线观看视频| 日韩欧美精品| 久久久国产精品一区二区三区| 成人在线分类| 国产成人精品av在线| 国产后进白嫩翘臀在线观看视频| 最近2019中文字幕第三页视频| 天天操天天干天天| 欧美二区乱c少妇| 老熟妇仑乱一区二区av| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美精品在线观看一区二区| 亚洲永久精品在线观看| 成人性生交大片免费看视频在线| 亚洲人辣妹窥探嘘嘘| 亚洲精品四区| 超级碰在线观看| 国产一区精品二区| 日韩av免费网站| av成人影院在线| 欧美成人精品一区二区| 色哟哟免费在线观看| 亚洲色图欧美制服丝袜另类第一页| 亚洲av综合色区无码一二三区| 欧美丰满美乳xxx高潮www| 懂色av蜜臀av粉嫩av分享吧最新章节| 午夜精品视频在线观看| 久操视频免费在线观看| 亚洲欧洲制服丝袜| 亚洲女人久久久| 国产精品久久久久久久裸模| 国产又粗又猛又爽又黄av| 26uuu亚洲综合色| 人妻无码一区二区三区| 成人白浆超碰人人人人| 欧美久久久久久久久久久| 国产成人综合网| 又黄又爽又色的视频| 国产一区二区三区视频在线播放| 久久人人爽av| 精品在线观看免费| 999这里有精品| 激情五月婷婷综合| 91pony九色| 国产一区不卡视频| 国模大尺度视频| 亚洲国产欧美国产综合一区| www.18av.com| 在线欧美一区| 国产亚洲精品网站| 97精品国产一区二区三区| 日韩资源av在线| 日韩精品第一区| 在线综合视频网站| 在线免费观看日本欧美爱情大片| 公共露出暴露狂另类av| 欧美日韩精品免费观看视频完整| 国产又粗又猛又爽又黄的网站| 一区在线视频| 日本精品免费在线观看| 日韩精品视频网| 免费成年人高清视频| 国产成人在线视频播放| 波多野结衣视频播放| 2021国产精品久久精品| 九九久久久久久| 国产成人午夜电影网| 呦呦视频在线观看| 国产偷国产偷亚洲高清人白洁| 91狠狠综合久久久久久| 亚洲青青青在线视频| 日韩欧美大片在线观看| 在线这里只有精品| 国产免费不卡av| 亚洲黄色免费三级| 在线观看免费版| 欧美大片免费观看| 伊人久久综合一区二区| 国产有码在线一区二区视频| 999在线精品| 日本视频一区在线观看| 欧美88av| 蜜臀av午夜一区二区三区 | 久久人妻少妇嫩草av无码专区| 久久久久久久综合| 国产97免费视频| 午夜电影久久久| 一本色道久久综合熟妇| 欧美精品一区二区三区四区| 国产在线观看网站| 欧美黑人一级爽快片淫片高清| 亚洲第一会所| 国产精品二区二区三区| 欧美日中文字幕| 欧美日韩一区在线播放 | 久久天堂电影网| 性欧美18xxxhd| 91色在线观看| 久久av中文| 青青青在线观看视频| 蜜桃视频一区二区三区在线观看| 中文字幕天堂网| 综合电影一区二区三区| 无码人妻精品一区二区三区9厂| 日韩欧美二区三区| 日本中文字幕电影在线免费观看| 91高清视频免费观看| 九色porny自拍视频在线观看| 国产精品一区二区三区在线播放 | 欧洲av一区二区| 国产在线欧美日韩| 欧美一区二区| 黄色永久免费网站| 久久久久久久久久看片| 国产一级av毛片| 91精品婷婷国产综合久久| 成年在线观看免费人视频| 91精品国产乱码久久久久久蜜臀 | 欧美人成在线观看| 激情丁香综合五月| 99国产精品免费| 色女孩综合影院| 四虎影院在线域名免费观看| 久久91亚洲精品中文字幕| 日韩一区中文| 亚洲国产精品久久久久久女王| 久久精品欧洲| 日韩一级视频在线观看| 狠狠色狠色综合曰曰| 日韩一卡二卡在线| 久久久久久久久综合| 一区二区精彩视频| 69精品丰满人妻无码视频a片| 国产精品99久久久久| 午夜免费激情视频| 欧美一区二区日韩| 性欧美videos高清hd4k| 亚洲自拍中文字幕| 成人在线视频你懂的| 一二三在线视频| 国产99久久久精品| 日韩精品一区三区| 亚洲精品成人久久电影| 国产v日韩v欧美v| 精品国产_亚洲人成在线| 亚洲美女少妇无套啪啪呻吟| 蜜臀久久99精品久久久酒店新书 | 亚洲人成影视在线观看| 麻豆精品一区二区综合av| 国产精品1区2区3区4区| 欧美精品亚洲一区二区在线播放| 免费av毛片在线看| 成人做爰www免费看视频网站| 91精品秘密在线观看| 少妇性l交大片7724com| 亚洲一区成人在线| 午夜视频免费在线| 日韩免费av在线| 第一会所sis001亚洲| 特级黄色片视频| 亚洲国产一区二区三区青草影视| 无码精品黑人一区二区三区| 日本电影亚洲天堂| 首页国产精品| 亚洲成人福利视频| 精品久久久久久中文字幕一区奶水 | 国产一区二区三区高清播放| 欧美三根一起进三p| 亚洲激情在线视频| 亚洲四虎影院| 天天做天天躁天天躁| av在线不卡网| 在线观看亚洲黄色| 欧美国产日韩在线| 亚洲男人都懂第一日本| 欧美婷婷精品激情| 尤物av一区二区| 裸体xxxx视频在线| 亚洲aⅴ男人的天堂在线观看| 中文日韩在线| av片在线免费看| 精品成人佐山爱一区二区| 四虎4545www国产精品| 免费看黄色a级片| 久久婷婷国产综合国色天香| 国产精品九九九九| 97在线视频观看| 希岛爱理av一区二区三区| 182在线视频| 在线播放/欧美激情| av资源在线| 亚洲国产一区在线| www.久久久久久久久| 一区二区www| 国产91热爆ts人妖在线| 国产精品hd| 精品人妻互换一区二区三区| 日韩精品中文字幕一区二区三区 | 欧美吻胸吃奶大尺度电影| 特级毛片在线免费观看| 综合国产视频|