国产无遮挡裸体免费直播视频,久久精品国产蜜臀av,动漫在线视频一区二区,欧亚日韩一区二区三区,久艹在线 免费视频,国产精品美女网站免费,正在播放 97超级视频在线观看,斗破苍穹年番在线观看免费,51最新乱码中文字幕

一文帶你了解JavaScript垃圾回收機制

 更新時間:2021年11月02日 15:07:15   作者:隱冬  
JS自帶一套內(nèi)存管理引擎,負(fù)責(zé)創(chuàng)建對象、銷毀對象,以及垃圾回收,下面這篇文章主要給大家介紹了關(guān)于JavaScript垃圾回收機制的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1. 概述

隨著軟件開發(fā)行業(yè)的不斷發(fā)展,性能優(yōu)化已經(jīng)是一個不可避免的話題,那什么樣的行為才能算得上是性能優(yōu)化呢?

本質(zhì)上任何一種可以提高運行效率,降低運行開銷的行為,都可以看做是一種優(yōu)化操作。

這也就意味著,在軟件開放行業(yè)必然存在著很多值得優(yōu)化的地方,特別是在前端開發(fā)過程中,性能優(yōu)化可以認(rèn)為是無處不在的。例如請求資源時所用到的網(wǎng)絡(luò),以及數(shù)據(jù)的傳輸方式,再或者開發(fā)過程中所使用到的框架等都可以進(jìn)行優(yōu)化。

本章探索的是JavaScript語言本身的優(yōu)化,是從認(rèn)知內(nèi)存空間的使用到垃圾回收的方式,從而可以編寫出高效的JavaScript代碼。

2. 內(nèi)存管理

隨著近些年硬件技術(shù)的不斷發(fā)展,高級編程語言中都自帶了GC機制,讓開發(fā)者在不需要特別注意內(nèi)存空間使用的情況下,也能夠正常的去完成相應(yīng)的功能開發(fā)。為什么還要重提內(nèi)存管理呢,下面就通過一段極簡單的代碼來進(jìn)行說明。

首先定義一個普通的函數(shù)fn,然后在函數(shù)體內(nèi)聲明一個數(shù)組,接著給數(shù)組賦值,需要注意的是在賦值的時候刻意選擇了一個比較大的數(shù)字來作為下標(biāo)。這樣做的目的就是為了當(dāng)前函數(shù)在調(diào)用的時候可以向內(nèi)存盡可能多的申請一片比較大的空間。

function fn() {
    arrlist = [];
    arrlist[100000] = 'this is a lg';
}

fn()

在執(zhí)行這個函數(shù)的過程中從語法上是不存在任何問題的,不過用相應(yīng)的性能監(jiān)控工具對內(nèi)存進(jìn)行監(jiān)控的時候會發(fā)現(xiàn),內(nèi)存變化是持續(xù)程線性升高的,并且在這個過程當(dāng)中沒有回落。這代表著內(nèi)存泄露。如果在寫代碼的時候不夠了解內(nèi)存管理的機制就會編寫出一些不容易察覺到的內(nèi)存問題型代碼。

這種代碼多了以后程序帶來的可能就是一些意想不到的bug,所以掌握內(nèi)存的管理是非常有必要的。因此接下來就去看一下,什么是內(nèi)存管理。

從這個詞語本身來說,內(nèi)存其實就是由可讀寫的單元組成,他標(biāo)識一片可操作的空間。而管理在這里刻意強調(diào)的是由人主動去操作這片空間的申請、使用和釋放,即使借助了一些API,但終歸可以自主的來做這個事。所以內(nèi)存管理就認(rèn)為是,開發(fā)者可以主動的向內(nèi)存申請空間,使用空間,并且釋放空間。因此這個流程就顯得非常簡單了,一共三步,申請,使用和釋放。

回到JavaScript中,其實和其他的語言一樣,JavaScript中也是分三步來執(zhí)行這個過程,但是由于ECMAScript中并沒有提供相應(yīng)的操作API。所以JavaScript不能像C或者C++那樣,由開發(fā)者主動調(diào)用相應(yīng)的API來完成內(nèi)存空間的管理。

不過即使如此也不能影響我們通過JavaScript腳本來演示一個空間的生命周期是怎樣完成的。過程很簡單首先要去申請空間,第二個使用空間,第三個釋放空間。

在JavaScript中并沒有直接提供相應(yīng)的API,所以只能在JavaScript執(zhí)行引擎遇到變量定義語句的時候自動分配一個相應(yīng)的空間。這里先定義一個變量obj,然后把它指向一個空對象。對它的使用其實就是一個讀寫的操作,直接往這個對象里面寫入一個具體的數(shù)據(jù)就可以了比如寫上一個yd。最后可以對它進(jìn)行釋放,同樣的JavaScript里面并沒有相應(yīng)的釋放API,所以這里可以采用一種間接的方式,比如直接把他設(shè)置為null。

let obj = {}

obj.name = 'yd'

obj = null

這個時候就相當(dāng)于按照內(nèi)存管理的一個流程在JavaScript當(dāng)中實現(xiàn)了內(nèi)存管理。后期在這樣性能監(jiān)控工具當(dāng)中看一下內(nèi)存走勢就可以了。

3. 垃圾回收

首先在JavaScript中什么樣的內(nèi)容會被當(dāng)中是垃圾看待。在后續(xù)的GC算法當(dāng)中,也會存在的垃圾的概念,兩者其實是完全一樣的。所以在這里統(tǒng)一說明。

JavaScript中的內(nèi)存管理是自動的。每創(chuàng)建一個對象、數(shù)組或者函數(shù)的時候,就會自動的分配相應(yīng)的內(nèi)存空間。等到后續(xù)程序代碼在執(zhí)行的過程中如果通過一些引用關(guān)系無法再找到某些對象的時候那么這些對象就會被看作是垃圾。再或者說這些對象其實是已經(jīng)存在的,但是由于代碼中一些不合適的語法或者說結(jié)構(gòu)性的錯誤,沒有辦法再去找到這些對象,那么這種對象也會被稱之是垃圾。

發(fā)現(xiàn)垃圾之后JavaScript執(zhí)行引擎就會出來工作,把垃圾所占據(jù)的對象空間進(jìn)行回收,這個過程就是所謂的垃圾回收。在這里用到了幾個小的概念,第一是引用,第二是從根上訪問,這個操作在后續(xù)的GC里面也會被頻繁的提到。

在這里再提一個名詞叫可達(dá)對象,首先在JavaScript中可達(dá)對象理解起來非常的容易,就是能訪問到的對象。至于訪問,可以是通過具體的引用也可以在當(dāng)前的上下文中通過作用域鏈。只要能找得到,就認(rèn)為是可達(dá)的。不過這里邊會有一個小的標(biāo)準(zhǔn)限制就是一定要是從根上出發(fā)找得到才認(rèn)為是可達(dá)的。所以又要去討論一下什么是根,在JavaScript里面可以認(rèn)為當(dāng)前的全局變量對象就是根,也就是所謂的全局執(zhí)行上下文。

簡單總結(jié)一下就是JavaScript中的垃圾回收其實就是找到垃圾,然后讓JavaScript的執(zhí)行引擎來進(jìn)行一個空間的釋放和回收。

這里用到了引用和可達(dá)對象,接下來就盡可能的通過代碼的方式來看一下在JavaScript中的引用與可達(dá)是怎么體現(xiàn)的。

首先定義一個變量,為了后續(xù)可以修改值采用let關(guān)鍵字定一個obj讓他指向一個對象,為了方便描述給他起一個名字叫

let obj = {name: 'xiaoming'}

寫完這行代碼以后其實就相當(dāng)于是這個空間被當(dāng)前的obj對象引用了,這里就出現(xiàn)了引用。站在全局執(zhí)行上下文下obj是可以從根上來被找到的,也就是說這個obj是一個可達(dá)的,這也就間接地意味著當(dāng)前xiaoming的對象空間是可達(dá)的。

接著再重新再去定義一個變量,比如ali讓他等于obj,可以認(rèn)為小明的空間又多了一次引用。這里存在著一個引用數(shù)值變化的,這個概念在后續(xù)的引用計數(shù)算法中是會用到的。

let obj = {name: 'xiaoming'}

let ali = obj

再來做一個事情,直接找到obj然后把它重新賦值為null。這個操作做完之后就可以思考一下了。本身小明這對象空間是有兩個引用的。隨著null賦值代碼的執(zhí)行,obj到小明空間的引用就相當(dāng)于是被切斷了?,F(xiàn)在小明對象是否還是可達(dá)呢?必然是的。因為ali還在引用著這樣的一個對象空間,所以說他依然是一個可達(dá)對象。

這就是一個引用的主要說明,順帶也看到了一個可達(dá)。

接下來再舉一個示例,說明一下當(dāng)前JavaScript中的可達(dá)操作,不過這里面需要提前說明一下。

為了方便后面GC中的標(biāo)記清除算法,所以這個實例會稍微麻煩一些。

首先定義一個函數(shù)名字叫objGroup,設(shè)置兩個形參obj1和obj2,讓obj1通過一個屬性指向obj2,緊接著再讓obj2也通過一個屬性去指向obj1。再通過return關(guān)鍵字直接返回一個對象,obj1通過o1進(jìn)行返回,再設(shè)置一個o2讓他找到obj2。完成之后在外部調(diào)用這個函數(shù),設(shè)置一個變量進(jìn)行接收,obj等于objGroup調(diào)用的結(jié)果。傳兩個參數(shù)分別是兩個對象obj1和obj2。

function objGroup(obj1, obj2) {
    obj1.next = obj2;
    obj2.prev = obj1;
}

let obj = objGroup({name: 'obj1'}, {name: 'obj2'});

console.log(obj);

運行可以發(fā)現(xiàn)得到了一個對象。對象里面分別有obj1和obj2,而obj1和obj2他們內(nèi)部又各自通過一個屬性指向了彼此。

{
    o1: {name: 'obj1', next: {name: 'obj2', prev: [Circular]}},
    o2: {name: 'obj2', next: {name: 'obj1', next: [Circular]}}
}

分析一下代碼,首先從全局的根出發(fā),是可以找到一個可達(dá)的對象obj,他通過一個函數(shù)調(diào)用之后指向了一個內(nèi)存空間,他的里面就是上面看到的o1和o2。然后在o1和o2的里面剛好又通過相應(yīng)的屬性指向了一個obj1空間和obj2空間。obj1和obj2之間又通過next和prev做了一個互相的一個引用,所以代碼里面所出現(xiàn)的對象都可以從根上來進(jìn)行查找。不論找起來是多么的麻煩,總之都能夠找到,繼續(xù)往下來再來做一些分析。

如果通過delete語句把obj身上o1的引用以及obj2對obj1的引用直接delete掉。此時此刻就說明了現(xiàn)在是沒有辦法直接通過什么樣的方式來找到obj1對象空間,那么在這里他就會被認(rèn)為是一個垃圾的操作。最后JavaScript引擎會去找到他,然后對其進(jìn)行回收。

這里說的比較麻煩,簡單來說就是當(dāng)前在編寫代碼的時候會存在的一些對象引用的關(guān)系,可以從根的下邊進(jìn)行查找,按照引用關(guān)系終究能找到一些對象。但是如果找到這些對象路徑被破壞掉或者說被回收了,那么這個時候是沒有辦法再找到他,就會把他視作是垃圾,最后就可以讓垃圾回收機制把他回收掉。

4. GC算法介紹

GC可以理解為垃圾回收機制的簡寫,GC工作的時候可以找到內(nèi)存當(dāng)中的一些垃圾對象,然后對空間進(jìn)行釋放還可以進(jìn)行回收,方便后續(xù)的代碼繼續(xù)使用這部分內(nèi)存空間。至于什么樣的東西在GC里邊可以被當(dāng)做垃圾看待,在這里給出兩種小的標(biāo)準(zhǔn)。

第一種從程序需求的角度來考慮,如果說某一個數(shù)據(jù)在使用完成之后上下文里邊不再需要去用到他了就可以把他當(dāng)做是垃圾來看待。

例如下面代碼中的name,當(dāng)函數(shù)調(diào)用完成以后已經(jīng)不再需要使用name了,因此從需求的角度考慮,他應(yīng)該被當(dāng)做垃圾進(jìn)行回收。至于到底有沒有被回收現(xiàn)在先不做討論。

function func() {
    name = 'yd';
    return `${name} is a coder`
}

func()

第二種情況是當(dāng)前程序運行過程中,變量能否被引用到的角度去考慮,例如下方代碼依然是在函數(shù)內(nèi)部放置一個name,不過這次加上了一個聲明變量的關(guān)鍵字。有了這個關(guān)鍵字以后,當(dāng)函數(shù)調(diào)用結(jié)束后,在外部的空間中就不能再訪問到這個name了。所以找不到他的時候,其實也可以算作是一種垃圾。

function func() {
    const name = 'yd';
    return `${name} is a coder`
}

func()

說完了GC再來說一下GC算法。我們已經(jīng)知道GC其實就是一種機制,它里面的垃圾回收器可以完成具體的回收工作,而工作的內(nèi)容本質(zhì)就是查找垃圾釋放空間并且回收空間。在這個過程中就會有幾個行為:查找空間,釋放空間,回收空間。這樣一系列的過程里面必然有不同的方式,GC的算法可以理解為垃圾回收器在工作過程中所遵循的一些規(guī)則,好比一些數(shù)學(xué)計算公式。

常見的GC算法有引用計數(shù),可以通過一個數(shù)字來判斷當(dāng)前的這個對象是不是一個垃圾。標(biāo)記清除,可以在GC工作的時候給那些活動對象添加標(biāo)記,以此判斷它是否是垃圾。標(biāo)記整理,與標(biāo)記清除很類似,只不過在后續(xù)回收過程中,可以做出一些不一樣的事情。分代回收,V8中用到的回收機制。

5. 引用計數(shù)算法

引用計數(shù)算法的核心思想是在內(nèi)部通過引用計數(shù)器來維護(hù)當(dāng)前對象的引用數(shù),從而判斷該對象的引用數(shù)值是否為0來決定他是不是一個垃圾對象。當(dāng)這個數(shù)值為0的時候GC就開始工作,將其所在的對象空間進(jìn)行回收和釋放。

引用計數(shù)器的存在導(dǎo)致了引用計數(shù)在執(zhí)行效率上可能與其它的GC算法有所差別。

引用的數(shù)值發(fā)生改變是指某一個對象的引用關(guān)系發(fā)生改變的時候,這時引用計數(shù)器會主動的修改當(dāng)前這個對象所對應(yīng)的引用數(shù)值。例如代碼里有一個對象空間,有一個變量名指向他,這個時候數(shù)值+1,如果又多了一個對象還指向他那他再+1,如果是減小的情況就-1。當(dāng)引用數(shù)字為0的時候,GC就會立即工作,將當(dāng)前的對象空間進(jìn)行回收。

通過簡單的代碼來說明一下引用關(guān)系發(fā)生改變的情況。首先定義幾個簡單的user變量,把他作為一個普通的對象,再定義一個數(shù)組變量,在數(shù)組的里存放幾個對象中的age屬性值。再定義一個函數(shù),在函數(shù)體內(nèi)定義幾個變量數(shù)值num1和num2,注意這里是沒有const的。在外層調(diào)用函數(shù)。

const user1 = {age: 11};
const user2 = {age: 22};
const user3 = {age: 33};

const nameList = [user1.age, user2.age, user3.age,];

function fn() {
    num1 = 1;
    num2 = 2;
}

fn();

首先從全局的角度考慮會發(fā)現(xiàn)window的下邊是可以直接找到user1,user2,user3以及nameList,同時在fn函數(shù)里面定義的num1和num2由于沒有設(shè)置關(guān)鍵字,所以同樣是被掛載在window對象下的。這時候?qū)@些變量而言他們的引用計數(shù)肯定都不是0。

接著在函數(shù)內(nèi)直接把num1和num2加上關(guān)鍵字的聲明,就意味著當(dāng)前這個num1和num2只能在作用域內(nèi)起效果。所以,一旦函數(shù)調(diào)用執(zhí)行結(jié)束之后,從外部全局的地方出發(fā)就不能找到num1和num2了,這個時候num1和num2身上的引用計數(shù)就會回到0。此時此刻只要是0的情況下,GC就會立即開始工作,將num1和num2當(dāng)做垃圾進(jìn)行回收。也就是說這個時候函數(shù)執(zhí)行完成以后內(nèi)部所在的內(nèi)存空間就會被回收掉。

const user1 = {age: 11};
const user2 = {age: 22};
const user3 = {age: 33};

const nameList = [user1.age, user2.age, user3.age,];

function fn() {
    const num1 = 1;
    const num2 = 2;
}

fn();

那么緊接著再來看一下其他的比如說user1,user2,user3以及nameList。由于userList,里面剛好都指向了上述三個對象空間,所以腳本即使執(zhí)行完一遍以后user1,user2,user3他里邊的空間都還被人引用著。所以此時的引用計數(shù)器都不是0,也就不會被當(dāng)做垃圾進(jìn)行回收。這就是引用計數(shù)算法實現(xiàn)過程中所遵循的基本原理。簡單的總結(jié)就是靠著當(dāng)前對象身上的引用計數(shù)的數(shù)值來判斷是否為0,從而決定他是不是一個垃圾對象。

1. 引用計數(shù)優(yōu)缺點

引用計數(shù)算法的優(yōu)點總結(jié)出兩條。

第一是引用計數(shù)規(guī)則會在發(fā)現(xiàn)垃圾的時候立即進(jìn)行回收,因為他可以根據(jù)當(dāng)前引用數(shù)是否為0來決定對象是不是垃圾。如果是就可以立即進(jìn)行釋放。

第二就是引用計數(shù)算法可以最大限度的減少程序的暫停,應(yīng)用程序在執(zhí)行的過程當(dāng)中,必然會對內(nèi)存進(jìn)行消耗。當(dāng)前執(zhí)行平臺的內(nèi)存肯定是有上限的,所以內(nèi)存肯定有占滿的時候。由于引用計數(shù)算法是時刻監(jiān)控著內(nèi)存引用值為0的對象,舉一個極端的情況就是,當(dāng)他發(fā)現(xiàn)內(nèi)存即將爆滿的時候,引用計數(shù)就會立馬找到那些數(shù)值為0的對象空間對其進(jìn)行釋放。這樣就保證了當(dāng)前內(nèi)存是不會有占滿的時候,也就是所謂的減少程序暫停的說法。

引用計數(shù)的缺點同樣給出兩條說明。

第一個就是引用計數(shù)算法沒有辦法將那些循環(huán)引用的對象進(jìn)行空間回收的。通過代碼片段演示一下,什么叫做循環(huán)引用的對象。

定義一個普通的函數(shù)fn在函數(shù)體的內(nèi)部定義兩個變量,對象obj1和obj2,讓obj1下面有一個name屬性然后指向obj2,讓obj2有一個屬性指向obj1。在函數(shù)最后的地方return返回一個普通字符,當(dāng)然這并沒有什么實際的意義只是做一個測試。接著在最外層調(diào)用一下函數(shù)。

function fn() {
    const obj1 = {};
    const obj2 = {};

    obj1.name = obj2;
    obj2.name = obj1;

    return 'yd is a coder';
}

