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

深入探究Node | (4)“內存控制” 有十五問

開發 前端
在V8中,所有的JavaScript對象都是通過堆來進行分配的。Node提供了V8中內存使用量的查看方式,執行下面的代碼,將得到輸出的內存信息。

本文轉載自微信公眾號「前端陽光」,作者事業有成的張啦啦 。轉載本文請聯系前端陽光公眾號。

 1. V8是用什么給對象分配內存的呢?

2. V8為何要限制堆的大小?

3. 原來如此,那你知道垃圾回收機制的策略是什么嗎?

4. 為什么要分代呢?

5. 哦,那你談談是怎么分代的?

6. 那 新生代是怎么回收的?

7. 很好奇,一個新生代它是怎么晉升成老生代的。

8. 為什么要設置25%這個這么低的值呢?

9. 新生代的對象晉升后就成老生代了,那老生代為什么不能用Scavenge回收?

10. 那老生代的對象該怎么處理?

11. 那為什么還要標記整理?

12. 咦!既然標記整理是基于標記清除上演變而來的,也就是它包括了標記清除,這么棒,那就用標記整理好了,干嘛還要說它結合標記清除使用呢?

13. 原來是這樣啊,要是垃圾回收算法時間花費很長,豈不是就要卡頓?

14. 你知道Buffer對象嗎?Buffer對象是通過V8分配內存的嗎?

15. 可以利用fs.readFile()和fs.writeFile()方法 來 讀寫大文件嗎?

1. V8是用什么給對象分配內存的呢?

在V8中,所有的JavaScript對象都是通過堆來進行分配的。Node提供了V8中內存使用量的查看方式,執行下面的代碼,將得到輸出的內存信息:

  1. $ node 
  2. > process.memoryUsage(); 
  3. { rss: 14958592, 
  4.   heapTotal: 7195904, 
  5.   heapUsed: 2821496 } 

在上述代碼中,在memoryUsage()方法返回的3個屬性中,heapTotal和heapUsed是V8的堆內存使用情況,前者是已申請到的堆內存,后者是當前使用的量。至于rss為何,我們在后續的內容中會介紹到。V8的堆示意圖:

當我們在代碼中聲明變量并賦值時,所使用對象的內存就分配在堆中。如果已申請的堆空閑內存不夠分配新的對象,將繼續申請堆內存,直到堆的大小超過V8的限制為止。

2. V8為何要限制堆的大小?

表層原因為V8最初為瀏覽器而設計,不太可能遇到用大量內存的場景。對于網頁來說,V8的限制值已經綽綽有余。

深層原因是V8的垃圾回收機制的限制。按官方的說法,以1.5 GB的垃圾回收堆內存為例,V8做一次小的垃圾回收需要50毫秒以上,做一次非增量式的垃圾回收甚至要1秒以上。這是垃圾回收中引起JavaScript線程暫停執行的時間,在這樣的時間花銷下,應用的性能和響應能力都會直線下降。這樣的情況不僅僅后端服務無法接受,前端瀏覽器也無法接受。因此,在當時的考慮下直接限制堆內存是一個好的選擇。

3. 原來如此,那你知道垃圾回收機制的策略是什么嗎?

V8的垃圾回收策略主要基于分代式垃圾回收機制。

4. 為什么要分代呢?

因為在實際的應用中,對象的生存周期長短不一,不同的算法只能針對特定情況具有最好的效果。為此,現代的垃圾回收算法中按對象的存活時間將內存的垃圾回收進行不同的分代,然后分別對不同分代的內存施以更高效的算法。

5. 哦,那你談談是怎么分代的?

在V8中,主要將內存分為新生代和老生代兩代。新生代中的對象為存活時間較短的對象,老生代中的對象為存活時間較長或常駐內存的對象。圖為V8的分代示意圖。

6. 那新生代是怎么回收的?

在分代的基礎上,新生代中的對象主要通過Scavenge算法進行垃圾回收。是一種采用復制的方式實現的垃圾回收算法。