那么接下來分析還是一樣的道理,函數(shù)在執(zhí)行結(jié)束以后,他內(nèi)部所在的空間肯定需要有涉及到空間回收的情況。比如說obj1和obj2,因為在全局的地方其實已經(jīng)不再去指向他了,所以這個時候他的引用計數(shù)應(yīng)該是為0的。

但是這個時候會有一個問題,在里邊會發(fā)現(xiàn),當(dāng)GC想要去把obj1刪除的時候,會發(fā)現(xiàn)obj2有一個屬性是指向obj1的。換句話講就是雖然按照之前的規(guī)則,全局的作用域下找不到obj1和obj2了,但是由于他們兩者之間在作用域范圍內(nèi)明顯還有著一個互相的指引關(guān)系。這種情況下他們身上的引用計數(shù)器數(shù)值并不是0,GC就沒有辦法將這兩個空間進(jìn)行回收。也就造成了內(nèi)存空間的浪費,這就是所謂的對象之間的循環(huán)引用。這也是引用計數(shù)算法所面臨到的一個問題。

第二個問題就是引用計數(shù)算法所消耗的時間會更大一些,因為當(dāng)前的引用計數(shù),需要維護(hù)一個數(shù)值的變化,在這種情況下要時刻的監(jiān)控著當(dāng)前對象的引用數(shù)值是否需要修改。對象數(shù)值的修改需要消耗時間,如果說內(nèi)存里邊有更多的對象需要修改,時間就會顯得很大。所以相對于其他的GC算法會覺得引用計數(shù)算法的時間開銷會更大一些。

6. 標(biāo)記清除算法

相比引用計數(shù)而言標(biāo)記清除算法的原理更加簡單,而且還能解決一些相應(yīng)的問題。在V8中被大量的使用到。

標(biāo)記清除算法的核心思想就是將整個垃圾回收操作分成兩個階段,第一個階段遍歷所有對象然后找到活動對象進(jìn)行標(biāo)記?;顒泳拖窀疤岬降目蛇_(dá)對象是一個道理,第二個階段仍然會遍歷所有的對象,把沒有標(biāo)記的對象進(jìn)行清除。需要注意的是在第二個階段當(dāng)中也會把第一個階段設(shè)置的標(biāo)記抹掉,便于GC下次能夠正常工作。這樣一來就可以通過兩次遍歷行為把當(dāng)前垃圾空間進(jìn)行回收,最終再交給相應(yīng)的空閑列表進(jìn)行維護(hù),后續(xù)的程序代碼就可以使用了。

這就是標(biāo)記清除算法的基本原理,其實就是兩個操作,第一是標(biāo)記,第二是清除。這里舉例說明。

首先在全局global聲明A,B,C三個可達(dá)對象,找到這三個可達(dá)對象之后,會發(fā)現(xiàn)他的下邊還會有一些子引用,這也就是標(biāo)記清除算法強大的地方。如果發(fā)現(xiàn)他的下邊有孩子,甚至孩子下邊還有孩子,這個時候他會用遞歸的方式繼續(xù)尋找那些可達(dá)的對象,比如說D,E分別是A和C的子引用,也會被標(biāo)記成可達(dá)的。

這里還有兩個變量a1和b1,他們在函數(shù)內(nèi)的局部作用域,局部作用域執(zhí)行完成以后這個空間就被回收了。所以從global鏈條下是找不到a1和b1的,這時候GC機制就會認(rèn)為他是一個垃圾對象,沒有給他做標(biāo)記,最終在GC工作的時候就會把他們回收掉。

const A = {};

function fn1() {
    const D = 1;
    A.D = D;
}

fn1();

const B;

const C = {};

function fn2() {
    const E = 2;
    A.E = E;
}

fn2();

function fn3() {
    const a1 = 3;
    const b1 = 4;
}

fn3();

這就是標(biāo)記清除所謂的標(biāo)記階段和清除階段,以及這兩個階段分別要做的事情。簡單的整理可以分成兩個步驟。在第一階段要找到所有可達(dá)對象,如果涉及到引用的層次關(guān)系,會遞歸進(jìn)行查找。找完以后會將這些可達(dá)對象進(jìn)行標(biāo)記。標(biāo)記完成以后進(jìn)行第二階段開始做清除,找到那些沒有做標(biāo)記的對象,同時還將第一次所做的標(biāo)記清除掉。這樣就完成了一次垃圾回收,同時還要留意,最終會把回收的空間直接放在一個叫做空閑列表上面。方便后續(xù)的程序可以直接在這申請空間使用。

1. 標(biāo)記清除算法優(yōu)缺點

相對比引用計數(shù)而言標(biāo)記清除具有一個最大的優(yōu)點,就是可以解決對象循環(huán)引用的回收操作。在寫代碼的時候可能會在全局定義A、B、C這樣的可達(dá)對象,也會有一些函數(shù)的局部作用域,比如在函數(shù)內(nèi)定義了a1和b1,而且讓他們互相引用。

const A = {};

const B;

const C = {};

function fn() {
    const a1 = {};
    const b1 = {};
    a1.value = b1;
    b1.value = a1;
}

fn();

函數(shù)的調(diào)用在結(jié)束之后必然要去釋放他們內(nèi)部的空間,在這種情況下一旦當(dāng)某一個函數(shù)調(diào)用結(jié)束之后他局部空間中的變量就失去了與全局global作用域上的鏈接。這個時候a1和b1在global根下邊就沒辦法訪問到了,就是一個不可達(dá)的對象。不可達(dá)對象在做標(biāo)記階段的時候不能夠完成標(biāo)記,在第二個階段回收的時候就直接進(jìn)行釋放了。

這是標(biāo)記清除可以做到的,但是在引用計數(shù)里面,函數(shù)調(diào)用結(jié)束同時也沒有辦法在全局進(jìn)行訪問。可是由于當(dāng)前判斷的標(biāo)準(zhǔn)是引用數(shù)字是否為0,在這種情況下,就沒有辦法釋放a1和b1空間,這就是標(biāo)記清除算法的最大優(yōu)點,當(dāng)然這是相對于引用計數(shù)算法而言的。

同時標(biāo)記清除算法也會有一些缺點。比如模擬一個內(nèi)存的存儲情況,從根進(jìn)行查找,在下方有一個可達(dá)對象A對象, 左右兩側(cè)有一個從跟下無法直接查找的一個區(qū)域,B和C。這種情況下在進(jìn)行第二輪清除操作的時候,就會直接將B和C所對應(yīng)的空間進(jìn)行回收。然后把釋放的空間添加到空閑列表上,后續(xù)的程序可以直接從空閑列表上申請相應(yīng)的一個空間地址,進(jìn)行使用。在這種情況下就會有一個問題。

function fn() {
    const B = '兩個';
}
fn();

const A = '四個文字';

function fn2() {
    const C = '一個';
}
fn2();

比如我們認(rèn)為,任何一個空間都會有兩部分組成,一個用來存儲空間一些元信息比如他的大小,地址,稱之為頭。還有一部分是專門用于存放數(shù)據(jù)的叫做域,B、C空間認(rèn)為B對象有2個字的空間,C對象有1個字的空間。這種情況下,雖然對他進(jìn)行了回收,加起來好像是釋放了3個字的空間,但是由于它們中間被A對象去分割著。所以在釋放完成之后其實還是分散的也就是地址不連續(xù)。

這點很重要,后續(xù)想申請的空間地址大小剛好1.5個字。這種情況下,如果直接找到B釋放的空間會發(fā)現(xiàn)是多了的,因為還多了0.5個,如果直接去找C釋放的空間又發(fā)現(xiàn)不夠,因為是1個。所以這就帶來了標(biāo)記清除算法中最大的問題,空間的碎片化。

所謂的空間碎片化,就是由于當(dāng)前所回收的垃圾對象在地址上本身是不連續(xù)的,由于這種不連續(xù)從而造成了回收之后分散在各個角落,后續(xù)要想去使用的時候,如果新的生成空間剛好與他們的大小匹配,就能直接用。一旦是多了或是少了就不太適合使用了。

這就是標(biāo)記清除算法優(yōu)點和缺點,簡單的整理一下就是優(yōu)點是可以解決循環(huán)引用不能回收的問題,缺點是說會產(chǎn)生空間碎片化的問題,不能讓空間得到最大化的使用。

7. 標(biāo)記整理算法

在V8中標(biāo)記整理算法會被頻繁的使用到,下面來看一下是如何實現(xiàn)的。

首先認(rèn)為標(biāo)記整理算法是標(biāo)記清除的增強操作,他們在第一個階段是完全一樣的,都會去遍歷所有的對象,然后將可達(dá)活動對象進(jìn)行標(biāo)記。第二階段清除時,標(biāo)記清除是直接將沒有標(biāo)記的垃圾對象做空間回收,標(biāo)記整理則會在清除之前先執(zhí)行整理操作,移動對象的位置,讓他們能夠在地址上產(chǎn)生連續(xù)。

假設(shè)回收之前有很多的活動對象和非活動對象,以及一些空閑的空間,當(dāng)執(zhí)行標(biāo)記操作的時候,會把所有的活動對象進(jìn)行標(biāo)記,緊接著會進(jìn)行整理的操作。整理其實就是位置上的改變,會把活動對象先進(jìn)行移動,在地址上變得連續(xù)。緊接著會將活動對象右側(cè)的范圍進(jìn)行整體的回收,這相對標(biāo)記清除算法來看好處是顯而易見的。

因為在內(nèi)存里不會大批量出現(xiàn)分散的小空間,從而回收到的空間都基本上都是連續(xù)的。這在后續(xù)的使用過程中,就可以盡可能的最大化利用所釋放出來的空間。這個過程就是標(biāo)記整理算法,會配合著標(biāo)記清除,在V8引擎中實現(xiàn)頻繁的GC操作。

8. 執(zhí)行時機

首先是引用計數(shù),他的可以及時回收垃圾對象,只要數(shù)值0的就會立即讓GC找到這片空間進(jìn)行回收和釋放。正是由于這個特點的存在,引用計數(shù)可以最大限度的減少程序的卡頓,因為只要這個空間即將被占滿的時候,垃圾回收器就會進(jìn)行工作,將內(nèi)存進(jìn)行釋放,讓內(nèi)存空間總有一些可用的地方。

標(biāo)記清除不能立即回收垃圾對象,而且他去清除的時候當(dāng)前的程序其實是停止工作的。即便第一階段發(fā)現(xiàn)了垃圾,也要等到第二階段清除的時候才會回收掉。

標(biāo)記整理也不能立即回收垃圾對象。

9. V8引擎

眾所周知V8引擎是目前市面上最主流的JavaScript執(zhí)行引擎,日常所使用的chrome瀏覽器以及NodeJavaScript平臺都在采用這個引擎去執(zhí)行JavaScript代碼。對于這兩個平臺來看JavaScript之所以能高效的運轉(zhuǎn),也正是因為V8的存在。V8的速度之所以快,除了有一套優(yōu)秀的內(nèi)存管理機制之外,還有一個特點就是采用及時編譯。

之前很多的JavaScript引擎都需要將源代碼轉(zhuǎn)成字節(jié)碼才能執(zhí)行,而V8可以將源碼翻譯成直接執(zhí)行的機器碼。所以執(zhí)行速度是非??斓?。

V8還有一個比較大的特點就是他的內(nèi)存是有上限的,在64位操作系統(tǒng)下,上限是不超過1.5G,在32位的操作系統(tǒng)中數(shù)值是不超過800M。

為什么V8要采用這樣的做法呢,原因基本上可以從兩方面進(jìn)行說明。

第一V8本身就是為了瀏覽器制造的,所以現(xiàn)有的內(nèi)存大小足夠使用了。再有V8內(nèi)部所實現(xiàn)的垃圾回收機制也決定了他采用這樣一個設(shè)置是非常合理的。因為官方做過一個測試,當(dāng)垃圾內(nèi)存達(dá)到1.5個G的時候,V8去采用增量標(biāo)記的算法進(jìn)行垃圾回收只需要消耗50ms,采用非增量標(biāo)記的形式回收則需要1s。從用戶體驗的角度來說1s已經(jīng)算是很長的時間了,所以就以1.5G為界了。

1. 垃圾回收策略

在程序的使用過程中會用到很多的數(shù)據(jù),數(shù)據(jù)又可以分為原始的數(shù)據(jù)和對象類型的數(shù)據(jù)?;A(chǔ)的原始數(shù)據(jù)都是由程序的語言自身來進(jìn)行控制的。所以這里所提到的回收主要還是指的是存活在堆區(qū)里的對象數(shù)據(jù),因此這個過程是離不開內(nèi)存操作的。

V8采用的是分代回收的思想,把內(nèi)存空間按照一定的規(guī)則分成兩類,新生代存儲區(qū)和老生代存儲區(qū)。有了分類后,就會針對不同代采用最高效的GC算法,從而對不同的對象進(jìn)行回收操作。這也就意味著V8回收會使用到很多的GC算法。

首先,分代回收算法肯定是要用到的,因為他必須要做分代。緊接著會用到空間的復(fù)制算法。除此以外還會用到標(biāo)記清除和標(biāo)記整理。最后為了去提高效率,又用到了標(biāo)記增量。

2. 回收新生代對象

首先是要說明一下V8內(nèi)部的內(nèi)存分配。因為他是基于分代的垃圾回收思想,所以在V8內(nèi)部是把內(nèi)存空間分成了兩個部分,可以理解成一個存儲區(qū)域被分成了左右兩個區(qū)域。左側(cè)的空間是專門用來存放新生代對象,右側(cè)專門存放老生代對象。新生代對象空間是有一定設(shè)置的,在64位操作系統(tǒng)中大小是32M,在32位的操作系統(tǒng)中是16M。

新生代對象其實指的就是存活時間較短的。比如說當(dāng)前代碼內(nèi)有個局部的作用域,作用域中的變量在執(zhí)行完成過后就要被回收,在其他地方比如全局也有一個變量,而全局的變量肯定要等到程序退出之后才會被回收。所以相對來說新生代就指的是那些存活時間比較短的那樣一些變量對象。

針對新生代對象回收所采用到的算法主要是復(fù)制算法和標(biāo)記整理算法,首先會將左側(cè)一部分小空間也分成兩個部分,叫做From和To,而且這兩個部分的大小是相等的,將From空間稱為使用狀態(tài),To空間叫做空閑狀態(tài)。有了這樣兩個空間之后代碼執(zhí)行的時候如果需要申請空間首先會將所有的變量對象都分配至From空間。也就是說在這個過程中To是空閑的,一旦From空間應(yīng)用到一定的程度之后,就要觸發(fā)GC操作。這個時候就會采用標(biāo)記整理對From空間進(jìn)行標(biāo)記,找到活動對象,然后使用整理操作把他們的位置變得連續(xù),便于后續(xù)不會產(chǎn)生碎片化空間。

做完這些操作以后,將活動對象拷貝至To空間,也就意味著From空間中的活動對象有了一個備份,這時候就可以考慮回收了。回收也非常簡單,只需要把From空間完全釋放就可以了,這個過程也就完成了新生代對象的回收操作。

總結(jié)一下就是新生代對象的存儲區(qū)域被一分為二,而且是兩個等大的,在這兩個等大的空間中,起名From和To,當(dāng)前使用的是From,所有的對象聲明都會放在這個空間內(nèi)。觸發(fā)GC機制的時候會把活動對象全部找到進(jìn)行整理,拷貝到To空間中??截愅瓿梢院笪覀冏孎rom和To進(jìn)行空間交換(也就是名字的交換),原來的To就變成了From,原來的From就變成了To。這樣就算完成了空間的釋放和回收。

接下來針對過程的細(xì)節(jié)進(jìn)行說明。首先在這個過程中肯定會想到的是,如果在拷貝時發(fā)現(xiàn)某一個變量對象所指的空間,在當(dāng)前的老生代對象里面也會出現(xiàn)。這個時候就會出現(xiàn)一個所謂的叫晉升的操作,就是將新生代的對象,移動至老生代進(jìn)行存儲。

至于什么時候觸發(fā)晉升操作一般有兩個判斷標(biāo)準(zhǔn),第一個是如果新生代中的某些對象經(jīng)過一輪GC之后他還活著。這個時候就可以把他拷貝至老年代存儲區(qū),進(jìn)行存儲。除此之外如果當(dāng)前拷貝的過程中,發(fā)現(xiàn)To空間的使用率超過了25%,這個時候也需要將這一次的活動對象都移動至老生代中存放。

為什么要選擇25%呢?其實也很容易想得通,因為將來進(jìn)行回收操作的時候,最終是要把From空間和To空間進(jìn)行交換的。也就是說以前的To會變成From,而以前的From要變成To,這就意味著To如果使用率達(dá)到了80%,最終變成活動對象的存儲空間后,新的對象好像存不進(jìn)去了。簡單的說明就是To空間的使用率如果超過了一定的限制,將來變成使用狀態(tài)時,新進(jìn)來的對象空間好像不那么夠用,所以會有這樣的限制。

簡單總結(jié)一下就是當(dāng)前內(nèi)存一分為二,一部分用來存儲新生代對象,至于什么是新生代對象可以認(rèn)為他的存活時間相對較短。然后可以去采用標(biāo)記整理的算法,對From空間進(jìn)行活動對象的標(biāo)記和整理操作,接著把他們拷貝To空間。最后再置換一下兩個空間的狀態(tài),那此時也就完成了空間的釋放操作。

3. 回收老生代對象

老生代對象存放在內(nèi)存空間的右側(cè),在V8中同樣是有內(nèi)存大小的限制,在64位操作系統(tǒng)中大小是1.4G, 在32位操作系統(tǒng)中是700M。

老生代對象指的是存活時間較長的對象,例如之前所提到的在全局對象中存放的一些變量,或者是一些閉包里面放置的變量有可能也會存活很長的時間。針對老生代垃圾回收主要采用的是標(biāo)記清除,標(biāo)記整理和增量標(biāo)記三個算法。

使用時主要采用的是標(biāo)記清除算法完成垃圾空間的釋放和回收,標(biāo)記清除算法主要是找到老生代存儲區(qū)域中的所有活動對象進(jìn)行標(biāo)記,然后直接釋放掉那些垃圾數(shù)據(jù)空間就可以了。顯而易見這個地方會存在一些空間碎片化的問題,不過雖然有這樣的問題但是V8的底層主要使用的還是標(biāo)記清除的算法。因為相對空間碎片來說他的提升速度是非常明顯的。

在什么情況下會使用到標(biāo)記整理算法呢?當(dāng)需要把新生代里的內(nèi)容向老生代中移動的時候,而且這個時間節(jié)點上老生代存儲區(qū)域的空間又不足以存放新生代存儲區(qū)移過來的對象。這種情況下就會觸發(fā)標(biāo)記整理,把之前的一些鎖片空間進(jìn)行整理回收,讓程序有更多的空間可以使用。最后還會采用增量標(biāo)記的方式對回收的效率進(jìn)行提升。

這里來對比一下新老生代垃圾回收。

新生代的垃圾回收更像是在用空間換時間,因為他采用的是復(fù)制算法,這也就意味著每時每刻他的內(nèi)部都會有一個空閑空間的存在。但是由于新生代存儲區(qū)本身的空間很小,所以分出來的空間更小,這部分的空間浪費相比帶來的時間上的一個提升當(dāng)然是微不足道的。