它將堆內存一分為二,每一部分空間稱為semispace。在這兩個semispace空間中,只有一個處于使用中,另一個處于閑置狀態。處于使用狀態的semispace空間稱為From空間,處于閑置狀態的空間稱為To空間。當我們分配對象時,先是在From空間中進行分配。當開始進行垃圾回收時,會檢查From空間中的存活對象,這些存活對象將被復制到To空間中,而非存活對象占用的空間將會被釋放。完成復制后,From空間和To空間的角色發生對換。

簡而言之,在垃圾回收的過程中,就是通過將存活對象在兩個semispace空間之間進行復制。

Scavenge的缺點是只能使用堆內存中的一半,這是由劃分空間和復制機制所決定的。但Scavenge由于只復制存活的對象,并且對于生命周期短的場景存活對象只占少部分,所以它在時間效率上有優異的表現。

由于Scavenge是典型的犧牲空間換取時間的算法,所以無法大規模地應用到所有的垃圾回收中。但可以發現,Scavenge非常適合應用在新生代中,因為新生代中對象的生命周期較短,恰恰適合這個算法。

是故,V8的堆內存示意圖應當如圖所示。

當一個對象經過多次復制依然存活時,它將會被認為是生命周期較長的對象。這種較長生命周期的對象隨后會被移動到老生代中,采用新的算法進行管理。對象從新生代中移動到老生代中的過程稱為晉升。

7. 很好奇,一個新生代它是怎么晉升成老生代的。

對象晉升的條件主要有兩個,一個是對象是否經歷過Scavenge回收,一個是To空間的內存占用比超過限制。

在默認情況下,V8的對象分配主要集中在From空間中。對象從From空間中復制到To空間時,會檢查它的內存地址來判斷這個對象是否已經經歷過一次Scavenge回收。如果已經經歷過了,會將該對象從From空間復制到老生代空間中,如果沒有,則復制到To空間中。這個晉升流程如圖所示。

另一個判斷條件是To空間的內存占用比。當要從From空間復制一個對象到To空間時,如果To空間已經使用了超過25%,則這個對象直接晉升到老生代空間中,這個晉升的判斷示意圖如圖所示。

8. 為什么要設置25%這個這么低的值呢?

設置25%這個限制值的原因是當這次Scavenge回收完成后,這個To空間將變成From空間,接下來的內存分配將在這個空間中進行。如果占比過高,會影響后續的內存分配。

9. 新生代的對象晉升后就成老生代了,那老生代為什么不能用Scavenge回收?

對于老生代中的對象,由于存活對象占較大比重,再采用Scavenge的方式會有兩個問題:一個是存活對象較多,復制存活對象的效率將會很低;另一個問題依然是浪費一半空間的問題。這兩個問題導致應對生命周期較長的對象時Scavenge會顯得捉襟見肘。

10. 那老生代的對象該怎么處理?

V8在老生代中主要采用了Mark-Sweep和Mark-Compact相結合的方式進行垃圾回收。

Mark-Sweep是標記清除的意思,它分為標記和清除兩個階段。與Scavenge相比,Mark-Sweep并不將內存空間劃分為兩半,所以不存在浪費一半空間的行為。與Scavenge復制活著的對象不同,Mark-Sweep在標記階段遍歷堆中的所有對象,并標記活著的對象,在隨后的清除階段中,只清除沒有被標記的對象。可以看出,Scavenge中只復制活著的對象,而Mark-Sweep只清理死亡對象。活對象在新生代中只占較小部分,死對象在老生代中只占較小部分,這是兩種回收方式能高效處理的原因。圖為Mark-Sweep在老生代空間中標記后的示意圖,黑色部分標記為死亡的對象。

11. 那為什么還要標記整理?

Mark-Sweep最大的問題是在進行一次標記清除回收后,內存空間會出現不連續的狀態。這種內存碎片會對后續的內存分配造成問題,因為很可能出現需要分配一個大對象的情況,這時所有的碎片空間都無法完成此次分配,就會提前觸發垃圾回收,而這次回收是不必要的。