在老生代對象回收過程中為什么不去采用這種一分二位的做法呢?因為老生代存儲空間是比較大的,如果一分為二就有幾百兆的空間浪費,太奢侈了。第二就是老生代存儲區(qū)域中所存放的對象數(shù)據(jù)比較多,所以在賦值的過程中消耗的時間也就非常多,因此老生代的垃圾回收是不適合使用復(fù)制算法來實現(xiàn)的。

至于之前所提到的增量標(biāo)記算法是如何優(yōu)化垃圾回收操作的呢?首先分成兩個部分,一個是程序執(zhí)行,另一個是垃圾回收。

首先明確垃圾回收進(jìn)行工作的時候是會阻塞當(dāng)前JavaScript程序執(zhí)行的,也就是會出現(xiàn)一個空檔期,例如程序執(zhí)行完成之后會停下來執(zhí)行垃圾回收操作。所謂的標(biāo)記增量簡單來講就是將整段的垃圾回收操作拆分成多個小步驟,組分片完成整個回收,替代之前一口氣做完的垃圾回收操作。

這樣做的好處主要是實現(xiàn)垃圾回收與程序執(zhí)行交替完成,帶來的時間消耗會更加的合理一些。避免像以前那樣程序執(zhí)行的時候不能做垃圾回收,程序做垃圾回收的時候不能繼續(xù)運行程序。

簡單的舉個例子說明一下增量標(biāo)記的實現(xiàn)原理。

程序首先運行的時候是不需要進(jìn)行垃圾回收的,一旦當(dāng)他觸發(fā)了垃圾回收之后,無論采用的是何種算法,都會進(jìn)行遍歷和標(biāo)記操作,這里針對的是老生代存儲區(qū)域,所以存在遍歷操作。在遍歷的過程中需要做標(biāo)記,標(biāo)記之前也提到過可以不一口氣做完,因為存在直接可達(dá)和間接可達(dá)操作,也就是說如果在做的時候,第一步先找到第一層的可達(dá)對象。然后就可以停下來,讓程序再去執(zhí)行一會。如果說程序執(zhí)行了一會以后,再繼續(xù)讓GC機做第二步的標(biāo)記操作,比如下面還有一些子元素也是可達(dá)的,那就繼續(xù)做標(biāo)記。標(biāo)記一輪之后再讓GC停下來,繼續(xù)回到程序執(zhí)行,也就是交替的去做標(biāo)記和程序執(zhí)行。

最后標(biāo)記操作完成以后再去完成垃圾回收,這段時間程序就要停下來,等到垃圾回收操作完成才會繼續(xù)執(zhí)行。雖然這樣看起來程序停頓了很多次,但是整個V8最大的垃圾回收也就是當(dāng)內(nèi)存達(dá)到1.5G的時候,采用非增量標(biāo)記的形式進(jìn)行垃圾回收時間也不超過1s,所以這里程序的間斷是合理的。而且這樣一來最大限度的把以前很長的一段停頓時間直接拆分成了更小段,針對用戶體驗會顯得更加流程一些。

4. V8垃圾回收總結(jié)

首先要知道V8引擎是當(dāng)前主流的JavaScript執(zhí)行引擎,在V8的內(nèi)部內(nèi)存是設(shè)置上限的,這么做的原因是第一他本身是為瀏覽器而設(shè)置的,所以在web應(yīng)用中這樣的內(nèi)存大小是足夠使用的。第二就是由他內(nèi)部的垃圾回收機制來決定的,如果把內(nèi)存設(shè)置大一些這個時候回收時間最多可能就超過了用戶的感知,所以這里就設(shè)置了上限數(shù)值。

V8采用的是分代回收的思想,將內(nèi)存分成了新生代和老生代。關(guān)于新生代和老生代在空間和存儲數(shù)據(jù)類型是不同的。新生代如果在64位操作系統(tǒng)下空間是32M,32位的系統(tǒng)下就是16M。

V8對不同代對象采用的是不同的GC算法來完成垃圾回收操作,具體就是針對新生代采用復(fù)制算法和標(biāo)記整理算法,針對老生代對象主要采用標(biāo)記清除,標(biāo)記整理和增量標(biāo)記這樣三個算法。

10. Performance工具介紹

GC工作目的就是為了讓內(nèi)存空間在程序運行的過程中,出現(xiàn)良性的循環(huán)使用。所謂良性循環(huán)的基礎(chǔ)其實就是要求開發(fā)者在寫代碼的時候能夠?qū)?nèi)存空間進(jìn)行合理的分配。但是由于ECMAScript中并沒有給程序員提供相應(yīng)的操作內(nèi)存空間的API,所以是否合理好像也不知道,因為他都是由GC自動完成的。

如果想判斷整個過程內(nèi)存使用是否合理,必須想辦法能夠時刻關(guān)注到內(nèi)存的變化。所以就有了這樣一款工具可以提供給開發(fā)者更多的監(jiān)控方式,在程序運行過程中幫助開發(fā)者完成對內(nèi)存空間的監(jiān)控。

通過使用Performance可以對程序運行過程內(nèi)存的變化實時的監(jiān)控。這樣就可以在程序的內(nèi)存出現(xiàn)問題的時候直接想辦法定位到出現(xiàn)問題的代碼快。下面來看一下Performance工具的基本使用步驟。

首先打開瀏覽器,在地址欄輸入網(wǎng)址。輸入完地址之后不建議立即進(jìn)行訪問,因為想把最初的渲染過程記錄下來,所以只是打開界面輸入網(wǎng)址即可。緊接著打開開發(fā)人員工具面板(F12),選擇性能選項。開啟錄制功能,開啟之后就可以訪問目標(biāo)網(wǎng)址了。在這個頁面上進(jìn)行一些操作,過一段時間后停止錄制。

就可以得到一個報告,在報告當(dāng)中就可以分析跟內(nèi)存相關(guān)的信息了。錄制后會有一些圖表的展示,信息也非常的多,看起來比較麻煩。這里主要關(guān)注與內(nèi)存相關(guān)的信息,有一個內(nèi)存的選項(Memory)。默認(rèn)情況下如果沒有勾選需要將它勾選。頁面上可以看到一個藍(lán)色的線條。屬于整個過程中我內(nèi)存所發(fā)生的變化,可以根據(jù)時序,來看有問題的地方。如果某個地方有問題可以具體觀察,比如有升有降就是沒問題的。

1. 內(nèi)存問題的體現(xiàn)

當(dāng)程序的內(nèi)存出現(xiàn)問題的時候,具體會表現(xiàn)出什么樣的形式。

首先第一條,界面如果出現(xiàn)了延遲加載或者說經(jīng)常性的暫停,首先限定一下網(wǎng)絡(luò)環(huán)境肯定是正常的,所以出現(xiàn)這種情況一般都會去判定內(nèi)存是有問題的,而且與GC存在著頻繁的垃圾回收操作是相關(guān)的。也就是代碼中肯定存在瞬間讓內(nèi)存爆炸的代碼。這樣的代碼是不合適的需要去進(jìn)行定位。

第二個就是當(dāng)界面出現(xiàn)了持續(xù)性的糟糕性能表現(xiàn),也就是說在使用過程中,一直都不是特別的好用,這種情況底層一般會認(rèn)為存在著內(nèi)存膨脹。所謂的內(nèi)存膨脹指的就是,當(dāng)前界面為了達(dá)到最佳的使用速度,可能會申請一定的內(nèi)存空間,但是這個內(nèi)存空間的大小,遠(yuǎn)超過了當(dāng)前設(shè)備本身所能提供的大小,這個時候就會感知到一段持續(xù)性的糟糕性能的體驗,同樣肯定是假設(shè)當(dāng)前網(wǎng)絡(luò)環(huán)境是正常的。

最后,當(dāng)使用一些界面的時候,如果感知到界面的使用流暢度,隨著時間的加長越來越慢,或者說越來越差,這個過程就伴隨著內(nèi)存泄露,因為在這種情況下剛開始的時候是沒有問題的,由于我們某些代碼的出現(xiàn),可能隨著時間的增長讓內(nèi)存空間越來越少,這也就是所謂的內(nèi)存泄漏,因此,出現(xiàn)這種情況的時候界面會隨著使用時間的增長表現(xiàn)出性能越來越差的現(xiàn)象。

這就是關(guān)于應(yīng)用程序在執(zhí)行過程中如果遇到了內(nèi)存出現(xiàn)問題的情況,具體的體現(xiàn)可以結(jié)合Performance進(jìn)行內(nèi)存分析操作,從而定位到有問題的代碼,修改之后讓應(yīng)用程序在執(zhí)行的過程中顯得更加流暢。

2. 監(jiān)控內(nèi)存的幾種方式

內(nèi)存出現(xiàn)的問題一般歸納為三種:內(nèi)存泄露,內(nèi)存膨脹,頻繁的垃圾回收。當(dāng)這些內(nèi)容出現(xiàn)的時候,該以什么樣的標(biāo)準(zhǔn)來進(jìn)行界定呢?

內(nèi)存泄露其實就是內(nèi)存持續(xù)升高,這個很好判斷,當(dāng)前已經(jīng)有很多種方式可以獲取到應(yīng)用程序執(zhí)行過程中內(nèi)存的走勢圖。如果發(fā)現(xiàn)內(nèi)存一直持續(xù)升高的,整個過程沒有下降的節(jié)點,這也就意味著程序代碼中是存在內(nèi)存泄露的。這個時候應(yīng)該去代碼里面定位相應(yīng)的模塊。

內(nèi)存膨脹相對的模糊,內(nèi)存膨脹的本意指的是應(yīng)用程序本身,為了達(dá)到最優(yōu)的效果,需要很大的內(nèi)存空間,在這個過程中也許是由于當(dāng)前設(shè)備本身的硬件不支持,才造成了使用過程中出現(xiàn)了一些性能上的差異。想要判定是程序問題還是設(shè)備問題,應(yīng)該多做一些測試。這個時候可以找到那些深受用戶喜愛的設(shè)備,在他們上面運行應(yīng)用程序,如果整個過程中所有的設(shè)備都表現(xiàn)出了很糟糕的性能體驗。這就說明程序本身是有問題的,而不是設(shè)備有問題。這種情況就需要回到代碼里面,定位到內(nèi)存出現(xiàn)問題的地方。

具體有哪些方式來監(jiān)控內(nèi)存的變化,主要還是采用瀏覽器所提供的一些工具。

瀏覽器所帶的任務(wù)管理器,可以直接以數(shù)值的方式將當(dāng)前應(yīng)用程序在執(zhí)行過程中內(nèi)存的變化體現(xiàn)出來。第二個是借助于Timeline時序圖,直接把應(yīng)用程序執(zhí)行過程中所有內(nèi)存的走勢以時間點的方式呈現(xiàn)出來,有了這張圖就可以很容易的做判斷了。再有瀏覽器中還會有一個叫做堆快照的功能,可以很有針對性的查找界面對象中是否存在一些分離的DOM,因為分離DOM的存在也就是一種內(nèi)存上的泄露。

至于怎樣判斷界面是否存在著頻繁的垃圾回收,這就需要借助于不同的工具來獲取當(dāng)前內(nèi)存的走勢圖,然后進(jìn)行一個時間段的分析,從而得出判斷。

3. 任務(wù)管理器監(jiān)控內(nèi)存

一個web應(yīng)用在執(zhí)行的過程中,如果想要觀察他內(nèi)部的一個內(nèi)存變化,是可以有多種方式的,這里通過一段簡單的demo來演示一下,可以借助瀏覽器中自帶的任務(wù)管理器監(jiān)控腳本運行時內(nèi)存的變化。

在界面中放置一個元素,添加一個點擊事件,事件觸發(fā)的時候創(chuàng)建一個長度非常長的一個數(shù)組。這樣就會產(chǎn)生內(nèi)存空間上的消耗。

<body>
    <button id="btn">add</button>
    <script>
        const oBtn = document.getElementById('btn');
        oBtn.onclick = function() {
            let arrList = new Array(1000000)
        }
    </script>
</body>

完成之后打開瀏覽器運行,在右上角的更多中找到更多工具找到任務(wù)管理器打開。

這個時候就可以在任務(wù)管理器中定位到當(dāng)前正在執(zhí)行的腳本,默認(rèn)情況下是沒有JavaScript內(nèi)存列的,如果需要可以直接右擊找到JavaScript內(nèi)存展示出來。這里最關(guān)注的是內(nèi)存和JavaScript內(nèi)存這兩列。

第一列內(nèi)存表示的是原生內(nèi)存,也就是當(dāng)前界面會有很多DOM節(jié)點,這個內(nèi)存指的就是DOM節(jié)點所占據(jù)的內(nèi)存,如果這個數(shù)值在持續(xù)的增大,就說明界面中在不斷的創(chuàng)建DOM元素。

JavaScript內(nèi)存表示的是JavaScript的堆,在這列當(dāng)中需要關(guān)注的是小括號里面的值,表示的是界面中所有可達(dá)對象正在使用的內(nèi)存大小,如果這個數(shù)值一直在增大,就意味著當(dāng)前的界面中要么在創(chuàng)建新對象,要么就是現(xiàn)有對象在不斷的增長。

以這個界面為例,可以發(fā)現(xiàn)小括號的值一直是個穩(wěn)定的數(shù)字沒有發(fā)生變化,也就意味著當(dāng)前頁面是沒有內(nèi)存增長的。此時可以再去觸發(fā)一下click事件(點擊按鈕),多點幾次,完成以后就發(fā)現(xiàn)小括號里面的數(shù)值變大了。

通過這樣的過程就可以借助當(dāng)前的瀏覽器任務(wù)管理器來監(jiān)控腳本運行時整個內(nèi)存的變化。如果當(dāng)前JavaScript內(nèi)存列小括號里面的數(shù)值一直增大那就意味著內(nèi)存是有問題的,當(dāng)然這個工具是沒有辦法定位的,他只能發(fā)現(xiàn)問題,無法定位問題。

4. TimeLine記錄內(nèi)容

在之前已經(jīng)可以使用瀏覽器自帶的任務(wù)管理器對腳本執(zhí)行中內(nèi)存的變化去進(jìn)行監(jiān)控,但是在使用的過程中可以發(fā)現(xiàn),這樣的操作更多的是用于判斷當(dāng)前腳本的內(nèi)存是否存在問題。如果想要定位問題具體和什么樣的腳本有關(guān),任務(wù)管理器就不是那么好用了。

這里再介紹一個通過時間線記錄內(nèi)存變化的方式來演示一下怎樣更精確的定位到內(nèi)存的問題跟哪一塊代碼相關(guān),或者在什么時間節(jié)點上發(fā)生的。

首先放置一個DOM節(jié)點,添加點擊事件,在事件中創(chuàng)建大量的DOM節(jié)點來模擬內(nèi)存消耗,再通過數(shù)組的方式配合著其他的方法形成一個非常長的字符串,模擬大量的內(nèi)存消耗。

<body>
    <button id="btn">add</button>
    <script>
        const oBtn = document.getElementById('btn');

        const arrList = [];

        function test () {
            for (let i = 0; i < 100000; i++) {
                document.body.appendChild(document.createElement('p'))
            }
            arrList.push(new Array(1000000).join('x'))
        }
        oBtn.onclick = test;
    </script>
</body>

先打開瀏覽器的控制臺工具,選擇性能面板,默認(rèn)是沒有運行的,也就是沒有記錄,需要先點擊計時操作。點完以后就開始錄制了,點擊幾次add按鈕,稍等幾秒后,點擊停止按鈕。完成以后就生成了一個圖表,密密麻麻的東西看起來可能會有些頭疼,只關(guān)注下想要看到的信息就可以了。

內(nèi)存如果沒有勾選的話是不會監(jiān)控內(nèi)存變化的,需要先勾選內(nèi)存,勾選之后頁面上就出現(xiàn)了內(nèi)存的走勢曲線圖。里面會包含很多信息,給出來了幾中顏色的解釋。藍(lán)色的是JavaScript堆,紅色表示當(dāng)前的文檔,綠色是DOM節(jié)點,棕色是監(jiān)聽器,紫色是CPU內(nèi)存。

為了便于觀察可以只保留JavaScript堆,其他的取消勾選隱藏掉??梢钥吹竭@個腳本運行過程中到目前為止他的JavaScript堆的情況走勢。當(dāng)前這個工具叫時序圖,也就是在第一欄,以毫秒為單位,記錄了整個頁面從空白到渲染結(jié)束到最終停狀態(tài),這個過程中整個界面的變化。如果愿意,可以點進(jìn)去看一下當(dāng)前的界面形態(tài),如果只是關(guān)注內(nèi)存,只看內(nèi)存的曲線圖就可以了。

當(dāng)這個頁面最開始打開的時候其實很長一段時間都是平穩(wěn)的狀態(tài),沒有太多的內(nèi)存消耗。原因在根本沒有點擊add。然后緊接著在某一個時間點上突然之間內(nèi)存就上去了,上去之后是一段平穩(wěn)的狀態(tài),這是因為點擊了add之后這里的內(nèi)存肯定是瞬間暴漲的,然后緊接著暴漲之后我們?nèi)魏尾僮?,所以這時候肯定是平穩(wěn)。

然后緊接著平穩(wěn)之后又下降了,這就是之前所提到的,瀏覽器本身也是具有垃圾回收機制的,當(dāng)?shù)哪_本運行穩(wěn)定之后,GC可能在某個時間點上就開始工作了,會發(fā)現(xiàn)有一些對象是非活動的,就開始進(jìn)行回收,所以一段平穩(wěn)之后就降下去了。降下去之后又會有一些小的浮動,屬于正常的活動開銷。后來又有幾次連續(xù)的點擊,這個連續(xù)的點擊行為可能又造成內(nèi)存的飆升,然后不操作之后又往下降。

通過這樣一張內(nèi)存走勢圖,可以得出的結(jié)論是,腳本里面內(nèi)存是非常穩(wěn)定的,整個過程有漲有降,漲是申請內(nèi)存,降是用完之后我GC在正常的回收內(nèi)存。

一旦看到內(nèi)存的走勢是直線向上走,也就意味著他只有增長而沒有回收,必然存在著內(nèi)存消耗,更有可能是內(nèi)存泄漏??梢酝ㄟ^上面的時序圖定位問題,當(dāng)發(fā)現(xiàn)某一個節(jié)點上有問題的時候,可以直接在這里面定位到那個時間節(jié)點,可以在時序圖上進(jìn)行拖動查看每一個時間節(jié)點上的內(nèi)存消耗。還可以看到界面上的變化,就可以配合著定位到是哪一塊產(chǎn)生了這樣一個內(nèi)存的問題。

所以相對任務(wù)管理器來說會更好用,不但可以看當(dāng)前內(nèi)存是否有問題,還可以幫助定位問題在哪個時候發(fā)生的,然后再配合當(dāng)前的界面展示知道做了什么樣的操作才出現(xiàn)了這個問題,從而間接地可以回到代碼中定位有問題的代碼塊。

5. 堆快照查找分離DOM