為了解決Mark-Sweep的內存碎片問題,Mark-Compact被提出來。Mark-Compact是標記整理的意思,是在Mark-Sweep的基礎上演變而來的。它們的差別在于對象在標記為死亡后,在整理的過程中,將活著的對象往一端移動,移動完成后,直接清理掉邊界外的內存。圖為Mark-Compact完成標記并移動存活對象后的示意圖,白色格子為存活對象,深色格子為死亡對象,淺色格子為存活對象移動后留下的空洞。

完成移動后,就可以直接清除最右邊的存活對象后面的內存區域完成回收。

12. 咦!既然標記整理是基于標記清除上演變而來的,也就是它包括了標記清除,這么棒,那就用標記整理好了,干嘛還要說它結合標記清除使用呢?

這里將Mark-Sweep和Mark-Compact結合著介紹不僅僅是因為兩種策略是遞進關系,在V8的回收策略中兩者是結合使用的。表是目前介紹到的3種主要垃圾回收算法的簡單對比。

從表中可以看到,在Mark-Sweep和Mark-Compact之間,由于Mark-Compact需要移動對象,所以它的執行速度不可能很快,所以在取舍上,V8主要使用Mark-Sweep,在空間不足以對從新生代中晉升過來的對象進行分配時才使用Mark-Compact。

13. 原來是這樣啊,要是垃圾回收算法時間花費很長,豈不是就要卡頓?

垃圾回收的3種基本算法都需要將應用邏輯暫停下來,待執行完垃圾回收后再恢復執行應用邏輯,這種行為被稱為“全停頓”(stop-the-world)。在V8的分代式垃圾回收中,一次小垃圾回收只收集新生代,由于新生代默認配置得較小,且其中存活對象通常較少,所以即便它是全停頓的影響也不大。

但V8的老生代通常配置得較大,且存活對象較多,全堆垃圾回收(full垃圾回收)的標記、清理、整理等動作造成的停頓就會比較可怕,需要設法改善。

為了降低全堆垃圾回收帶來的停頓時間,V8先從標記階段入手,將原本要一口氣停頓完成的動作改為增量標記(incremental marking),也就是拆分為許多小“步進”,每做完一“步進”就讓JavaScript應用邏輯執行一小會兒,垃圾回收與應用邏輯交替執行直到標記階段完成。圖為增量標記示意圖。

V8在經過增量標記的改進后,垃圾回收的最大停頓時間可以減少到原本的1/6左右。V8后續還引入了延遲清理(lazy sweeping)與增量式整理(incrementalcompaction),讓清理與整理動作也變成增量式的。同時還計劃引入并行標記與并行清理,進一步利用多核性能降低每次停頓的時間。

14. 你知道Buffer對象嗎?Buffer對象是通過V8分配內存的嗎?

知道。他不是。

為何Buffer對象并非通過V8分配?這在于Node并不同于瀏覽器的應用場景。在瀏覽器中,JavaScript直接處理字符串即可滿足絕大多數的業務需求,而Node則需要處理網絡流和文件I/O流,操作字符串遠遠不能滿足傳輸的性能需求。

關于Buffer的細節 后面再仔細講解一下。

所以,從這里我們可以知道,Node的內存構成主要由通過V8進行分配的部分和Node自行分配的部分。受V8的垃圾回收限制的主要是V8的堆內存。

15. 可以利用fs.readFile()和fs.writeFile()方法 來 讀寫大文件嗎?

由于V8的內存限制,我們無法通過fs.readFile()和fs.writeFile()直接進行大文件的操作,而改用fs.createReadStream()和fs.createWriteStream()方法通過流的方式實現對大文件的操作。

下面的代碼展示了如何讀取一個文件,然后將數據寫入到另一個文件的過程:

由于讀寫模型固定,上述方法有更簡潔的方式,具體如下所示:

圖片可讀流提供了管道方法pipe(),封裝了data事件和寫入操作。通過流的方式,上述代碼不會受到V8內存限制的影響,有效地提高了程序的健壯性。如果不需要進行字符串層面的操作,則不需要借助V8來處理,可以嘗試進行純粹的Buffer操作,這不會受到V8堆內存的限制。但是這種大片使用內存的情況依然要小心,即使V8不限制堆內存的大小,物理內存依然有限制。

14. 你知道Buffer對象嗎?Buffer對象是通過V8分配內存的嗎?

知道。他不是。

為何Buffer對象并非通過V8分配?這在于Node并不同于瀏覽器的應用場景。在瀏覽器中,JavaScript直接處理字符串即可滿足絕大多數的業務需求,而Node則需要處理網絡流和文件I/O流,操作字符串遠遠不能滿足傳輸的性能需求。

關于Buffer的細節 后面再仔細講解一下。

所以,從這里我們可以知道,Node的內存構成主要由通過V8進行分配的部分和Node自行分配的部分。受V8的垃圾回收限制的主要是V8的堆內存。

15. 可以利用fs.readFile()和fs.writeFile()方法 來 讀寫大文件嗎?

由于V8的內存限制,我們無法通過fs.readFile()和fs.writeFile()直接進行大文件的操作,而改用fs.createReadStream()和fs.createWriteStream()方法通過流的方式實現對大文件的操作。

下面的代碼展示了如何讀取一個文件,然后將數據寫入到另一個文件的過程:

由于讀寫模型固定,上述方法有更簡潔的方式,具體如下所示:

可讀流提供了管道方法pipe(),封裝了data事件和寫入操作。通過流的方式,上述代碼不會受到V8內存限制的影響,有效地提高了程序的健壯性。如果不需要進行字符串層面的操作,則不需要借助V8來處理,可以嘗試進行純粹的Buffer操作,這不會受到V8堆內存的限制。但是這種大片使用內存的情況依然要小心,即使V8不限制堆內存的大小,物理內存依然有限制。

 

責任編輯:武曉燕 來源: 前端陽光
相關推薦

2021-06-18 09:17:10

探究Node前端開發

2021-06-12 18:37:56

Nodejs前端開發

2021-07-08 09:48:01

NodeBuffer亂碼

2009-09-25 16:40:49

UPS常識

2010-01-27 13:41:21

2025-01-02 14:50:34

MyBatis開發緩存

2013-07-15 11:03:52

802.11ac技術802.11ac

2011-12-22 14:27:11

2022-02-15 11:49:08

eBPFGo內存

2010-11-29 11:22:36

SYBASE數據庫日志

2010-08-04 09:43:28

Flex應用程序

2009-12-09 10:07:19

Linux靜態路由

2021-01-19 05:24:36

ThreadLocal線程編程

2009-11-12 14:32:00

BGP路由協議

2009-11-27 10:37:41

GPRS路由

2010-02-04 16:52:01

多層交換技術

2021-07-12 07:08:52

TCP協議面試

2013-12-23 09:25:21

2009-11-20 09:56:27

軟交換路由技術

2009-12-09 13:35:09

靜態路由配置
點贊
收藏

51CTO技術棧公眾號