這里簡單說明一下堆快照功能工作的原理,首先他相當(dāng)于找到JavaScript堆,然后對它進(jìn)行照片的留存。有了照片以后就可以看到它里面的所有信息,這也就是監(jiān)控的由來。堆快照在使用的時候非常的有用,因為他更像是針對分離DOM的查找行為。

界面上看到的很多元素其實都是DOM節(jié)點,而這些DOM節(jié)點本應(yīng)該存在于一顆存活的DOM樹上。不過DOM節(jié)點會有幾種形態(tài),一種是垃圾對象,一種是分離DOM。簡單的說就是如果這個節(jié)點從DOM樹上進(jìn)行了脫離,而且在JavaScript代碼當(dāng)中沒有再引用的DOM節(jié)點,他就成為了一個垃圾。如果DOM節(jié)點只是從DOM樹上脫離了,但是在JavaScript代碼中還有引用,就是分離DOM。分離DOM在界面上是看不見的,但是在內(nèi)存中是占據(jù)著空間的。

這種情況就是一種內(nèi)存泄露,可以通過堆快照的功能把他們找出來,只要能找得到,就可以回到代碼里,針對這些代碼進(jìn)行清除從而讓內(nèi)存得到一些釋放,腳本在執(zhí)行的時候也會變得更加迅速。

在html里面放入btn按鈕,添加點擊事件,點擊按鈕的時候,通過JavaScript語句去模擬相應(yīng)的內(nèi)存變化,比如創(chuàng)建DOM節(jié)點,為了看到更多類型的分離DOM,采用ul包裹li的DOM節(jié)點創(chuàng)建。先在函數(shù)中創(chuàng)建ul節(jié)點,然后使用循環(huán)的方式創(chuàng)建多個li放在ul里面,創(chuàng)建之后不需要放在頁面上,為了讓代碼引用到這個DOM使用變量tmpEle指向ul。

<body>
    <button id="btn">add</button>
    <script>
        const oBtn = document.getElementById('btn');

        var tmpEle;

        function fn () {
            var ul = document.createElement('ul');
            for (var i = 0; i < 10; i++) {
                var li = document.createElement('li');
                ul.appendChild(li);
            }
            tmpEle = ul;
        }

        oBtn.addEventListener('click', fn);

    </script>
</body>

簡單說明就是創(chuàng)建了ul和li節(jié)點,但是并沒有將他們放在頁面中,只是通過JavaScript變量引用了這個節(jié)點,這就是分離DOM。

打開瀏覽器調(diào)試工具,選中內(nèi)存面板。進(jìn)入以后可以發(fā)現(xiàn)堆快照的選項。這里做兩個行為的測試,第一個是在沒有點擊按鈕的情況下,直接獲取當(dāng)前的快照,在這個快照里面就是當(dāng)前對象的具體展示,這里有一個篩選的操作,直接檢索deta關(guān)鍵字,可以發(fā)現(xiàn)沒有內(nèi)容。

回到界面中做另外一個操作,對按鈕進(jìn)行點擊,點完以后我再拍攝一張快照(點擊左側(cè)的配置文件文字,出現(xiàn)拍照界面),還是做和之前一樣的操作檢索deta。

這次就會發(fā)現(xiàn),快照2里面搜索到了,很明顯這幾個就是代碼中所創(chuàng)建的DOM節(jié)點,并沒有添加到界面中,但是他的確存在于堆中。這其實就是一種空間上的浪費,針對這樣的問題在代碼中對使用過后的DOM節(jié)點進(jìn)行清空就可以了。

function fn () {
    var ul = document.createElement('ul');
    for (var i = 0; i < 10; i++) {
        var li = document.createElement('li');
        ul.appendChild(li);
    }
    tmpEle = ul;
    // 清空DOM
    ul = null;
}

在這里我們簡單的總結(jié)就是,我們可以利用瀏覽器當(dāng)中提供的一個叫做堆快照的功能,然后去把我們當(dāng)前的堆進(jìn)行拍照,拍照過后我們要找一下這里面是否存在所謂的分離DOM。

因為分離DOM在頁面中不體現(xiàn),在內(nèi)存中的確存在,所以這個時候他是一種內(nèi)存的浪費,那么我們要做的就是定位到我們代碼里面那些個分離DOM所在的位置,然后去想辦法把他給清除掉。

6. 判斷是否存在頻繁GC

這里說一下如何確定當(dāng)前web應(yīng)用在執(zhí)行過程中是否存在著頻繁的垃圾回收。當(dāng)GC去工作的時候應(yīng)用程序是停止的。所以GC頻繁的工作對web應(yīng)用很不友好,因為會處于死的狀態(tài),用戶會感覺到卡頓。

這個時候就要想辦法確定當(dāng)前的應(yīng)用在執(zhí)行時是否存在頻繁的垃圾回收。

這里給出兩種方式,第一種是可以通過timeline時序圖的走勢來判斷,在性能工具面板中對當(dāng)前的內(nèi)存走勢進(jìn)行監(jiān)控。如果發(fā)現(xiàn)藍(lán)色的走勢條頻繁的上升下降。就意味著在頻繁的進(jìn)行垃圾回收。出現(xiàn)這樣的情況之后必須定位到相應(yīng)的時間節(jié)點,然后看一下具體做了什么樣的操作,才造成這樣現(xiàn)象的產(chǎn)生,接著在代碼中進(jìn)行處理就可以了。

任務(wù)管理器在做判斷的時候會顯得更加簡單一些,因為他就是一個數(shù)值的變化,正常當(dāng)界面渲染完成之后,如果沒有其他額外的操作,那么無論是DOM節(jié)點內(nèi)存,還是我們JavaScript內(nèi)存,都是一個不變化的數(shù)值,或者變化很小。如果這里存在頻繁的GC操作時,這個數(shù)值的變化就是瞬間增大,瞬間減小,這樣的節(jié)奏,所以看到這樣的過程也意味著代碼存在頻繁的垃圾回收操作。

頻繁的垃圾回收操作表象上帶來的影響是讓用戶覺得應(yīng)用在使用的時候非??D,從內(nèi)部看就是當(dāng)前代碼中存在對內(nèi)存操作不當(dāng)?shù)男袨樽孏C不斷的工作,來回收釋放相應(yīng)的空間。

總結(jié)

到此這篇關(guān)于JavaScript垃圾回收機制的文章就介紹到這了,更多相關(guān)JavaScript垃圾回收機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js 去掉空格實例 Trim() LTrim() RTrim()

    js 去掉空格實例 Trim() LTrim() RTrim()

    js 去掉空格實例Trim(),LTrim(),RTrim() 需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • JS實現(xiàn)探測網(wǎng)站鏈接的方法【測試可用】

    JS實現(xiàn)探測網(wǎng)站鏈接的方法【測試可用】

    這篇文章主要介紹了JS實現(xiàn)探測網(wǎng)站鏈接的方法,通過網(wǎng)站返回錯誤響應(yīng)觸發(fā)onerror時間來判斷網(wǎng)站鏈接的可用性,非常簡便實用,需要的朋友可以參考下
    2016-11-11
  • JS打開圖片另存為對話框?qū)崿F(xiàn)代碼

    JS打開圖片另存為對話框?qū)崿F(xiàn)代碼

    使用JS打開圖片另存為對話框一直都是網(wǎng)頁應(yīng)用中不可缺少的一部分,本人有些好奇,于是搜集整理了一些實現(xiàn)代碼,不知道符不符合大眾的口味,在此班門弄斧了,需要的朋友可以了解下
    2012-12-12
  • JS獲取填報擴展單元格控件的值的解決辦法

    JS獲取填報擴展單元格控件的值的解決辦法

    這篇文章主要介紹了JS獲取填報擴展單元格控件的值的解決辦法,需要的朋友可以參考下
    2017-07-07
  • JS實現(xiàn)留言板功能[樓層效果展示]

    JS實現(xiàn)留言板功能[樓層效果展示]

    小編最近在基于js實現(xiàn)留言板功能,實現(xiàn)的功能有發(fā)布人和發(fā)布內(nèi)容做非空校驗,樓層效果展示和發(fā)布時間展示。具體實例代碼大家參考下本文
    2017-12-12
  • JavaScript錯誤處理之分析 Uncaught(in promise) error的原因及解決方案

    JavaScript錯誤處理之分析 Uncaught(in promise) error的

    在開發(fā)過程中,JavaScript的錯誤處理是一個老生常談的話題,當(dāng)應(yīng)用程序發(fā)生未捕獲的異常時,Uncaught(in promise) error是其中最常見的錯誤類型,這篇文章將從多個方面詳細(xì)闡述這種錯誤類型的原因與解決方案,感興趣的朋友一起看看吧
    2023-12-12
  • 詳解js正則表達(dá)式驗證時間格式xxxx-xx-xx形式

    詳解js正則表達(dá)式驗證時間格式xxxx-xx-xx形式

    本篇文章主要介紹了詳解js正則表達(dá)式驗證時間格式xxxx-xx-xx形式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • JavaScript設(shè)計模式經(jīng)典之命令模式

    JavaScript設(shè)計模式經(jīng)典之命令模式

    命令模式(Command)的定義是:用來對方法調(diào)用進(jìn)行參數(shù)化處理和傳送,經(jīng)過這樣處理過的方法調(diào)用可以在任何需要的時候執(zhí)行。接下來通過本文給大家介紹JavaScript設(shè)計模式經(jīng)典之命令模式,需要的朋友參考下
    2016-02-02
  • javascript firefox兼容ie的dom方法腳本

    javascript firefox兼容ie的dom方法腳本

    js firefox下兼容ie的dom的實現(xiàn)方法小結(jié)。利用我們?yōu)榱思嫒荻酁g覽器寫出更好的效果代碼
    2008-05-05
  • 微信小程序版翻牌小游戲

    微信小程序版翻牌小游戲

    這篇文章主要為大家詳細(xì)介紹了微信小程序版翻牌小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評論