欧美一区二区视频17c| 日韩在线小视频| 亚洲色成人一区二区三区小说| 日本一区二区三区在线观看视频| 日韩激情视频网站| 日韩在线观看免费高清完整版| 日本wwww色| av免费在线一区| 亚洲一区二区中文在线| 日韩精品久久久| 成人av一区二区三区在线观看| 性久久久久久| 久久av在线播放| av黄色在线免费观看| 一区二区三区四区精品视频| 色欧美乱欧美15图片| av电影一区二区三区| 男人的天堂在线| 国产成人在线观看免费网站| 国产精品吊钟奶在线| 国产精品成人久久| 亚洲精品午夜av福利久久蜜桃| 亚洲欧美综合图区| 国产艳妇疯狂做爰视频| 日韩色性视频| 欧美在线短视频| 国产免费一区二区三区视频| 欧美人体视频xxxxx| 国产精品国产自产拍高清av王其| 久久婷婷国产综合尤物精品| 亚洲欧美黄色片| 精品午夜久久福利影院| 国产精品色悠悠| 你懂的国产在线| 影音国产精品| 欧美日本精品在线| 日本一级特级毛片视频| 欧美日韩精品一区二区视频| 精品亚洲aⅴ在线观看| 国产激情第一页| 亚洲码欧美码一区二区三区| 欧美一区在线视频| 亚洲a级黄色片| 欧美一区=区三区| 欧美色图在线观看| 欧美日韩亚洲自拍| 精品福利在线| 欧美日本一道本在线视频| 久草综合在线观看| 怡红院成人在线| 欧美亚洲一区二区三区四区| 最近免费中文字幕中文高清百度| 蜜桃视频在线观看播放| 精品久久久久久久久久久久| 成人毛片一区二区| 蜜桃在线视频| 91久久精品国产91性色tv| 国产成人无码一二三区视频| 自拍在线观看| 91国内精品野花午夜精品| 日本www高清视频| 欧美不卡高清一区二区三区| 欧洲一区二区三区免费视频| 一道本在线免费视频| 青青草国产一区二区三区| 欧美顶级少妇做爰| 日本高清免费观看| 波多野结衣在线一区二区| 日韩av有码在线| 久久久久久久毛片| 99久久婷婷这里只有精品 | 国产成人精品电影| 成年人晚上看的视频| 奇米色777欧美一区二区| 国产精品视频地址| av加勒比在线| 99久久综合99久久综合网站| 日韩精品一区二区三区四区五区| 在线观看免费黄视频| 一区二区三区精品久久久| 人妻夜夜添夜夜无码av| 性高爱久久久久久久久| 欧美日韩成人综合在线一区二区| 自拍视频第一页| 欧美一级三级| 色七七影院综合| 精品处破女学生| 丝袜脚交一区二区| 91久久久精品| 日本黄在线观看| 亚洲婷婷综合久久一本伊一区 | 国产精品一级| 国产日韩欧美影视| 免费国产黄色片| 中文一区一区三区高中清不卡| 欧美性受黑人性爽| 345成人影院| 欧美一区二区三区四区视频| 免费观看av网站| 91精品秘密在线观看| 69av在线视频| 国产乱码一区二区| 久久久亚洲精品一区二区三区| 亚洲视频在线二区| av在线最新| 69堂精品视频| 成年人网站免费看| 欧美精品播放| 国产精品夜间视频香蕉| 天堂а√在线8种子蜜桃视频| 中文字幕在线不卡| 丰满人妻中伦妇伦精品app| 激情五月综合婷婷| 中文字幕精品在线视频| 国产无遮挡呻吟娇喘视频| 奇米精品一区二区三区在线观看 | 欧美日韩国产在线看| 91av视频免费观看| 精品一区在线| 亚洲18私人小影院| 午夜美女福利视频| 中文字幕一区免费在线观看| 丝袜老师办公室里做好紧好爽 | 日韩欧美在线123| 色屁屁草草影院ccyy.com| 亚洲精品极品| 99热国产免费| a级在线观看| 9191精品国产综合久久久久久| 亚洲精品乱码久久久久久久久久久久| 一区久久精品| 亚洲xxx自由成熟| 成人免费高清| 欧美一区三区二区| 三级黄色免费观看| 蜜臂av日日欢夜夜爽一区| 日韩欧美激情一区二区| 美女100%一区| 亚洲欧美国产高清va在线播| 日韩精品一区二区av| 福利电影一区二区| 国产精品久久久久久久乖乖| 51精品国产| 欧美俄罗斯性视频| 北条麻妃一二三区| 亚洲综合区在线| 久草免费资源站| 亚洲国产国产亚洲一二三| 97超碰资源| 爱啪啪综合导航| 日韩禁在线播放| 永久免费无码av网站在线观看| 91蜜桃视频在线| 天天摸天天碰天天添| 国产精品白丝av嫩草影院| 久久精品视频播放| 99国产成人精品| 亚洲一二三专区| 最近日本中文字幕| 久久亚洲视频| 日韩欧美亚洲区| 激情开心成人网| 精品国产一区二区三区四区在线观看 | 精品99一区二区| 久久久久无码国产精品不卡| 成人av在线播放网站| 国产男女免费视频| 亚洲人和日本人hd| 成人黄色av网站| 久久五月精品中文字幕| 亚洲精品日韩在线| 最新中文字幕第一页| 日韩毛片一二三区| 91精品啪在线观看国产| 麻豆精品网站| 综合网五月天| 久久大胆人体视频| 国产精品激情av电影在线观看 | 国产不卡一区二区在线播放| 欧美精品日韩少妇| 精品第一国产综合精品aⅴ| 六月丁香婷婷综合| 国产精品短视频| 熟妇人妻久久中文字幕| 老司机午夜精品99久久| 白白操在线视频| 自拍偷拍精品| 91在线视频一区| 亚洲欧美小说色综合小说一区| 日韩中文在线中文网在线观看| www.精品久久| 色天使色偷偷av一区二区| 久久国产高清视频| 91色视频在线| 99精品视频免费版的特色功能| 国产美女精品| 警花观音坐莲激情销魂小说| 日韩最新在线| 91gao视频| 久久三级毛片| 26uuu亚洲伊人春色| 哥也色在线视频| 亚洲香蕉成视频在线观看 | proumb性欧美在线观看| 亚洲免费999| 国产精品免费看| 特级西西444| 欧美综合久久| 精品高清视频| 综合中文字幕| 91亚洲精品在线观看| 欧美韩国亚洲| 26uuu日韩精品一区二区| 密臀av在线| 操91在线视频| 日本福利在线| 亚洲男人的天堂在线| 国模私拍视频在线| 欧美一区二区播放| 在线观看免费视频一区| 欧美性猛交xxxx乱大交极品| 国产中文字幕免费| 亚洲激情网站免费观看| 懂色av粉嫩av蜜臀av一区二区三区| 99国产精品久久久久| 欧美丰满熟妇bbb久久久| 精品写真视频在线观看| 香蕉视频禁止18| 丝袜国产日韩另类美女| 18岁视频在线观看| 亚洲欧美日韩综合国产aⅴ| 被灌满精子的波多野结衣| 欧美日韩a区| 欧美一级黄色录像片| 68国产成人综合久久精品| 亚洲精品自在在线观看| 日韩大片在线播放| 色综合666| 欧美中文字幕一区二区| 亚洲无玛一区| 欧美韩国日本在线观看| 一区精品视频| 午夜激情久久| 中国一级黄色录像| 在线中文字幕亚洲| 青青在线视频免费观看| 午夜精品久久99蜜桃的功能介绍| 91精品国产吴梦梦| 综合激情婷婷| a级黄色小视频| 一本一本久久| 精品久久久久av| 日本v片在线高清不卡在线观看| 国产野外作爱视频播放| 美女性感视频久久| 午夜一区二区视频| 国产精选一区二区三区| 国产香蕉精品视频| 91色|porny| 欧美波霸videosex极品| 亚洲日本电影在线| 麻豆changesxxx国产| 亚洲超碰97人人做人人爱| 91av在线免费视频| 色爱区综合激月婷婷| 一级黄色片在线观看| 日韩欧美国产精品| 五十路在线视频| 一区二区欧美在线| 亚洲h片在线看| 77777亚洲午夜久久多人| 欧美黄色三级| 95av在线视频| 欧美顶级毛片在线播放| 日韩高清av电影| 亚洲成av人片乱码色午夜| 欧美日韩福利在线| 美女精品一区| 三级黄色片免费看| 9久草视频在线视频精品| 欧美人与性囗牲恔配| 亚洲欧美另类在线| 国产成人综合欧美精品久久| 欧美电影一区二区| 熟妇人妻av无码一区二区三区| 伊人伊成久久人综合网站| 久草在线新免费首页资源站| 日韩免费av片在线观看| 999精品视频在线观看| 久久综合九色综合网站| 91精品啪在线观看国产81旧版| 亚洲 自拍 另类小说综合图区| 日本强好片久久久久久aaa| 美女又黄又免费的视频| 中文字幕高清一区| www.国产成人| 91精品久久久久久久91蜜桃 | 另类视频在线观看| 伊人久久综合一区二区| 成人动漫视频在线观看完整版| 国产毛片一区二区三区| 国内少妇毛片视频| 免费在线观看一区二区三区| 少妇精品无码一区二区三区| 一区在线播放视频| 一区二区三区在线观看av| 精品少妇一区二区三区视频免付费| 成人p站proumb入口| 韩国美女主播一区| 国产一区一区| 亚洲国产精品一区在线观看不卡 | 成人精品中文字幕| 少妇高潮喷水在线观看| 国产精品亚洲视频| 国产精品一区二区亚洲| 色婷婷激情综合| 日本高清视频www| 欧美成人午夜激情在线| 国产亚洲欧美日韩精品一区二区三区 | 欧美大码xxxx| 91精品亚洲一区在线观看| 日韩av免费电影| 男女精品网站| 可以直接看的无码av| 五月天激情小说综合| 亚洲精品.www| 欧美富婆性猛交| 国产电影一区| www亚洲国产| 免费成人你懂的| 欧美黄色一级生活片| 色综合天天狠狠| av女名字大全列表| 97人洗澡人人免费公开视频碰碰碰| 日韩欧美一级| 欧美在线观看黄| 成人做爰69片免费看网站| 免费无码毛片一区二区app| 在线播放日韩导航| 欧美jizzhd欧美| 国产精品爽爽爽| 93在线视频精品免费观看| 亚洲黄色小视频在线观看| 国产亚洲精品中文字幕| 免费一级a毛片| 一区二区国产精品视频| 国产亚洲精彩久久| 在线观看免费黄色片| 国产精品亚洲一区二区三区妖精| 青青青在线免费观看| 日韩欧美123| 超碰在线97国产| 免费精品视频一区二区三区| 久久久久久穴| 免费看日本黄色片| 在线电影一区二区三区| 少女频道在线观看高清| 国产精品久久波多野结衣| 亚洲深夜av| 欧美人与性囗牲恔配| 91麻豆精品国产91久久久久| av免费网站在线观看| 国产精品久久精品国产| 久久久999| av在线免费播放网址| 欧美一区二区成人6969| 青青青免费在线视频| 色姑娘综合网| 国产一区二区不卡| 日本亚洲欧美在线| 国产亚洲一区精品| 国产精品日本一区二区三区在线 | 欧洲视频一区二区三区| 日本不卡一二三区黄网| 欧美成人精品欧美一级| 精品一区精品二区| 国产精品第一| 成人av在线不卡| 国产午夜一区二区三区| 国产情侣av在线| 欧美亚洲成人免费| 999久久久免费精品国产| 在线观看免费视频黄| 欧美日韩中文一区| 美女日批视频在线观看| 午夜一区二区三区| 成人黄色av电影| 亚洲系列在线观看| 性欧美xxxx视频在线观看| 久久资源中文字幕| 粉嫩av懂色av蜜臀av分享| 欧美日韩电影一区| 免费h视频在线观看| 中文字幕人成一区| 久久综合视频网| 国产成人精品无码高潮| 国产精品白嫩初高中害羞小美女 | 久久av影视| 一区二区在线免费观看视频| 欧美性猛交xxxxxxxx|