男人和女人激情视频| 一区二区免费高清黄色视频| 97超碰最新免费在线观看| 精品国产在线手机在线| 1区2区3区不卡视频| 欧美xxx成人在线| 黄色黄色黄片78在线| 午夜婷婷在线观看视频| 精品乱子伦一区二区三区免费播| 97黄网站在线观看| 国产 在线 免费 精品| 超级福利视频在线观看| 班长撕开乳罩揉我胸好爽| 欧美日韩国产一区二区三区三州 | 婷婷六月天中文字幕| 91色秘乱一区二区三区| 毛片一级完整版免费| 男女第一次视频在线观看| 在线观看av2025| 欧美在线精品一区二区三区视频| 国产一线二线三线的区别在哪| 一区二区三区四区视频在线播放| 亚洲激情,偷拍视频| 老司机午夜精品视频资源| 国产成人午夜精品福利| jiuse91九色视频| 午夜美女福利小视频| 欧美第一页在线免费观看视频| 快点插进来操我逼啊视频| 亚洲国产欧美一区二区三区…| av在线播放国产不卡| 红杏久久av人妻一区| 中文字幕视频一区二区在线观看| 日本少妇的秘密免费视频| 最新中文字幕乱码在线| 欧美日韩亚洲国产无线码| 亚洲国产成人最新资源| 中文字幕日韩无敌亚洲精品| 天天操天天操天天碰| 亚洲精品欧美日韩在线播放 | 国产日本欧美亚洲精品视| 男女啪啪啪啪啪的网站| 69精品视频一区二区在线观看| 国产精品免费不卡av| av资源中文字幕在线观看| 亚洲超碰97人人做人人爱| 在线观看日韩激情视频| 日韩亚国产欧美三级涩爱| 中文字幕一区的人妻欧美日韩| 国产日韩欧美视频在线导航| 国产揄拍高清国内精品对白| 国产极品精品免费视频| 亚洲免费国产在线日韩| 天天操天天插天天色| 2o22av在线视频| 亚洲精品中文字幕下载| 亚洲精品无码色午夜福利理论片| 午夜精品一区二区三区4| av中文字幕网址在线| 又大又湿又爽又紧A视频| 天天夜天天日天天日| 性感美女高潮视频久久久| 天天插天天色天天日| 国产精品三级三级三级| 日韩少妇人妻精品无码专区| 婷婷色国产黑丝少妇勾搭AV| 一区二区三区蜜臀在线| 91精品激情五月婷婷在线| 一区国内二区日韩三区欧美| 欧美亚洲免费视频观看| 999久久久久999| 中文字幕免费福利视频6| 久久精品国产亚洲精品166m| 传媒在线播放国产精品一区| 天堂av在线官网中文| 热思思国产99re| 日韩av有码中文字幕| 欧美一区二区三区久久久aaa| 国产成人精品一区在线观看| 天天通天天透天天插| 懂色av蜜桃a v| 91九色porny蝌蚪国产成人| 中文字幕人妻被公上司喝醉在线| 国产乱弄免费视频观看| 超级av免费观看一区二区三区| av黄色成人在线观看| av老司机精品在线观看| 国产1区,2区,3区| 成年人午夜黄片视频资源| 欧美亚洲自偷自拍 在线| 成年女人免费播放视频| 免费在线播放a级片| 国产视频精品资源网站| 亚洲日本一区二区三区 | 又大又湿又爽又紧A视频| 日本乱人一区二区三区| 日韩精品二区一区久久| 一区二区视频在线观看视频在线| 中文字幕中文字幕人妻| 久久香蕉国产免费天天| 欧美aa一级一区三区四区| 99亚洲美女一区二区三区| 中国把吊插入阴蒂的视频| 欧美视频一区免费在线| 亚洲av极品精品在线观看| 深夜男人福利在线观看| 99国产精品窥熟女精品| 成人24小时免费视频| 91国语爽死我了不卡| 十八禁在线观看地址免费| 99热99这里精品6国产| 偷拍3456eee| 久久这里只有精品热视频| 91成人精品亚洲国产| 在线免费观看国产精品黄色| 嫩草aⅴ一区二区三区| 午夜免费观看精品视频| 黑人解禁人妻叶爱071| 精品首页在线观看视频| 521精品视频在线观看| 欧美成人综合视频一区二区| 最新91九色国产在线观看| 亚洲va天堂va国产va久| 天天日天天干天天要| 成年人啪啪视频在线观看| 欧美一区二区中文字幕电影 | 欧美亚洲一二三区蜜臀| 91人妻精品一区二区久久| 亚洲国产欧美一区二区三区…| 中文字幕一区的人妻欧美日韩| 又粗又硬又猛又黄免费30| 国产一区二区火爆视频| 综合一区二区三区蜜臀| 亚洲伊人色一综合网| 高清一区二区欧美系列| 亚洲一区制服丝袜美腿| 99精品国产免费久久| 欧美日本在线视频一区| 91国产在线视频免费观看| 久久麻豆亚洲精品av| 五月色婷婷综合开心网4438| 中文字幕+中文字幕| 日韩一区二区电国产精品| 日本a级视频老女人| 亚洲少妇人妻无码精品| 欧美精品中文字幕久久二区| 国产高清在线在线视频| 国产91嫩草久久成人在线视频| 在线不卡成人黄色精品| 欧美交性又色又爽又黄麻豆| 亚洲国产成人在线一区| 十八禁在线观看地址免费| 中文字幕一区二 区二三区四区| 国产免费高清视频视频| 亚洲熟妇无码一区二区三区| 国产三级影院在线观看| 天天综合天天综合天天网| 三级黄色亚洲成人av| 亚洲免费福利一区二区三区| 亚洲一区二区三区久久午夜| 天天摸天天日天天操| 手机看片福利盒子日韩在线播放 | 中文字幕一区二区三区蜜月 | 蜜臀av久久久久久久| 亚洲变态另类色图天堂网| 在线可以看的视频你懂的| 自拍偷拍 国产资源| 五十路丰满人妻熟妇| 天美传媒mv视频在线观看| 99热久久这里只有精品| 岛国毛片视频免费在线观看| 中文字母永久播放1区2区3区 | 亚洲欧美激情中文字幕| 亚洲国产精品黑丝美女| 80电影天堂网官网| 日本熟妇喷水xxx| 欧美在线一二三视频| 黄色在线观看免费观看在线| 成年人免费看在线视频| 黄色录像鸡巴插进去| 美女张开两腿让男人桶av| 欧美专区第八页一区在线播放| 亚洲欧美日韩视频免费观看| 瑟瑟视频在线观看免费视频| 日噜噜噜夜夜噜噜噜天天噜噜噜| 一个色综合男人天堂| 精品久久久久久久久久中文蒉| 亚洲无码一区在线影院| 欧美男同性恋69视频| 99精品国自产在线人| 亚洲av第国产精品| 中文字幕av男人天堂| 亚洲高清国产一区二区三区| 中文字幕最新久久久| av乱码一区二区三区| 午夜91一区二区三区| 姐姐的朋友2在线观看中文字幕| 亚洲午夜精品小视频| 天天日夜夜操天天摸| 爱爱免费在线观看视频| 中文字幕在线观看极品视频| 熟女在线视频一区二区三区| 天天插天天色天天日| 啊啊好大好爽啊啊操我啊啊视频| 白白操白白色在线免费视频| 熟女视频一区,二区,三区| av中文字幕网址在线| 国产麻豆精品人妻av| 岛国av高清在线成人在线| 黑人变态深video特大巨大| 99精品国自产在线人| 亚洲综合一区二区精品久久| 日韩精品中文字幕福利| 日本在线不卡免费视频| 3337p日本欧洲大胆色噜噜| 自拍 日韩 欧美激情| 黄色中文字幕在线播放| 亚洲狠狠婷婷综合久久app| 欧美日韩熟女一区二区三区| 黑人性生活视频免费看| 93精品视频在线观看| 中文字幕人妻熟女在线电影| 97欧洲一区二区精品免费| 可以免费看的www视频你懂的| 免费黄色成人午夜在线网站| 搡老妇人老女人老熟女| 中国视频一区二区三区| 亚洲变态另类色图天堂网| 2o22av在线视频| lutube在线成人免费看| 亚洲欧美成人综合在线观看| weyvv5国产成人精品的视频| 国产在线免费观看成人| 91国产在线免费播放| 91av精品视频在线| 中文字幕一区二区亚洲一区| 日本脱亚入欧是指什么| 青青青国产免费视频| 老司机你懂得福利视频| 亚洲欧美日韩视频免费观看| 男人操女人逼逼视频网站| 欧美男同性恋69视频| 免费观看国产综合视频| 日韩不卡中文在线视频网站| 亚洲精品午夜aaa久久| 青草青永久在线视频18| 经典av尤物一区二区| 18禁免费av网站| 亚洲成人三级在线播放 | 免费看美女脱光衣服的视频| 青青社区2国产视频| 欧美成人综合色在线噜噜| 青青青青青青青青青国产精品视频| 欧洲亚洲欧美日韩综合| 午夜久久久久久久精品熟女| 久久久久久国产精品| 91社福利《在线观看| 免费看高清av的网站| 91自产国产精品视频| 亚洲av无乱一区二区三区性色 | 美女日逼视频免费观看| 国产亚洲欧美45p| av线天堂在线观看| 久草电影免费在线观看| 视频 国产 精品 熟女 | 天天插天天狠天天操| 日本后入视频在线观看 | 午夜91一区二区三区| jiuse91九色视频| 日本一二三中文字幕| 日本性感美女写真视频| 新97超碰在线观看| 国产成人一区二区三区电影网站| 国产极品精品免费视频| 亚洲av日韩精品久久久| 国产一级精品综合av| 日本三极片视频网站观看| 激情五月婷婷免费视频| 中文字幕+中文字幕| 9色在线视频免费观看| 亚洲国产欧美一区二区丝袜黑人| 国产妇女自拍区在线观看| 3D动漫精品啪啪一区二区下载| 天堂v男人视频在线观看| 在线观看操大逼视频| 精品区一区二区三区四区人妻| 最新日韩av传媒在线| 操日韩美女视频在线免费看| 综合一区二区三区蜜臀| 综合精品久久久久97| 欧美一区二区三区久久久aaa| 中文字幕 亚洲av| 亚洲最大免费在线观看| 99国产精品窥熟女精品| 中文字幕视频一区二区在线观看 | 少妇高潮无套内谢麻豆| 国产在线观看免费人成短视频| 93人妻人人揉人人澡人人| 久草视频在线看免费| 欧美成人综合色在线噜噜| 国产美女一区在线观看| 18禁美女黄网站色大片下载| 中文字幕人妻熟女在线电影| 天天插天天色天天日| 天天摸天天亲天天舔天天操天天爽 | 亚洲国产欧美一区二区三区久久| 一区二区三区日韩久久| 国产乱子伦精品视频潮优女| 婷婷综合亚洲爱久久| 97人妻人人澡爽人人精品| 动漫黑丝美女的鸡巴| 国产在线观看黄色视频| 天码人妻一区二区三区在线看| 亚洲中文精品字幕在线观看| 老鸭窝在线观看一区| 在线观看成人国产电影| 免费观看理论片完整版| 日本在线不卡免费视频| 中文字幕中文字幕 亚洲国产| 天天插天天狠天天操| 直接能看的国产av| 国产精品免费不卡av| 色吉吉影音天天干天天操| 亚洲av可乐操首页| 精品亚洲在线免费观看| 亚洲第17页国产精品| 国产va在线观看精品| 大陆av手机在线观看| 亚洲 欧美 自拍 偷拍 在线| 亚洲精品三级av在线免费观看| 天天日天天干天天舔天天射| 狠狠操狠狠操免费视频| 精品亚洲在线免费观看| 国产在线免费观看成人| 亚洲精品成人网久久久久久小说| 国产va精品免费观看| free性日本少妇| 中文字幕人妻被公上司喝醉在线| 亚洲熟女综合色一区二区三区四区| 四川乱子伦视频国产vip| 婷婷色中文亚洲网68| 水蜜桃一区二区三区在线观看视频 | 自拍偷拍,中文字幕| 3337p日本欧洲大胆色噜噜| 午夜精品九一唐人麻豆嫩草成人| 97人人妻人人澡人人爽人人精品| 老师啊太大了啊啊啊尻视频| 99婷婷在线观看视频| 久久久极品久久蜜桃| 极品粉嫩小泬白浆20p主播| 欧美爆乳肉感大码在线观看| 视频一区二区三区高清在线| 亚洲国产成人最新资源| 国产高清精品极品美女| av完全免费在线观看av| 91色秘乱一区二区三区| 18禁免费av网站| 91天堂精品一区二区| 国产九色91在线视频| 伊人综合免费在线视频| 精品黑人巨大在线一区| 性欧美日本大妈母与子| 护士特殊服务久久久久久久| 亚洲欧美在线视频第一页| 亚洲熟色妇av日韩熟色妇在线| 喷水视频在线观看这里只有精品| 91人妻精品久久久久久久网站| av成人在线观看一区| 成人18禁网站在线播放| 老司机午夜精品视频资源| 亚洲 清纯 国产com| 免费无码人妻日韩精品一区二区| 最新97国产在线视频| 北条麻妃肉色丝袜视频| 最新91精品视频在线| 久久这里有免费精品| 国产卡一卡二卡三乱码手机| 国产精品黄页网站视频| 九色porny九色9l自拍视频| v888av在线观看视频| 大骚逼91抽插出水视频| 综合激情网激情五月天| 欧美一区二区三区久久久aaa| 888亚洲欧美国产va在线播放| 国产精品一区二区久久久av| 久久久极品久久蜜桃| 999九九久久久精品| av视屏免费在线播放| 国产伦精品一区二区三区竹菊| 黄页网视频在线免费观看| 9久在线视频只有精品| 97黄网站在线观看| 快插进小逼里大鸡吧视频| 欧美日本在线观看一区二区| 青青青青青操视频在线观看| 超碰97人人澡人人| 中文字日产幕乱六区蜜桃| 亚洲av日韩av第一区二区三区| 夜夜操,天天操,狠狠操| 亚洲av日韩av第一区二区三区| 91色九色porny| 国产亚洲精品视频合集| 91色网站免费在线观看| 欧美综合婷婷欧美综合| 精品少妇一二三视频在线| 2020韩国午夜女主播在线| 国产视频精品资源网站| 熟女妇女老妇一二三区| 边摸边做超爽毛片18禁色戒| 国产三级影院在线观看| 久久精品国产999| 国产熟妇一区二区三区av| 大香蕉大香蕉在线看| 免费十精品十国产网站| 最新的中文字幕 亚洲| av中文字幕在线观看第三页 | 三级等保密码要求条款| 熟女俱乐部一二三区| 青青青青青免费视频| 久久人人做人人妻人人玩精品vr| 99热久久这里只有精品8| 中出中文字幕在线观看| 天天日天天舔天天射进去| 婷婷五月亚洲综合在线| 国产高清在线在线视频| 男人的天堂在线黄色| 熟女人妻一区二区精品视频| 精品一区二区三区三区色爱| 欧美亚洲国产成人免费在线| 日本人竟这样玩学生妹| 精品一区二区三区三区色爱| mm131美女午夜爽爽爽| 夜夜骑夜夜操夜夜奸| 成年女人免费播放视频| 成人av在线资源网站| 人妻少妇av在线观看| 熟女在线视频一区二区三区| 肏插流水妹子在线乐播下载| 人人妻人人澡欧美91精品| 天美传媒mv视频在线观看| 精品一线二线三线日本| 中文字幕高清在线免费播放| 亚洲午夜福利中文乱码字幕| 欧美美女人体视频一区| 女蜜桃臀紧身瑜伽裤| 久久久超爽一二三av| 88成人免费av网站| 精产国品久久一二三产区区别| 天天干天天爱天天色| 人妻丰满熟妇综合网| av手机免费在线观看高潮| 国产九色91在线观看精品| 亚洲一区二区三区在线高清| 2012中文字幕在线高清| 欧美日本aⅴ免费视频| 国产精品自偷自拍啪啪啪| 国产成人无码精品久久久电影| 97精品人妻一区二区三区精品| 在线不卡日韩视频播放| 国产精品午夜国产小视频| 搞黄色在线免费观看| 另类av十亚洲av| 91‖亚洲‖国产熟女| 亚洲美女自偷自拍11页| 大肉大捧一进一出好爽在线视频| 午夜在线观看一区视频| 国产高清97在线观看视频| 又粗又长 明星操逼小视频| av黄色成人在线观看| 热久久只有这里有精品| 亚洲午夜伦理视频在线| 欧美成人综合色在线噜噜| 精品一区二区三区午夜| 日韩午夜福利精品试看| 99精品视频在线观看免费播放| 99久久99一区二区三区| 40道精品招牌菜特色| 日韩精品中文字幕播放| 神马午夜在线观看视频| av手机在线免费观看日韩av| 91超碰青青中文字幕| 欧美视频不卡一区四区| 视频久久久久久久人妻| av新中文天堂在线网址| 春色激情网欧美成人| 精品一区二区三区三区色爱| 伊人开心婷婷国产av| 午夜影院在线观看视频羞羞羞| 丰满的子国产在线观看| 日本少妇人妻xxxxxhd| 欧美精品伦理三区四区| 日本特级片中文字幕| 91免费观看国产免费| 99久久激情婷婷综合五月天| av乱码一区二区三区| 精品一线二线三线日本| 高潮喷水在线视频观看| 3344免费偷拍视频| 最近的中文字幕在线mv视频| 亚洲2021av天堂| 精品人妻一二三区久久| 一区二区三区蜜臀在线| 亚洲国际青青操综合网站 | 亚洲熟妇无码一区二区三区| 婷婷激情四射在线观看视频| av天堂资源最新版在线看| 91精品啪在线免费| 国产97在线视频观看| 亚洲推理片免费看网站| 免费无毒热热热热热热久| 青青青激情在线观看视频| 午夜免费观看精品视频| 一个人免费在线观看ww视频| lutube在线成人免费看| 激情图片日韩欧美人妻| 亚洲久久午夜av一区二区| 日本高清在线不卡一区二区| 硬鸡巴动态操女人逼视频| 成人av天堂丝袜在线观看| 午夜精品久久久久麻豆影视| 国产欧美精品一区二区高清| 人人妻人人爱人人草| 久久久久久久精品成人热| 成年午夜免费无码区| 一个色综合男人天堂| 亚洲熟色妇av日韩熟色妇在线 | 亚洲国产第一页在线观看| 日美女屁股黄邑视频| 亚洲成av人无码不卡影片一| 极品丝袜一区二区三区| 97国产福利小视频合集| 美女福利写真在线观看视频| 欧美 亚洲 另类综合| 欧美综合婷婷欧美综合| 五十路熟女人妻一区二| 成人亚洲精品国产精品| 91极品新人『兔兔』精品新作| 蜜桃视频入口久久久| 国产三级影院在线观看| 国产变态另类在线观看| jul—619中文字幕在线| 亚洲av第国产精品| 国产美女一区在线观看| 中文字幕在线观看国产片| 国产午夜福利av导航| 综合一区二区三区蜜臀| 国产三级精品三级在线不卡| 超黄超污网站在线观看| 日韩欧美国产一区ab| 亚洲另类在线免费观看| 91免费观看在线网站| 香港一级特黄大片在线播放| 日本一二三中文字幕| 黑人解禁人妻叶爱071| 国产白嫩美女一区二区| 久青青草视频手机在线免费观看| 男人天堂最新地址av| 欧美男人大鸡吧插女人视频| 精品区一区二区三区四区人妻| 亚洲国产成人无码麻豆艾秋| 熟妇一区二区三区高清版| 亚洲综合另类精品小说| 成人乱码一区二区三区av| 激情综合治理六月婷婷| 欧美成人猛片aaaaaaa| 中文字幕第三十八页久久| 日本a级视频老女人| ka0ri在线视频| 亚洲av无乱一区二区三区性色| 精品国产亚洲av一淫| 天天做天天爽夜夜做少妇| 日韩二区视频一线天婷婷五| 国内精品在线播放第一页| 超碰中文字幕免费观看| 丝袜美腿欧美另类 中文字幕| 人妻少妇亚洲一区二区| 亚洲综合另类精品小说| 综合页自拍视频在线播放| 老司机午夜精品视频资源| 在线播放 日韩 av| 美洲精品一二三产区区别| 免费十精品十国产网站| 免费看国产又粗又猛又爽又黄视频| 日韩精品二区一区久久| 亚洲综合乱码一区二区| 2022国产精品视频| 日美女屁股黄邑视频| 国产亚洲四十路五十路| 国产一区二区欧美三区| 熟女人妻在线中出观看完整版| 日本免费一级黄色录像| 丝袜亚洲另类欧美变态| 青青青青青手机视频| 色av色婷婷人妻久久久精品高清 | 亚洲一区二区三区av网站| 国产性生活中老年人视频网站| 狠狠操操操操操操操操操| 国内精品在线播放第一页| 播放日本一区二区三区电影| 中文字幕日本人妻中出| 亚洲综合另类精品小说| mm131美女午夜爽爽爽| 三级av中文字幕在线观看| 一级a看免费观看网站| 中国黄片视频一区91| 国产成人精品一区在线观看 | 亚洲福利天堂久久久久久| 99re久久这里都是精品视频| brazzers欧熟精品系列| 日韩欧美在线观看不卡一区二区| 久久精品36亚洲精品束缚| 久久这里只有精彩视频免费| 亚洲免费国产在线日韩| 国产综合高清在线观看| 天堂av在线最新版在线| 亚洲欧美一卡二卡三卡| 中文字幕乱码人妻电影| 欧美日韩激情啪啪啪| 熟女视频一区,二区,三区| 在线不卡日韩视频播放| 国产熟妇人妻ⅹxxxx麻豆| 午夜av一区二区三区| 天天日天天干天天插舔舔| 狠狠躁夜夜躁人人爽天天天天97| 亚洲精品ww久久久久久| 亚洲 中文 自拍 无码| 色婷婷久久久久swag精品| 国产使劲操在线播放| 97黄网站在线观看| 日本成人一区二区不卡免费在线| 国产一区二区在线欧美| 国产欧美日韩第三页| 香蕉片在线观看av| 青青青青青青青青青国产精品视频| 日日摸夜夜添夜夜添毛片性色av| 青青尤物在线观看视频网站| AV无码一区二区三区不卡| 亚洲欧美福利在线观看| 韩国爱爱视频中文字幕| yy6080国产在线视频| 免费观看成年人视频在线观看| 精品视频国产在线观看| 91九色porny蝌蚪国产成人| 免费费一级特黄真人片| 女同互舔一区二区三区| 午夜频道成人在线91| 天天操天天干天天日狠狠插 | 人人爱人人妻人人澡39| 激情伦理欧美日韩中文字幕| 国产成人精品av网站| av中文在线天堂精品| 好男人视频在线免费观看网站| 性感美女诱惑福利视频| 性生活第二下硬不起来| 日本一区二区三区免费小视频| 亚洲少妇人妻无码精品| 亚洲第一伊人天堂网| 97精品成人一区二区三区| 77久久久久国产精产品| 日日操夜夜撸天天干| 国产真实乱子伦a视频 | 阴茎插到阴道里面的视频| 亚洲天堂第一页中文字幕| 中文字幕人妻被公上司喝醉在线| 午夜dv内射一区区| 自拍偷拍亚洲欧美在线视频| 中文字幕在线观看极品视频| 无码日韩人妻精品久久| 99精品一区二区三区的区| 热99re69精品8在线播放| www久久久久久久久久久| 夜女神免费福利视频| 2022中文字幕在线| 99精品国产aⅴ在线观看| 天天插天天色天天日| 91国内精品自线在拍白富美| 丝袜美腿欧美另类 中文字幕| 最新国产精品网址在线观看| 日本xx片在线观看| 久久久精品999精品日本| 91免费观看在线网站| 成人av在线资源网站| 精品国产乱码一区二区三区乱| 久青青草视频手机在线免费观看 | 国产精品人妻一区二区三区网站| 99人妻视频免费在线| 馒头大胆亚洲一区二区| 欧美日韩v中文在线| 人妻爱爱 中文字幕| 国产三级精品三级在线不卡| 国产黄网站在线观看播放| 91国产在线视频免费观看| 激情国产小视频在线| 任你操任你干精品在线视频| 视频 国产 精品 熟女 | 亚洲 欧美 自拍 偷拍 在线| 狍和女人的王色毛片| 天天射,天天操,天天说| 91天堂精品一区二区| 国产精品久久久黄网站| 午夜精品在线视频一区| 精品高跟鞋丝袜一区二区| 在线免费91激情四射 | 97人妻人人澡爽人人精品| 馒头大胆亚洲一区二区| 国产视频网站一区二区三区| 一区二区三区欧美日韩高清播放| 91极品大一女神正在播放| 一区二区三区四区视频| 天天操天天操天天碰| 手机看片福利盒子日韩在线播放| 亚洲人妻30pwc| 国产熟妇乱妇熟色T区| 国产变态另类在线观看| 国产黄色大片在线免费播放| 97国产在线观看高清| 亚洲成人精品女人久久久| 一区二区三区在线视频福利| 美女av色播在线播放| 欧美香蕉人妻精品一区二区| 免费一级特黄特色大片在线观看| 黄色资源视频网站日韩| 中文字幕在线免费第一页| 绝色少妇高潮3在线观看| 亚洲免费va在线播放| 天天射夜夜操综合网| 在线视频国产欧美日韩| 91国偷自产一区二区三区精品| 天天干天天操天天摸天天射| 99国内精品永久免费视频| 免费观看丰满少妇做受| 亚洲欧美成人综合视频| 中文字幕在线免费第一页| 久草视频在线看免费| 亚洲蜜臀av一区二区三区九色 | 91色秘乱一区二区三区| 成人网18免费视频版国产| 亚洲 自拍 色综合图| 区一区二区三国产中文字幕| 亚洲色偷偷综合亚洲AV伊人| 欧美天堂av无线av欧美| 亚洲综合另类精品小说| 激情小视频国产在线| 大鸡吧插入女阴道黄色片| 亚洲中文字幕国产日韩| 国产精品黄页网站视频| 精品一区二区三区三区色爱| 国产露脸对白在线观看| 欧美精品久久久久久影院| 狠狠躁夜夜躁人人爽天天天天97| 欧美另类z0z变态| 在线观看的a站 最新| 99国产精品窥熟女精品| 精品久久婷婷免费视频| 国产成人综合一区2区| 亚洲欧美综合另类13p| 五月婷婷在线观看视频免费 | 一色桃子久久精品亚洲| 亚洲 中文字幕在线 日韩| 亚洲福利精品视频在线免费观看| 亚洲美女美妇久久字幕组| 91成人精品亚洲国产| 天堂av在线播放免费| 老有所依在线观看完整版| 欧美成一区二区三区四区| 一区二区三区四区中文| 国产真实乱子伦a视频| 日韩不卡中文在线视频网站| 日本在线一区二区不卡视频| 91欧美在线免费观看| 天天做天天干天天操天天射| 黄色黄色黄片78在线| 中文字日产幕乱六区蜜桃| 伊人综合免费在线视频| 亚洲欧美久久久久久久久| 美女骚逼日出水来了| 精品av国产一区二区三区四区 | 99婷婷在线观看视频| av一本二本在线观看| 超黄超污网站在线观看| 亚洲一级av无码一级久久精品| 自拍偷拍vs一区二区三区| 免费69视频在线看| 国语对白xxxx乱大交| 天堂va蜜桃一区入口| 天天插天天色天天日| 在线可以看的视频你懂的| 天天躁日日躁狠狠躁av麻豆| 欧美成人综合视频一区二区| 青青青青青操视频在线观看| 一色桃子久久精品亚洲| 爆乳骚货内射骚货内射在线| 三级av中文字幕在线观看| 亚洲av香蕉一区区二区三区犇| 亚洲国际青青操综合网站| 摧残蹂躏av一二三区| 97超碰国语国产97超碰| 午夜蜜桃一区二区三区| 最新日韩av传媒在线| 大学生A级毛片免费视频| 国产精品人妻66p| 国产精品手机在线看片| 黑人乱偷人妻中文字幕| 天天插天天狠天天操| 欧美亚洲免费视频观看| 人人妻人人人操人人人爽| 亚洲av在线观看尤物| 午夜激情久久不卡一区二区| 好太好爽好想要免费| 欧美日韩情色在线观看| 美女 午夜 在线视频| 97超碰人人搞人人| 精品首页在线观看视频| 啪啪啪啪啪啪啪啪啪啪黄色| 青青青青青青青青青国产精品视频| 中文字幕日韩无敌亚洲精品| 东游记中文字幕版哪里可以看到| 91国内视频在线观看| 中文字幕高清资源站| 中文字幕第一页国产在线| 高清成人av一区三区| 免费成人av中文字幕| 天天草天天色天天干| 亚洲 欧美 精品 激情 偷拍 | 2021国产一区二区| 粗大的内捧猛烈进出爽大牛汉子| 国产janese在线播放| 中文字幕人妻被公上司喝醉在线| 国产精品欧美日韩区二区| 五色婷婷综合狠狠爱| 色哟哟在线网站入口| 传媒在线播放国产精品一区| 亚洲熟妇久久无码精品| 亚洲精品亚洲人成在线导航| gav成人免费播放| 天堂va蜜桃一区入口| 亚洲一区二区三区五区| 青娱乐最新视频在线| 亚洲欧美综合在线探花| 精品视频国产在线观看| 成人午夜电影在线观看 久久| 精品久久久久久久久久中文蒉| 免费观看理论片完整版| 一区二区三区四区中文| 中文字幕 人妻精品| 和邻居少妇愉情中文字幕| 自拍偷拍亚洲欧美在线视频| 亚洲精品国品乱码久久久久| 欧美久久一区二区伊人| 亚洲综合在线观看免费| 亚洲女人的天堂av| 色哟哟在线网站入口| 91av精品视频在线| 好男人视频在线免费观看网站| 日韩北条麻妃一区在线| 亚洲av无乱一区二区三区性色| 国产91久久精品一区二区字幕| 日本免费一级黄色录像| 人妻熟女在线一区二区| 98精产国品一二三产区区别| 欧美aa一级一区三区四区| 午夜久久香蕉电影网| 少妇高潮无套内谢麻豆| 国产成人午夜精品福利| 韩国三级aaaaa高清视频| 成人国产激情自拍三区| 91亚洲精品干熟女蜜桃频道| 一区二区熟女人妻视频| 亚洲偷自拍高清视频| 91一区精品在线观看| 大鸡巴操b视频在线| 又黄又刺激的午夜小视频| 亚洲熟女女同志女同| av无限看熟女人妻另类av| 东京热男人的av天堂| 3344免费偷拍视频| 桃色视频在线观看一区二区| 亚洲一级av大片免费观看| 国产夫妻视频在线观看免费| 亚洲日本一区二区三区| 动漫精品视频在线观看| 天天日天天干天天插舔舔| 亚洲1卡2卡三卡4卡在线观看| 午夜影院在线观看视频羞羞羞| 色偷偷伊人大杳蕉综合网 | 国产剧情演绎系列丝袜高跟| 欧洲亚洲欧美日韩综合| 久久精品在线观看一区二区| 天天操天天干天天日狠狠插| 国产亚洲欧美视频网站| 九九热99视频在线观看97| 3337p日本欧洲大胆色噜噜| 亚洲精品一区二区三区老狼| 午夜精彩视频免费一区| 天天做天天干天天舔| 国产高清在线在线视频| 国产成人自拍视频在线免费观看| 伊人精品福利综合导航| wwwxxx一级黄色片| 国产超码片内射在线| 亚洲国际青青操综合网站| 国产精品中文av在线播放| chinese国产盗摄一区二区| 狠狠地躁夜夜躁日日躁| 午夜国产福利在线观看| 久久久久久久久久一区二区三区| 操日韩美女视频在线免费看| 成人资源在线观看免费官网| 在线观看911精品国产| 精品一区二区三区在线观看| 青娱乐在线免费视频盛宴| 久久三久久三久久三久久| 亚洲高清国产自产av| 在线免费视频 自拍| 香港三日本三韩国三欧美三级| 18禁免费av网站| 青青青艹视频在线观看| 青青青青青手机视频| 老司机福利精品视频在线| 55夜色66夜色国产精品站| av俺也去在线播放| 阿v天堂2014 一区亚洲| 中文字幕人妻熟女在线电影| 98视频精品在线观看| 在线免费视频 自拍| 日韩欧美高清免费在线| v888av在线观看视频| 岛国av高清在线成人在线| 人妻熟女中文字幕aⅴ在线| 亚洲美女高潮喷浆视频| 日韩三级黄色片网站| 精品亚洲在线免费观看| 欧美国品一二三产区区别| 国产麻豆剧传媒精品国产av蜜桃| 日本又色又爽又黄又粗| 97精品人妻一区二区三区精品| 亚洲最大黄 嗯色 操 啊| 五十路人妻熟女av一区二区| 天天射夜夜操狠狠干| 2021天天色天天干| 成人av电影免费版| 亚洲综合色在线免费观看| 2012中文字幕在线高清| 黄色资源视频网站日韩| 五十路息与子猛烈交尾视频 | 18禁美女黄网站色大片下载| 免费在线播放a级片| 天天操天天干天天艹| 国产精品久久久久国产三级试频| 不卡日韩av在线观看| 亚洲国产免费av一区二区三区| 亚洲欧美人精品高清| 国产极品精品免费视频| 亚洲福利午夜久久久精品电影网| 国产日韩av一区二区在线| 91av中文视频在线| 黑人性生活视频免费看| 国产麻豆国语对白露脸剧情| 亚洲一区二区久久久人妻| 中文字幕日韩无敌亚洲精品| 中国黄色av一级片| 天天射,天天操,天天说| 99久久99久国产黄毛片| 日韩影片一区二区三区不卡免费| 欧美日本在线视频一区| 亚洲第一黄色在线观看 | 亚洲国产中文字幕啊啊啊不行了| 偷青青国产精品青青在线观看| 五色婷婷综合狠狠爱| 亚洲自拍偷拍精品网| 偷拍自拍亚洲美腿丝袜| 久久免费看少妇高潮完整版| 人妻少妇性色欲欧美日韩| 亚洲一区二区三区av网站| 果冻传媒av一区二区三区| 成人激情文学网人妻| 黄色成人在线中文字幕| 青青青视频自偷自拍38碰| 成人激情文学网人妻| 国产一区二区欧美三区| 欧美成人综合色在线噜噜| 久久永久免费精品人妻专区| 人妻少妇性色欲欧美日韩| 大香蕉大香蕉大香蕉大香蕉大香蕉| 91亚洲手机在线视频播放| asmr福利视频在线观看| 红桃av成人在线观看| 丰满少妇人妻xxxxx| 亚洲欧美激情中文字幕| 日本成人一区二区不卡免费在线| 一个色综合男人天堂| 99热色原网这里只有精品| 538精品在线观看视频| 亚洲一区久久免费视频| 青青尤物在线观看视频网站| 久草视频福利在线首页| 97人妻总资源视频| 少妇人妻久久久久视频黄片| 夜鲁夜鲁狠鲁天天在线| 国产黄网站在线观看播放| 久久尻中国美女视频| 成人av天堂丝袜在线观看| 亚洲区欧美区另类最新章节| 人妻av无码专区久久绿巨人| 成人影片高清在线观看| 黄工厂精品视频在线观看 | 91九色国产熟女一区二区| 18禁网站一区二区三区四区| 国产精品久久久久久美女校花| 大屁股熟女一区二区三区| 天堂v男人视频在线观看| 一级黄片久久久久久久久| 2017亚洲男人天堂| 五月天久久激情视频| 欧美视频不卡一区四区| 亚洲午夜福利中文乱码字幕| 粗大的内捧猛烈进出爽大牛汉子| 偷拍自拍国产在线视频| 自拍偷拍,中文字幕| 中文字幕日韩无敌亚洲精品| 成人乱码一区二区三区av| 成人av在线资源网站| 一级黄色av在线观看| 任我爽精品视频在线播放| 又色又爽又黄的美女裸体| 国产一区二区火爆视频| 国产精品视频一区在线播放| 国产视频网站一区二区三区 | 又黄又刺激的午夜小视频| 顶级尤物粉嫩小尤物网站| 国产性生活中老年人视频网站| 国产三级影院在线观看| 超黄超污网站在线观看| 天天日天天添天天爽| 91九色porny蝌蚪国产成人| 97人人妻人人澡人人爽人人精品 | 国产va精品免费观看| 91亚洲手机在线视频播放| 91久久国产成人免费网站| 欧美视频一区免费在线| 91‖亚洲‖国产熟女| 一区二区三区视频,福利一区二区| 国产高清精品一区二区三区| 欧美色呦呦最新网址| 国产亚州色婷婷久久99精品| 免费在线看的黄网站| 视频啪啪啪免费观看| 日本午夜久久女同精女女| 成人av天堂丝袜在线观看| 最近的中文字幕在线mv视频| 日韩特级黄片高清在线看| 日本熟妇一区二区x x| 日韩a级黄色小视频| 中文字日产幕乱六区蜜桃 | 精品91高清在线观看| 福利视频网久久91| 99热99re在线播放| 国产高清在线观看1区2区| 青青草在观免费国产精品| 岛国毛片视频免费在线观看| 国产午夜福利av导航| 边摸边做超爽毛片18禁色戒| 热思思国产99re| 国产污污污污网站在线| 久草电影免费在线观看| 国产一区二区视频观看| 亚洲人妻国产精品综合| 成人高潮aa毛片免费| 97色视频在线观看| 啪啪啪啪啪啪啪免费视频| 人妻少妇亚洲精品中文字幕| 91免费福利网91麻豆国产精品| 国产亚洲四十路五十路| www日韩毛片av| 中文字幕在线第一页成人| 欧美少妇性一区二区三区| 日本女大学生的黄色小视频| 老司机99精品视频在线观看 | 三级等保密码要求条款| 日本少妇在线视频大香蕉在线观看| 天天操天天干天天插| 国产精品自拍偷拍a| 国产女人露脸高潮对白视频| 国产三级影院在线观看| 99热99这里精品6国产| 亚洲成人三级在线播放| 美女骚逼日出水来了| 国产精品自拍视频大全| 蜜桃专区一区二区在线观看| 动漫av网站18禁| 欧美精品中文字幕久久二区| 天天日天天干天天插舔舔| 亚洲欧美一区二区三区爱爱动图 | 欧美日韩v中文在线| 国产一区二区在线欧美| 中文字幕免费福利视频6| 午夜美女福利小视频| av一本二本在线观看| 欧美亚洲偷拍自拍色图| 3344免费偷拍视频| av破解版在线观看| 97精品视频在线观看| 97年大学生大白天操逼| 日韩精品中文字幕在线| 男人和女人激情视频| 看一级特黄a大片日本片黑人| 日本熟妇丰满厨房55| 亚洲一区制服丝袜美腿| 北条麻妃高跟丝袜啪啪| 国产性色生活片毛片春晓精品| weyvv5国产成人精品的视频| 青青青青青手机视频| 亚洲天堂成人在线观看视频网站| 人人爱人人妻人人澡39| 成人资源在线观看免费官网| 一区二区三区四区中文| 成人30分钟免费视频| 岛国av高清在线成人在线| 日本黄色特一级视频| 国产高清97在线观看视频| 国产精品亚洲在线观看| 亚洲高清一区二区三区视频在线| 大香蕉大香蕉大香蕉大香蕉大香蕉| 丝袜肉丝一区二区三区四区在线看| 在线免费观看黄页视频| 大香蕉福利在线观看| 午夜精品福利一区二区三区p| gav成人免费播放| 91色秘乱一区二区三区| 天天射夜夜操狠狠干| 宅男噜噜噜666国产| 国产又粗又黄又硬又爽| 中文字幕在线乱码一区二区| 欧美日韩中文字幕欧美| 青青草国内在线视频精选| 免费av岛国天堂网站| 另类av十亚洲av| 精品一区二区三区午夜| 亚洲成人av在线一区二区| 欧美一区二区三区啪啪同性| 欧美专区日韩专区国产专区| 午夜福利资源综合激情午夜福利资 | 国产 在线 免费 精品| 中国熟女一区二区性xx| av乱码一区二区三区| 日韩三级电影华丽的外出| 亚洲日产av一区二区在线| 国产亚洲国产av网站在线| 国产亚洲视频在线二区| 香蕉av影视在线观看| 五十路息与子猛烈交尾视频 | 免费观看丰满少妇做受| av在线观看网址av| 大鸡吧插逼逼视频免费看| 偷拍自拍亚洲美腿丝袜| 老司机欧美视频在线看| 亚洲欧美激情人妻偷拍| 嫩草aⅴ一区二区三区| 福利午夜视频在线观看| 爱有来生高清在线中文字幕| 国产精品成人xxxx| 成人亚洲精品国产精品| 日韩亚洲高清在线观看| 欧美精产国品一二三产品区别大吗| 加勒比视频在线免费观看| 欧美偷拍亚洲一区二区| 北条麻妃av在线免费观看| 国产视频网站一区二区三区| 精品高潮呻吟久久av| eeuss鲁片一区二区三区| 在线观看视频一区麻豆| 中文字幕在线永久免费播放| 国产精品污污污久久| 女警官打开双腿沦为性奴| 美日韩在线视频免费看| 春色激情网欧美成人| 色在线观看视频免费的| 国产chinesehd精品麻豆| 亚洲午夜电影之麻豆| 91久久精品色伊人6882| 成人av天堂丝袜在线观看| 视频 国产 精品 熟女 | 91人妻人人做人人爽在线| 亚洲 色图 偷拍 欧美| 在线免费91激情四射| 日本午夜福利免费视频| 亚洲国产精品中文字幕网站| 日本一道二三区视频久久| 一区国内二区日韩三区欧美| 揄拍成人国产精品免费看视频 | 人妻凌辱欧美丰满熟妇| 香蕉av影视在线观看| 亚洲国产最大av综合| 91色网站免费在线观看| 天天操天天污天天射| 任你操任你干精品在线视频| 久草视频福利在线首页| 亚洲精品一线二线在线观看| 欧美老鸡巴日小嫩逼| 女警官打开双腿沦为性奴| 亚洲欧美一卡二卡三卡| 99精品久久久久久久91蜜桃| 亚洲国产第一页在线观看| 日本高清成人一区二区三区| 亚洲精品亚洲人成在线导航| 久草极品美女视频在线观看| 久久久精品精品视频视频| 青青在线视频性感少妇和隔壁黑丝 | 亚洲人妻国产精品综合| av欧美网站在线观看| 亚洲中文字幕综合小综合| 熟女国产一区亚洲中文字幕| 国产精品欧美日韩区二区| 2022天天干天天操| 一区二区三区四区五区性感视频 | 香蕉91一区二区三区| 色吉吉影音天天干天天操 | 精品人妻一二三区久久| av天堂加勒比在线| 中字幕人妻熟女人妻a62v网| 自拍偷拍亚洲精品第2页| 中文字幕一区二区三区蜜月| 久久精品美女免费视频| 午夜免费观看精品视频| 99精品视频在线观看婷婷| 亚洲高清一区二区三区视频在线| 硬鸡巴动态操女人逼视频| 97国产在线av精品| 国产一区二区视频观看| 青青草在观免费国产精品| 五十路老熟女码av| 在线免费观看视频一二区| 亚洲精品无码久久久久不卡| 天天日天天做天天日天天做| 亚洲av色图18p| 四川乱子伦视频国产vip| 久久这里只有精彩视频免费| sspd152中文字幕在线| 欧美日韩激情啪啪啪| 日本少妇高清视频xxxxx | 国产大鸡巴大鸡巴操小骚逼小骚逼 | 日本www中文字幕| 999热精品视频在线| 在线免费观看亚洲精品电影| 人妻最新视频在线免费观看| 亚洲av天堂在线播放| 亚洲区欧美区另类最新章节| 国产欧美精品不卡在线| 98视频精品在线观看| 国产性生活中老年人视频网站| 欧美偷拍亚洲一区二区| 色婷婷综合激情五月免费观看| 99热碰碰热精品a中文| 中文字幕亚洲久久久| 好了av中文字幕在线| 亚洲嫩模一区二区三区| 不卡精品视频在线观看| 日本男女操逼视频免费看| 日本美女成人在线视频| 日韩一区二区三区三州| 欧美成一区二区三区四区| 亚洲精品乱码久久久本| 黄色黄色黄片78在线| 亚洲欧洲av天堂综合| 日韩写真福利视频在线观看| 色天天天天射天天舔| 国产欧美日韩在线观看不卡| heyzo蜜桃熟女人妻| 国产密臀av一区二区三| av在线观看网址av| 午夜激情久久不卡一区二区| 经典亚洲伊人第一页| 孕妇奶水仑乱A级毛片免费看| 视频久久久久久久人妻| 久久综合老鸭窝色综合久久| 日韩亚洲高清在线观看| 国产成人自拍视频播放| 免费十精品十国产网站| 亚洲女人的天堂av| 被大鸡吧操的好舒服视频免费| 小穴多水久久精品免费看| 天天射夜夜操综合网| 97小视频人妻一区二区| 日韩不卡中文在线视频网站| 无码日韩人妻精品久久| 人人在线视频一区二区| 欧美一区二区三区在线资源| 男人和女人激情视频| 婷婷六月天中文字幕| 啪啪啪啪啪啪啪免费视频| 成人H精品动漫在线无码播放| 都市激情校园春色狠狠| 中国熟女一区二区性xx| 日韩欧美国产一区不卡| 国产使劲操在线播放| www久久久久久久久久久| 午夜国产福利在线观看| 韩国黄色一级二级三级| 在线免费观看日本伦理| 好吊操视频这里只有精品| 亚洲av色香蕉一区二区三区| 国产性色生活片毛片春晓精品 | 天天日天天爽天天爽| 男人插女人视频网站| 亚洲午夜电影在线观看| 亚洲欧美日韩视频免费观看| 老司机你懂得福利视频| 91小伙伴中女熟女高潮| 不卡一不卡二不卡三| 欧美精品免费aaaaaa| 天天日天天干天天搡| 操的小逼流水的文章| 一区二区三区日韩久久| 人人妻人人爽人人澡人人精品| 黑人借宿ntr人妻的沦陷2| 中国无遮挡白丝袜二区精品| 丝袜亚洲另类欧美变态| 午夜场射精嗯嗯啊啊视频| 91p0rny九色露脸熟女| 成人免费毛片aaaa| 久久免费看少妇高潮完整版| 午夜精品一区二区三区更新| 啪啪啪啪啪啪啪啪啪啪黄色| 日韩精品激情在线观看| av天堂中文免费在线| 日韩在线中文字幕色| 精品成人啪啪18免费蜜臀| 一区二区三区在线视频福利| 国产高清在线观看1区2区| 日韩精品一区二区三区在线播放 | 在线观看国产网站资源| 后入美女人妻高清在线| 国产精品成人xxxx| 欧美偷拍自拍色图片| 天天日天天操天天摸天天舔| 成人亚洲国产综合精品| 色综合天天综合网国产成人| 久青青草视频手机在线免费观看 | 亚洲成人精品女人久久久| 青青青视频手机在线观看| 午夜精品福利一区二区三区p | 国产三级影院在线观看| 男大肉棒猛烈插女免费视频 | 天天日天天做天天日天天做| 亚洲成人熟妇一区二区三区 | 早川濑里奈av黑人番号| 91中文字幕免费在线观看| 亚洲av人人澡人人爽人人爱| 国产亚洲四十路五十路| 国产在线免费观看成人| 99久久99一区二区三区| 又粗又长 明星操逼小视频| 国产97在线视频观看| 97人人模人人爽人人喊| 91超碰青青中文字幕| 偷拍自拍福利视频在线观看| 国产大鸡巴大鸡巴操小骚逼小骚逼| 2021天天色天天干| 久久久极品久久蜜桃| 亚洲av日韩高清hd| 亚洲一区二区三区av网站| 在线免费观看日本片| 国产黄色高清资源在线免费观看| 亚洲精品午夜久久久久| 国产精品免费不卡av| 亚洲男人在线天堂网| 日本一道二三区视频久久| 亚洲国产精品免费在线观看| 日本熟女精品一区二区三区| 激情五月婷婷免费视频| 在线视频自拍第三页| 国产成人精品av网站| 中文字幕av第1页中文字幕| 亚洲综合在线观看免费| 女蜜桃臀紧身瑜伽裤| 日韩精品中文字幕在线| 亚洲人妻av毛片在线| 边摸边做超爽毛片18禁色戒| 午夜毛片不卡免费观看视频 | 久久www免费人成一看片| 久久久久久久精品成人热| 国产日本欧美亚洲精品视| 91人妻人人做人人爽在线| 欧美久久久久久三级网| 亚洲 清纯 国产com| 欧美精品欧美极品欧美视频 | av中文字幕在线导航| 日本少妇高清视频xxxxx| 中文字幕一区的人妻欧美日韩| 亚洲午夜在线视频福利| 日本性感美女三级视频| 少妇人妻二三区视频| 午夜91一区二区三区| av老司机亚洲一区二区| 亚洲中文字幕人妻一区| 精品久久久久久久久久久a√国产| 欧美成人一二三在线网| 亚洲少妇高潮免费观看| www日韩毛片av| 亚洲国产欧美一区二区三区…| 97人人妻人人澡人人爽人人精品| 夏目彩春在线中文字幕| 国产一线二线三线的区别在哪 | 亚洲人人妻一区二区三区| 免费在线观看视频啪啪| 久久精品国产23696| 国产精品视频男人的天堂| 巨乳人妻日下部加奈被邻居中出| 久草视频中文字幕在线观看| 人妻在线精品录音叫床| 精品首页在线观看视频| 97人妻无码AV碰碰视频| 青青社区2国产视频| 插小穴高清无码中文字幕| 亚洲卡1卡2卡三卡四老狼| 97超碰最新免费在线观看| 亚洲成人av一区在线| 日日夜夜精品一二三| 91高清成人在线视频| 久久精品在线观看一区二区| 蜜桃视频在线欧美一区| 少妇一区二区三区久久久| 99热久久这里只有精品8| 播放日本一区二区三区电影| 日本熟女50视频免费| aaa久久久久久久久| 中文字幕AV在线免费看 | 久久久噜噜噜久久熟女av| 3337p日本欧洲大胆色噜噜| 最新中文字幕乱码在线| 在线免费观看欧美小视频| 精品乱子伦一区二区三区免费播| 成人性黑人一级av| 中文字幕日韩人妻在线三区| 亚洲免费国产在线日韩| 99精品视频之69精品视频| 亚洲午夜高清在线观看| 99热久久这里只有精品| 欧美精品欧美极品欧美视频| 美女av色播在线播放| 天天躁日日躁狠狠躁躁欧美av| 青青青青青免费视频| 国产黄网站在线观看播放| 成人性黑人一级av| 国产污污污污网站在线| 美女操逼免费短视频下载链接| 97精品综合久久在线| 国产高清精品极品美女| 春色激情网欧美成人| 国产密臀av一区二区三| 快插进小逼里大鸡吧视频| 操日韩美女视频在线免费看| 888亚洲欧美国产va在线播放| 天天插天天狠天天操| 97国产福利小视频合集| 美女张开腿让男生操在线看| 久精品人妻一区二区三区| 国产在线自在拍91国语自产精品| 男人的天堂在线黄色| 中文字幕日韩91人妻在线| 极品丝袜一区二区三区| 亚洲一级特黄特黄黄色录像片| 涩涩的视频在线观看视频| 五月婷婷在线观看视频免费 | 三级黄色亚洲成人av| 一区二区视频在线观看免费观看| 日辽宁老肥女在线观看视频| 99热碰碰热精品a中文| a v欧美一区=区三区| 在线不卡日韩视频播放| 日日操夜夜撸天天干| 中文字幕在线第一页成人| 巨乳人妻日下部加奈被邻居中出| 一区二区久久成人网| 成年美女黄网站18禁久久| 大鸡巴后入爆操大屁股美女| 99热这里只有国产精品6| 黄页网视频在线免费观看| 成人高清在线观看视频| 欧美一区二区三区激情啪啪啪| 老熟妇凹凸淫老妇女av在线观看| 欧美一级色视频美日韩| 国产麻豆剧果冻传媒app| 亚洲一区二区久久久人妻| 久久艹在线观看视频| 久精品人妻一区二区三区| 青青青国产免费视频| 日韩剧情片电影在线收看| 国产一区av澳门在线观看| 国产精品中文av在线播放| 国产精品视频资源在线播放| 国产欧美日韩第三页| 亚洲1069综合男同| 国产精品探花熟女在线观看| 综合精品久久久久97| 亚洲视频在线视频看视频在线| 激情啪啪啪啪一区二区三区| 五十路在线观看完整版| 久久久精品欧洲亚洲av| 久草极品美女视频在线观看| 免费观看污视频网站| 日韩一个色综合导航| 久草极品美女视频在线观看| 国产精品自拍偷拍a| nagger可以指黑人吗| 久久美欧人妻少妇一区二区三区| 一区二区三区国产精选在线播放| 日本中文字幕一二区视频| 欧美天堂av无线av欧美| 日本少妇高清视频xxxxx| 国产美女午夜福利久久| 午夜毛片不卡免费观看视频 | 午夜激情高清在线观看| 少妇与子乱在线观看| 国产精品黄页网站视频| 都市激情校园春色狠狠| 韩国爱爱视频中文字幕| 国产免费高清视频视频| 中国把吊插入阴蒂的视频| 欧美精品黑人性xxxx| 免费费一级特黄真人片| 欧美色婷婷综合在线| 视频 国产 精品 熟女 | 亚洲va国产va欧美精品88| 亚洲粉嫩av一区二区三区| 青青青青青手机视频| sejizz在线视频| 性感美女诱惑福利视频| 97人妻色免费视频| 男女之间激情网午夜在线| 午夜成午夜成年片在线观看| 欧美一区二区三区高清不卡tv| 中国产一级黄片免费视频播放| 亚洲精品精品国产综合| 91欧美在线免费观看| 久草视频在线看免费| rct470中文字幕在线| 欧亚日韩一区二区三区观看视频| 人妻少妇性色欲欧美日韩| 日本五十路熟新垣里子| 欧美地区一二三专区| 日本精品一区二区三区在线视频。| 精品欧美一区二区vr在线观看| 久久丁香花五月天色婷婷| 特黄老太婆aa毛毛片| 亚洲精品无码色午夜福利理论片| 日韩一个色综合导航| 天天操天天干天天艹| 午夜精彩视频免费一区| 桃色视频在线观看一区二区 | 免费黄页网站4188| 丝袜国产专区在线观看| 啪啪啪18禁一区二区三区| 狠狠操操操操操操操操操| 亚洲熟女久久久36d| 亚洲一级av无码一级久久精品| 日本黄色特一级视频| 日韩不卡中文在线视频网站 | 精品91自产拍在线观看一区| 2021年国产精品自拍| 国产乱子伦一二三区| 国产在线观看黄色视频| 天天插天天色天天日| 亚洲av无乱一区二区三区性色| 999久久久久999| 成年人午夜黄片视频资源| 久草视频首页在线观看| 日本在线一区二区不卡视频| av手机在线免费观看日韩av| 亚洲av一妻不如妾| 成人午夜电影在线观看 久久| 亚洲另类图片蜜臀av| 成人免费做爰高潮视频| av网站色偷偷婷婷网男人的天堂| 欧美综合婷婷欧美综合| 亚洲综合自拍视频一区| 国产精彩福利精品视频| 小泽玛利亚视频在线观看| 欧美麻豆av在线播放| 视频 国产 精品 熟女 | 日本一二三区不卡无| 精品国产午夜视频一区二区| 亚洲午夜精品小视频| 日本av高清免费网站| 国产三级精品三级在线不卡| 韩国一级特黄大片做受| 日韩精品中文字幕播放| 成人色综合中文字幕| 91精品高清一区二区三区| 亚洲精品色在线观看视频| 欧美精品免费aaaaaa| 毛茸茸的大外阴中国视频| 大香蕉大香蕉大香蕉大香蕉大香蕉 | 91极品大一女神正在播放| 爆乳骚货内射骚货内射在线| 自拍 日韩 欧美激情| 五十路丰满人妻熟妇| 久久一区二区三区人妻欧美| 久久久超爽一二三av| 蜜桃久久久久久久人妻| 日本熟女50视频免费| 大香蕉福利在线观看| 国产极品精品免费视频| 操人妻嗷嗷叫视频一区二区 | 国产av一区2区3区| 风流唐伯虎电视剧在线观看| 在线观看免费av网址大全| 春色激情网欧美成人| 国产精品sm调教视频| 中文字幕 人妻精品| 日韩美女精品视频在线观看网站| 99久久激情婷婷综合五月天| 年轻的人妻被夫上司侵犯| 大胆亚洲av日韩av| 2019av在线视频| 亚洲第一伊人天堂网| 精品少妇一二三视频在线| 五十路老熟女码av| 欧美一区二区三区激情啪啪啪| 40道精品招牌菜特色| aⅴ精产国品一二三产品| 午夜av一区二区三区| 91欧美在线免费观看| 国产一线二线三线的区别在哪| aⅴ精产国品一二三产品| 亚洲精品无码久久久久不卡| 视频啪啪啪免费观看| 亚洲免费va在线播放| 99热99re在线播放| 国产亚洲欧美另类在线观看| 久久久久久国产精品| 天天射,天天操,天天说| 欧洲欧美日韩国产在线| 精品一区二区三区在线观看| 日韩熟女系列一区二区三区| 免费看高清av的网站| 黄色无码鸡吧操逼视频| 婷婷六月天中文字幕| 黑人借宿ntr人妻的沦陷2| 2021最新热播中文字幕| 岛国免费大片在线观看| 东游记中文字幕版哪里可以看到| 在线视频精品你懂的| 亚洲欧美色一区二区| 免费69视频在线看| 最新97国产在线视频| 亚洲老熟妇日本老妇| 青草亚洲视频在线观看| 欧美精品黑人性xxxx| 日本少妇的秘密免费视频| 欧美黑人性猛交xxxxⅹooo| 99精品久久久久久久91蜜桃| 天天干天天操天天摸天天射| 福利视频一区二区三区筱慧 | 男人的天堂一区二区在线观看| 亚洲熟女女同志女同| 欧美一区二区三区啪啪同性| 欧美日韩激情啪啪啪| 精彩视频99免费在线| 男人靠女人的逼视频| 午夜激情久久不卡一区二区| 91啪国自产中文字幕在线| 一区二区三区四区中文| 天天日天天玩天天摸| 亚洲变态另类色图天堂网| 嫩草aⅴ一区二区三区| 亚洲av香蕉一区区二区三区犇| 亚洲人成精品久久久久久久| 午夜免费观看精品视频| 中文字幕午夜免费福利视频| 99精品亚洲av无码国产另类| 精彩视频99免费在线| 亚洲欧美另类自拍偷拍色图| 亚洲人妻视频在线网| 五月色婷婷综合开心网4438| 91‖亚洲‖国产熟女| 成年人中文字幕在线观看| 中文字幕第三十八页久久| 熟女妇女老妇一二三区| 中文字幕在线一区精品| 日视频免费在线观看| 中文字幕一区二区人妻电影冢本| 四虎永久在线精品免费区二区| 欧美成人综合视频一区二区| 天天操夜夜骑日日摸| 97人人模人人爽人人喊 | 国产高潮无码喷水AV片在线观看| 2020中文字幕在线播放| 欧美精品 日韩国产| 女同久久精品秋霞网| 亚洲av无码成人精品区辽| 哥哥姐姐综合激情小说| 亚洲一区二区三区av网站| 少妇露脸深喉口爆吞精| 加勒比视频在线免费观看| 2019av在线视频| 国产精品伦理片一区二区| 91色秘乱一区二区三区| aⅴ五十路av熟女中出| 大鸡巴操b视频在线| 青娱乐极品视频青青草| 99热久久极品热亚洲| 国产va精品免费观看| 18禁精品网站久久| 午夜精品一区二区三区福利视频| 骚逼被大屌狂草视频免费看| 欧美香蕉人妻精品一区二区| 人妻凌辱欧美丰满熟妇| 亚洲区美熟妇久久久久| 中文字幕av熟女人妻| 亚洲精品亚洲人成在线导航| 国际av大片在线免费观看| 99热这里只有国产精品6| 午夜在线一区二区免费| 亚洲精品福利网站图片| 亚洲伊人色一综合网| 成人综合亚洲欧美一区| 91精品国产91久久自产久强| 亚洲女人的天堂av| 日本一区美女福利视频| 在线 中文字幕 一区| 亚洲福利精品视频在线免费观看| xxx日本hd高清| 亚洲av人人澡人人爽人人爱| 香港一级特黄大片在线播放| 黑人巨大的吊bdsm| 午夜精品久久久久久99热| 日本在线不卡免费视频| 亚洲区欧美区另类最新章节| 老鸭窝在线观看一区| 天天夜天天日天天日| 欧美乱妇无乱码一区二区| 又粗又长 明星操逼小视频| 精品美女久久久久久| 女生被男生插的视频网站| 色爱av一区二区三区| 亚洲粉嫩av一区二区三区| 97年大学生大白天操逼| 97青青青手机在线视频 | 色综合天天综合网国产成人| 专门看国产熟妇的网站| 沈阳熟妇28厘米大战黑人| 亚洲人人妻一区二区三区| 青青草人人妻人人妻| 91传媒一区二区三区| 亚洲公开视频在线观看| 熟女人妻在线中出观看完整版| 精品国产午夜视频一区二区| avjpm亚洲伊人久久| 亚洲无码一区在线影院| 日韩人妻丝袜中文字幕| 888亚洲欧美国产va在线播放| 国产女孩喷水在线观看| av中文字幕福利网| 国产不卡av在线免费| wwwxxx一级黄色片| japanese日本熟妇另类| 99精品国产自在现线观看| 家庭女教师中文字幕在线播放| 91人妻精品久久久久久久网站| 91精品国产综合久久久蜜| 国产久久久精品毛片| 中文字幕日韩精品就在这里| 一区二区视频视频视频| 午夜美女福利小视频| 午夜激情久久不卡一区二区| 天堂av在线播放免费| 午夜精品在线视频一区| 999久久久久999| 亚洲av无乱一区二区三区性色| 熟女91pooyn熟女| 日本人妻精品久久久久久| 无码中文字幕波多野不卡| 亚洲激情唯美亚洲激情图片| 欧美黑人巨大性xxxxx猛交| 日韩美女综合中文字幕pp| 最新91九色国产在线观看| 国产亚洲视频在线二区| 国产福利小视频二区| 91啪国自产中文字幕在线| 精品亚洲国产中文自在线| 亚洲国产欧美一区二区三区久久| asmr福利视频在线观看| 天天摸天天亲天天舔天天操天天爽| 人妻激情图片视频小说| 国产女人叫床高潮大片视频| 大鸡吧插入女阴道黄色片| 中文字幕在线视频一区二区三区| 男人天堂av天天操| 亚洲 中文 自拍 另类 欧美| 欧美女同性恋免费a| 欧美一区二区中文字幕电影| 社区自拍揄拍尻屁你懂的| 极品丝袜一区二区三区| 精品久久久久久久久久久a√国产| 夜色撩人久久7777| 中文字幕—97超碰网| 98精产国品一二三产区区别| 久久艹在线观看视频| 黄工厂精品视频在线观看 | 欧美精品久久久久久影院| 国产又粗又硬又大视频| 国产视频在线视频播放| 亚洲中文字幕乱码区| 欧美亚洲牲夜夜综合久久| av老司机精品在线观看| 国产在线一区二区三区麻酥酥| 丝袜美腿视频诱惑亚洲无| 亚洲一区久久免费视频| 久久久久久久精品成人热| 国产一区二区在线欧美| 精品人人人妻人人玩日产欧| 青青青青青操视频在线观看| 亚洲va天堂va国产va久| 一区二区视频在线观看免费观看 | 人妻素人精油按摩中出| 97青青青手机在线视频| 黑人解禁人妻叶爱071| 一区二区三区在线视频福利| 啊啊啊想要被插进去视频| 一本久久精品一区二区| 日韩人妻在线视频免费| 青青青青青免费视频| 蜜桃臀av蜜桃臀av| 91老师蜜桃臀大屁股| 日本一二三中文字幕| 社区自拍揄拍尻屁你懂的| 香蕉片在线观看av| 男大肉棒猛烈插女免费视频| 国产精品三级三级三级| 黄色av网站免费在线| 久久久久久久一区二区三| 日韩不卡中文在线视频网站| 国产亚洲欧美45p| 亚洲欧美另类自拍偷拍色图| 青青操免费日综合视频观看| 日韩不卡中文在线视频网站| 精品久久久久久高潮| 天天日天天做天天日天天做| 99av国产精品欲麻豆| 在线制服丝袜中文字幕| 在线免费观看黄页视频| 人妻丰满熟妇综合网| 亚洲精品国产综合久久久久久久久| 动漫av网站18禁| 亚洲天堂精品久久久| 亚洲高清自偷揄拍自拍| 青青青青青手机视频| 国产精品入口麻豆啊啊啊| 在线观看黄色成年人网站| 夜色撩人久久7777| 99热久久极品热亚洲| 欧美亚洲偷拍自拍色图| 97成人免费在线观看网站| 午夜美女少妇福利视频| 97人妻色免费视频| 四虎永久在线精品免费区二区| 亚洲一区二区三区精品视频在线| 一区二区在线视频中文字幕| 97年大学生大白天操逼| 搡老熟女一区二区在线观看| 100%美女蜜桃视频| 亚洲美女美妇久久字幕组| 亚洲av无乱一区二区三区性色| 国产在线观看免费人成短视频| av一区二区三区人妻| 88成人免费av网站| 亚洲av无女神免非久久| av无限看熟女人妻另类av| 天天操天天操天天碰| 精品一区二区三区三区88| 国产第一美女一区二区三区四区 | 肏插流水妹子在线乐播下载| 日本少妇高清视频xxxxx | 夜夜骑夜夜操夜夜奸| 日本一区美女福利视频| 青青青国产免费视频| 国产精品久久久黄网站| 看一级特黄a大片日本片黑人| 阿v天堂2014 一区亚洲| 亚洲色偷偷综合亚洲AV伊人| 久久综合老鸭窝色综合久久| 在线观看国产网站资源| 久久久久久久久久久久久97| 丰满的继坶3中文在线观看| 人妻熟女在线一区二区 | 亚洲精品国偷自产在线观看蜜桃| 天天日天天添天天爽| 视频一区二区三区高清在线| 日韩av免费观看一区| 国产精品国产精品一区二区| 天天干天天插天天谢| 中文字幕 码 在线视频| 亚洲午夜电影之麻豆| av欧美网站在线观看| jiujiure精品视频在线| 黑人性生活视频免费看| 亚洲码av无色中文| 中文字幕国产专区欧美激情| 亚洲综合图片20p| 好了av中文字幕在线| 免费观看国产综合视频| 伊拉克及约旦宣布关闭领空| 韩国亚洲欧美超一级在线播放视频| 国产剧情演绎系列丝袜高跟| 久久精品国产23696| 91精品视频在线观看免费| 夜鲁夜鲁狠鲁天天在线| 青青草视频手机免费在线观看| 自拍 日韩 欧美激情| 亚洲卡1卡2卡三卡四老狼| 美女福利写真在线观看视频| 性欧美日本大妈母与子| 宅男噜噜噜666免费观看| 伊拉克及约旦宣布关闭领空| 中文字母永久播放1区2区3区| 在线观看911精品国产| 亚洲乱码中文字幕在线| 日韩在线视频观看有码在线| 在线播放国产黄色av| 综合国产成人在线观看| 久久久人妻一区二区| 亚洲欧美日韩视频免费观看| gay gay男男瑟瑟在线网站| 午夜精品一区二区三区4| 色av色婷婷人妻久久久精品高清| 大鸡吧插入女阴道黄色片| 91麻豆精品传媒国产黄色片| 中国无遮挡白丝袜二区精品| 91极品大一女神正在播放| 天堂av在线播放免费| 欧美精品激情在线最新观看视频| 91中文字幕最新合集| 社区自拍揄拍尻屁你懂的| 欧美偷拍亚洲一区二区| 国产女人被做到高潮免费视频 | 首之国产AV医生和护士小芳| 超碰在线中文字幕一区二区| 专门看国产熟妇的网站| 国产高潮无码喷水AV片在线观看| 55夜色66夜色国产精品站| 色爱av一区二区三区| 人妻熟女中文字幕aⅴ在线| 97青青青手机在线视频| 色婷婷六月亚洲综合香蕉| 欧美色婷婷综合在线| 青青草精品在线视频观看| 男人的网址你懂的亚洲欧洲av| 最新97国产在线视频| 亚洲精品中文字幕下载| 亚洲 中文 自拍 另类 欧美| 免费人成黄页网站在线观看国产| 亚洲少妇人妻无码精品| 99的爱精品免费视频| 日辽宁老肥女在线观看视频| 成年人的在线免费视频| 亚洲欧美一卡二卡三卡| 亚洲的电影一区二区三区| 北条麻妃肉色丝袜视频| 成熟丰满熟妇高潮xx×xx| 东京热男人的av天堂| 蜜桃臀av蜜桃臀av| 久久久超爽一二三av| 欧美偷拍亚洲一区二区| 国产黄色片蝌蚪九色91| 成人资源在线观看免费官网| 日韩中文字幕精品淫| av天堂中文字幕最新| 熟女少妇激情五十路| 欧美精品激情在线最新观看视频| 国产日韩av一区二区在线| 日韩av有码中文字幕| 99热国产精品666| 亚洲天天干 夜夜操| 99热碰碰热精品a中文| 青青社区2国产视频| 午夜dv内射一区区| 国产精品午夜国产小视频| 2022精品久久久久久中文字幕| 三上悠亚和黑人665番号| 国产视频一区在线观看| 亚洲国产在线精品国偷产拍| 51国产偷自视频在线播放| 亚洲成人国产综合一区| 中文字幕 人妻精品| 午夜av一区二区三区| 青青草亚洲国产精品视频| 亚洲天天干 夜夜操| 中文字幕av熟女人妻| 亚洲自拍偷拍精品网| 大鸡八强奸视频在线观看| 中文人妻AV久久人妻水| 国产欧美精品不卡在线| 免费无毒热热热热热热久| 一区二区三区四区中文| 不戴胸罩引我诱的隔壁的人妻| 日韩中文字幕精品淫| 欧美日本aⅴ免费视频| 在线观看免费岛国av| 男女啪啪啪啪啪的网站| 美女福利写真在线观看视频| 亚洲精品久久综合久| 国产精品视频男人的天堂| 三级等保密码要求条款| 午夜精品久久久久麻豆影视| 农村胖女人操逼视频| 中国熟女@视频91| 国产揄拍高清国内精品对白| 久久丁香花五月天色婷婷| 天堂v男人视频在线观看| huangse网站在线观看| 91自产国产精品视频| 好吊视频—区二区三区| 一区二区三区四区视频| 大学生A级毛片免费视频| 人妻丝袜精品中文字幕| 亚洲人妻视频在线网| 成年人免费看在线视频| 黄色视频在线观看高清无码| 在线观看视频污一区| 国产一区二区三免费视频 | 亚洲综合色在线免费观看| 国产欧美日韩在线观看不卡| 青青青青青青草国产| 日韩成人综艺在线播放| 日日摸夜夜添夜夜添毛片性色av| 欧美日本aⅴ免费视频| 亚洲国际青青操综合网站| 精品一线二线三线日本| 亚洲女人的天堂av| 黄色录像鸡巴插进去| 欧美伊人久久大香线蕉综合| 日本后入视频在线观看| 欧美aa一级一区三区四区| 天天日夜夜干天天操| AV天堂一区二区免费试看| 久久久精品精品视频视频| 人人超碰国字幕观看97| 国产一区二区在线欧美| 日本人妻少妇18—xx| 91社福利《在线观看| 亚洲 图片 欧美 图片| 日本中文字幕一二区视频| 成人高清在线观看视频| 专门看国产熟妇的网站| 国产不卡av在线免费| 99精品久久久久久久91蜜桃| 午夜在线一区二区免费| 91国内精品自线在拍白富美| 亚洲综合一区二区精品久久| 久久久精品精品视频视频| 国产伊人免费在线播放| 女生被男生插的视频网站| 午夜精品亚洲精品五月色| 国产男女视频在线播放| 亚洲国产欧美一区二区三区…| 中文字幕一区二 区二三区四区 | 成人av亚洲一区二区| 日韩av有码一区二区三区4| 精品suv一区二区69| 人妻久久久精品69系列| 69精品视频一区二区在线观看| 国产亚洲成人免费在线观看| 91免费放福利在线观看| 国产亚洲国产av网站在线| 视频一区二区三区高清在线| 视频久久久久久久人妻| 日日夜夜狠狠干视频| av中文字幕网址在线| 2021最新热播中文字幕| okirakuhuhu在线观看| 亚洲一区二区三区五区| 欧美一区二区三区乱码在线播放 | 中文字幕熟女人妻久久久| 亚洲高清国产自产av| 日本性感美女视频网站| 最新欧美一二三视频| 亚洲图库另类图片区| 中文字幕—97超碰网| 欧美黑人与人妻精品| 国产成人精品一区在线观看| 狠狠地躁夜夜躁日日躁| 亚洲精品中文字幕下载| 成年美女黄网站18禁久久| 中文字幕 人妻精品| 国产乱子伦精品视频潮优女| 欧美成人综合视频一区二区| 国产福利小视频二区| 久草视频福利在线首页| 巨乳人妻日下部加奈被邻居中出 | xxx日本hd高清| 亚洲一级av大片免费观看| 88成人免费av网站| 亚洲精品高清自拍av| sspd152中文字幕在线| 自拍偷拍 国产资源| 亚洲av无硬久久精品蜜桃| 国产午夜亚洲精品麻豆| 亚洲 欧美 自拍 偷拍 在线| 亚洲精品乱码久久久本| 骚逼被大屌狂草视频免费看| 99热99re在线播放| 国产va精品免费观看| 免费福利av在线一区二区三区| 亚洲成人午夜电影在线观看| 亚洲老熟妇日本老妇| 99久久成人日韩欧美精品| 国产亚州色婷婷久久99精品| 亚洲熟女女同志女同| 亚洲最大免费在线观看| 肏插流水妹子在线乐播下载| 欧美精品一区二区三区xxxx| 老鸭窝在线观看一区| 国产男女视频在线播放| 国产视频一区在线观看| 国产精品3p和黑人大战| 日本免费视频午夜福利视频| 国产精品女邻居小骚货| 欧美日韩在线精品一区二区三| 100%美女蜜桃视频| 极品性荡少妇一区二区色欲| 午夜在线观看一区视频| 人妻无码中文字幕专区| 精品人妻伦一二三区久| 人人超碰国字幕观看97| 伊人开心婷婷国产av| 污污小视频91在线观看| 美女少妇亚洲精选av| 欧美视频不卡一区四区| 极品性荡少妇一区二区色欲| 黄页网视频在线免费观看| 精品人妻一二三区久久| 男女啪啪视频免费在线观看 | 免费观看丰满少妇做受| 韩国一级特黄大片做受| 黑人巨大精品欧美视频| 最新中文字幕乱码在线| 亚洲综合另类精品小说| 青青草亚洲国产精品视频| 97色视频在线观看| 2021久久免费视频| 亚洲男人在线天堂网| 1000部国产精品成人观看视频| 亚洲免费av在线视频| 国产亚洲成人免费在线观看| 国产精品久久久久久久女人18| 精品黑人巨大在线一区| 精品国产污污免费网站入口自 | av在线免费观看亚洲天堂| caoporm超碰国产| 免费在线播放a级片| 日本少妇高清视频xxxxx| 成人激情文学网人妻| 亚洲福利精品福利精品福利| 老鸭窝日韩精品视频观看| 中文乱理伦片在线观看| japanese日本熟妇另类| 老司机在线精品福利视频| 日本脱亚入欧是指什么| 美女骚逼日出水来了| rct470中文字幕在线| 久久免费看少妇高潮完整版| 日韩无码国产精品强奸乱伦| 美女av色播在线播放| 大鸡巴操b视频在线| 亚洲激情,偷拍视频| 亚洲精品午夜久久久久| 欧美日本在线视频一区| 日本人竟这样玩学生妹| 久久精品国产999| 久精品人妻一区二区三区| 欧美黑人性猛交xxxxⅹooo| 99人妻视频免费在线| 97香蕉碰碰人妻国产樱花| 亚洲色偷偷综合亚洲AV伊人| 亚洲人成精品久久久久久久| 欧美国品一二三产区区别| 在线成人日韩av电影| 久久久久只精品国产三级| 午夜精彩视频免费一区| 青青青青在线视频免费观看| 国产精品一区二区久久久av| 国产欧美精品一区二区高清| 成人sm视频在线观看| 综合色区亚洲熟妇shxstz| 蜜桃臀av蜜桃臀av| 亚洲av自拍天堂网| 日本少妇在线视频大香蕉在线观看| 成人伊人精品色xxxx视频| jiujiure精品视频在线| 婷婷午夜国产精品久久久| 国产亚州色婷婷久久99精品| 亚洲最大黄 嗯色 操 啊| 亚洲一区二区三区久久午夜| 18禁污污污app下载| 9色在线视频免费观看| 激情色图一区二区三区| 中文字幕高清资源站| 天天综合天天综合天天网| 日本性感美女三级视频| 一二三区在线观看视频| 青青尤物在线观看视频网站| 天天干天天操天天摸天天射| 亚洲av色图18p| 91国语爽死我了不卡| 日韩欧美国产一区不卡| 欧美一区二区三区久久久aaa| 99久久成人日韩欧美精品| 亚洲另类伦春色综合小| 99热久久这里只有精品8| 91av精品视频在线| 亚洲福利午夜久久久精品电影网 | 青青草在观免费国产精品| 一区二区麻豆传媒黄片| 五十路息与子猛烈交尾视频| 丁香花免费在线观看中文字幕| 在线视频免费观看网| 亚洲精品中文字幕下载| 538精品在线观看视频| gay gay男男瑟瑟在线网站| 日日日日日日日日夜夜夜夜夜夜| 成人av亚洲一区二区| 国产精品久久久久久久女人18| 天天日天天干天天舔天天射| 久久久久国产成人精品亚洲午夜| 国产使劲操在线播放| 成人av电影免费版| 亚洲欧美国产综合777| 青青青青青青青青青国产精品视频| 精品一区二区三四区| 全国亚洲男人的天堂| 国产超码片内射在线| 狠狠操狠狠操免费视频| 成人免费公开视频无毒| eeuss鲁片一区二区三区| 超级福利视频在线观看| 黄色成年网站午夜在线观看 | 九九热99视频在线观看97| 热思思国产99re| 人妻少妇亚洲一区二区| 极品性荡少妇一区二区色欲| 在线播放一区二区三区Av无码| 白白操白白色在线免费视频| 日本一道二三区视频久久| 天堂av在线官网中文| 亚洲 中文 自拍 另类 欧美| 欧美成人精品在线观看| 在线免费观看av日韩| 水蜜桃一区二区三区在线观看视频| 国产乱子伦一二三区| 亚洲av日韩精品久久久久久hd| 国产精品久久9999| 熟女国产一区亚洲中文字幕| 鸡巴操逼一级黄色气| 岳太深了紧紧的中文字幕| 91色九色porny| 另类av十亚洲av| 午夜激情高清在线观看| 国内资源最丰富的网站| 姐姐的朋友2在线观看中文字幕| 亚洲国产成人av在线一区| 亚洲欧洲一区二区在线观看| 99久久激情婷婷综合五月天| mm131美女午夜爽爽爽| 日日爽天天干夜夜操| 男生舔女生逼逼的视频| 天天日天天做天天日天天做| 国产福利小视频二区| 国产欧美日韩第三页| 99久久99一区二区三区| 日韩国产乱码中文字幕| 国产日韩欧美视频在线导航| 97a片免费在线观看| 欧美香蕉人妻精品一区二区| 成年女人免费播放视频| 一区二区三区的久久的蜜桃的视频| 日本女大学生的黄色小视频| 美女骚逼日出水来了| 一区二区视频在线观看视频在线| 天天摸天天干天天操科普| 不卡一区一区三区在线| 欧美亚洲免费视频观看| 熟女少妇激情五十路| 亚洲国产成人无码麻豆艾秋| 好吊视频—区二区三区| 国产日韩精品一二三区久久久| 自拍 日韩 欧美激情| 国产精品女邻居小骚货| 国产精品黄大片在线播放| 免费黄色成人午夜在线网站| 国产V亚洲V天堂无码欠欠 | 日本人妻欲求不满中文字幕| 在线免费观看靠比视频的网站 | 青青伊人一精品视频| 亚洲精品福利网站图片| 中文字幕日韩人妻在线三区| 婷婷综合蜜桃av在线| 成人资源在线观看免费官网| 成人综合亚洲欧美一区| 男女啪啪啪啪啪的网站| 啊啊好大好爽啊啊操我啊啊视频| 日本熟女精品一区二区三区| 日本美女成人在线视频| 一级A一级a爰片免费免会员| 亚洲中文字幕校园春色| 国产大鸡巴大鸡巴操小骚逼小骚逼| 无码中文字幕波多野不卡| 老司机福利精品视频在线| 欧美黄色录像免费看的| 日韩三级黄色片网站| 亚洲在线一区二区欧美| 久草视频在线看免费| 男人天堂av天天操| 美女视频福利免费看| 天天干夜夜操啊啊啊| 天天干天天操天天插天天日| 日韩一区二区三区三州| 污污小视频91在线观看| 免费av岛国天堂网站| 最新日韩av传媒在线| 三级av中文字幕在线观看| 青青操免费日综合视频观看| 色综合久久无码中文字幕波多| 亚洲午夜电影在线观看| 日本阿v视频在线免费观看| 天天日天天添天天爽| 韩国亚洲欧美超一级在线播放视频| 福利视频广场一区二区| 在线观看av2025| 亚洲熟女综合色一区二区三区四区 | 91在线免费观看成人| 精品suv一区二区69| 亚洲中文字幕人妻一区| 欧美精品中文字幕久久二区| 欧美精产国品一二三区| 888欧美视频在线| 91色网站免费在线观看| 精品91高清在线观看| 18禁精品网站久久| 在线可以看的视频你懂的 | 高清成人av一区三区| av天堂加勒比在线| 在线不卡成人黄色精品| 亚洲一区制服丝袜美腿| 一区二区三区综合视频| 天天操天天污天天射| 欲乱人妻少妇在线视频裸| 天天日天天干天天干天天日| 日韩特级黄片高清在线看| av天堂中文免费在线| 在线免费观看靠比视频的网站| 精品亚洲国产中文自在线| 香蕉aⅴ一区二区三区| 欧美亚洲国产成人免费在线 | 黄色av网站免费在线| 大鸡巴操娇小玲珑的女孩逼| 亚洲成人激情av在线| 国产福利在线视频一区| 18禁美女黄网站色大片下载| 年轻的人妻被夫上司侵犯| 5528327男人天堂| 婷婷久久久久深爱网| 成人久久精品一区二区三区 | 国产高清97在线观看视频| 91国内视频在线观看| 91‖亚洲‖国产熟女| 91人妻精品一区二区久久| 精品乱子伦一区二区三区免费播 | 孕妇奶水仑乱A级毛片免费看 | 国产三级精品三级在线不卡| 视频啪啪啪免费观看| 日韩北条麻妃一区在线| 亚洲午夜在线视频福利| 国产精彩福利精品视频| 午夜场射精嗯嗯啊啊视频| 亚洲熟女久久久36d| 欧美黑人巨大性xxxxx猛交| 日韩三级黄色片网站| 精品少妇一二三视频在线| 东京热男人的av天堂| 中文字幕之无码色多多| 性感美女福利视频网站| av视网站在线观看| 1区2区3区不卡视频| 18禁网站一区二区三区四区| 国产精品成人xxxx| 亚洲av一妻不如妾| 久久久久久9999久久久久| 自拍 日韩 欧美激情| 亚洲一级av无码一级久久精品| 亚洲精品久久视频婷婷| 亚欧在线视频你懂的| 国产三级精品三级在线不卡| 精品视频国产在线观看| av男人天堂狠狠干| 国产伊人免费在线播放| 精品黑人一区二区三区久久国产| 亚洲专区激情在线观看视频| 丝袜美腿欧美另类 中文字幕| 丰满熟女午夜福利视频| 欧美伊人久久大香线蕉综合| 免费在线播放a级片| 免费成人av中文字幕| 免费黄页网站4188| 人妻熟女在线一区二区| 久久精品亚洲国产av香蕉| 天天想要天天操天天干| 国产欧美日韩在线观看不卡| 四虎永久在线精品免费区二区| 狠狠的往里顶撞h百合| 亚洲av极品精品在线观看| 天天日天天干天天搡| 可以免费看的www视频你懂的| 人妻少妇亚洲精品中文字幕| 嫩草aⅴ一区二区三区| 亚洲1069综合男同| 亚洲欧美激情中文字幕| jiujiure精品视频在线| 视频一区二区在线免费播放| 亚洲成a人片777777| 国产精品熟女久久久久浪潮| 夜色17s精品人妻熟女| 天天干夜夜操天天舔| 国产不卡av在线免费| 国产第一美女一区二区三区四区| 一个人免费在线观看ww视频 | 精品国产污污免费网站入口自 | 91精品激情五月婷婷在线| 嫩草aⅴ一区二区三区|