精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品女人毛片| 欧美伊人久久| 欧美性感一区二区三区| 日韩在线三级| 在线免费看av片| 2023国产精品久久久精品双| 欧美成人性战久久| 日韩国产欧美亚洲| freemovies性欧美| 国产麻豆精品95视频| 97色在线观看| 国产精品夜夜夜爽阿娇| 国产精品17p| 欧美日韩国产首页| 国产精品va无码一区二区| 户外极限露出调教在线视频| 国产一区二区精品久久| 青青a在线精品免费观看| 99自拍视频在线| 2023国产精华国产精品| 色综合一区二区| 日本aa在线观看| 亚洲1卡2卡3卡4卡乱码精品| youjizz久久| 92看片淫黄大片看国产片| 日本中文字幕第一页| 欧美精品一卡| 精品国模在线视频| 90岁老太婆乱淫| 91精品国产自产精品男人的天堂| 欧美午夜理伦三级在线观看| 欧美 国产 综合| 伊人在我在线看导航| 国产日韩欧美不卡| 韩国成人av| www.97av.com| 久久电影国产免费久久电影| 国产91精品在线播放| 国产主播在线观看| 欧美激情在线| 欧美精品在线网站| 国产精品视频一区二区三| 精品久久影视| 亚洲欧美日韩直播| 亚洲天堂成人av| 国产suv精品一区| 精品久久久影院| 久久av一区二区三| 一区中文字幕电影| 欧美一级艳片视频免费观看| 制服丝袜中文字幕第一页 | 欧美裸体xxxx极品少妇| 天天做夜夜爱爱爱| 91亚洲成人| 日韩性生活视频| 又色又爽的视频| 久久在线视频| 日韩中文字幕免费视频| 精品丰满少妇一区二区三区| 日本精品三区| 中文字幕亚洲专区| 91视频免费看片| 99久久亚洲精品蜜臀| 日韩最新免费不卡| 成人涩涩小片视频日本| 久久精品影视| 九九视频这里只有精品| 国产大学生自拍| 好看不卡的中文字幕| 欧美激情国产高清| 午夜毛片在线观看| 可以看av的网站久久看| 国产精品久久久久久久久久尿| 亚洲毛片一区二区三区| 奇米四色…亚洲| 92看片淫黄大片欧美看国产片| 99视频免费看| av在线不卡免费看| 日韩av在线电影观看| 在线日本中文字幕| 一区二区三区在线播| 欧美成人高潮一二区在线看| 欧美电影免费观看| 在线91免费看| 91精品小视频| 999视频精品| 国内精久久久久久久久久人| 99精品在线播放| 久久99国产精品麻豆| 粉嫩高清一区二区三区精品视频 | 国产三级按摩推拿按摩| 国产激情视频一区二区在线观看 | 国产精品久久观看| 97视频免费看| 一级全黄裸体免费视频| 成人在线视频首页| 相泽南亚洲一区二区在线播放| 黄色网在线播放| 欧美日韩亚洲高清| 亚洲精品永久视频| 窝窝社区一区二区| 久久国产加勒比精品无码| 中文字幕超碰在线| 国产一区在线看| 欧美日产一区二区三区在线观看| 免费av在线播放| 亚洲丰满少妇videoshd| 国产精品久久a| 日韩电影在线观看完整免费观看| www.日韩.com| 高潮毛片又色又爽免费 | 亚洲自拍偷拍色图| 欧美孕妇孕交xxⅹ孕妇交| 亚洲日本电影在线| 99视频精品免费| 日韩a级大片| 久久久亚洲精选| 中文字幕一区二区三区人妻四季| 成人国产一区二区三区精品| 在线视频不卡国产| 美女福利一区二区| 亚洲成人久久久久| 紧身裙女教师波多野结衣| 三级成人在线视频| 精品综合在线| 久久国产精品黑丝| 91精品国产色综合久久不卡蜜臀 | 精品视频日韩| 8x拔播拔播x8国产精品| 亚洲第一页综合| 亚洲女同一区二区| 手机免费av片| 欧美大人香蕉在线| 国产精品视频色| 国产69久久| 色一情一乱一乱一91av| 野花社区视频在线观看| 亚洲欧洲另类| 国产精品一区二区av| 男女羞羞视频在线观看| 日韩一级片在线观看| 在线看的片片片免费| 精品一区二区三区影院在线午夜| 视频一区二区三| 欧美日韩免费观看视频| 国产一区二区三区精品久久久 | 国产大片免费看| 激情五月婷婷综合网| 宅男av一区二区三区| 日韩精品第二页| 精品国内自产拍在线观看| 97人妻人人澡人人爽人人精品| 国产精品乱子久久久久| 国产91色在线观看| 99国产精品一区二区| 国产热re99久久6国产精品| 在线播放麻豆| 91精品婷婷国产综合久久| 国产av无码专区亚洲av毛网站| 国内精品不卡在线| 三级在线免费观看| av综合网址| 欧美在线www| 国产福利电影在线| 在线不卡免费av| 欧美成人国产精品高潮| 国产福利一区二区三区| 丰满少妇大力进入| 欧美人妖在线| 国产精选久久久久久| 1024在线播放| 亚洲精品久久久久久久久久久久久| 毛片基地在线观看| 中文字幕乱码久久午夜不卡 | 人妻少妇精品久久| 丝袜av一区| 国产精品无av码在线观看| 福利在线视频网站| 亚洲精品videossex少妇| 中文字幕高清在线免费播放| 国产精品久久久久久久久搜平片 | 亚洲女人的天堂| 国产激情第一页| 蜜臀精品一区二区三区在线观看| 欧美另类videos| 亚洲小说图片| 91亚洲精华国产精华| 久久男人av资源站| 深夜福利国产精品| 高清毛片aaaaaaaaa片| 色综合久久六月婷婷中文字幕| 国产精品一区二区女厕厕| 欧美视频免费一区二区三区| 欧美日韩精品三区| 久久免费公开视频| 久久精品亚洲国产奇米99| 国产高潮免费视频| 伊人久久大香线蕉综合热线| 日韩精品最新在线观看| av成人综合| 国产一区二区丝袜| 日本在线影院| 欧美猛交免费看| 黄上黄在线观看| 日韩精品中文字幕在线不卡尤物| 无码人妻av免费一区二区三区 | 最新精品视频| 亚洲v天堂v手机在线| 91久久在线播放| 成人在线爆射| 992tv成人免费影院| 日本韩国在线视频爽| 精品伦理精品一区| 中文字幕制服诱惑| 欧美视频第一页| 久久一级黄色片| 中文字幕在线播放不卡一区| 女尊高h男高潮呻吟| 国产福利一区二区三区在线视频| 五月婷婷丁香色| 丝袜亚洲精品中文字幕一区| 久久成人福利视频| 女同性一区二区三区人了人一| 天堂va久久久噜噜噜久久va| 欧美黄色影院| 国产精品美女久久久久av福利| 涩涩涩久久久成人精品| 国产精品久久中文| 黄色亚洲网站| 51精品在线观看| 成人国产电影在线观看| 欧美日本高清一区| 亚洲区欧洲区| 不卡av在线播放| 182tv在线播放| 蜜月aⅴ免费一区二区三区| 蜜桃视频网站在线观看| 日韩中文字幕免费视频| 91精彩视频在线播放| 在线亚洲午夜片av大片| 韩国免费在线视频| 亚洲欧美制服中文字幕| 免费播放片a高清在线观看| 日韩av中文字幕在线| 全国男人的天堂网| 亚洲精品一区二区三区香蕉| 精品国产九九九| 日韩欧美中文字幕制服| 国产xxxx在线观看| 欧美一级午夜免费电影| 亚洲国产精彩视频| 亚洲成avwww人| 日本精品一区二区在线观看| 亚洲国产免费av| 天堂视频中文在线| 亚洲女同精品视频| 成人不用播放器| 神马久久桃色视频| 1区2区3区在线视频| 欧美激情精品久久久久久变态| 欧洲黄色一区| 69av成年福利视频| jizz内谢中国亚洲jizz| 国产成人涩涩涩视频在线观看| 国产电影一区二区三区爱妃记| 国产免费一区视频观看免费| 亚洲三级在线| 国产精品免费在线播放| 欧美深夜视频| 日韩精品资源| 午夜日韩在线| 日日碰狠狠添天天爽超碰97| 日本中文字幕一区二区视频| 一起操在线视频| 成人三级伦理片| 成人乱码一区二区三区av| 国产精品无人区| 久久久久亚洲av无码专区 | 久久婷婷国产麻豆91天堂| 欧美人体视频xxxxx| 欧美一级淫片丝袜脚交| 高清在线一区| 国产成人免费电影| av亚洲免费| 日本男女交配视频| 玖玖视频精品| 男人的天堂免费| 国产色91在线| 久久久久成人片免费观看蜜芽| 欧美日韩一区二区在线| 国产又大又黄的视频| 欧美精品一区二区三区很污很色的 | 久久福利免费视频| 精品免费在线视频| 国产精品一级视频| 国产午夜精品理论片a级探花| 精品51国产黑色丝袜高跟鞋| 97香蕉久久夜色精品国产| 国产精品亲子伦av一区二区三区| 国产精品一区二区三区免费观看 | 国产精品igao视频网网址不卡日韩| 国内精品二区| 亚洲一本二本| 性欧美极品xxxx欧美一区二区| 国产精品自在欧美一区| 免费视频91蜜桃| 欧美日韩另类在线| 国产国语亲子伦亲子| 一区二区三区黄色| аⅴ资源天堂资源库在线| 成人h视频在线| 国产乱码精品一区二区三区四区| 成人免费看片'免费看| 全部av―极品视觉盛宴亚洲| 日批在线观看视频| 亚洲精品免费看| 91精品中文字幕| 国产亚洲成av人片在线观看桃| 大桥未久在线视频| 91免费看网站| 一本一道久久综合狠狠老| 男女爽爽爽视频| 国产亚洲美州欧州综合国| 日韩欧美中文字幕一区二区| 欧美一区二区高清| 69久久久久| 国产精品欧美一区二区三区奶水| 啪啪激情综合网| 9久久9毛片又大又硬又粗| 国产经典欧美精品| 三级影片在线看| 欧美精品乱人伦久久久久久| 最新电影电视剧在线观看免费观看| 欧美综合国产精品久久丁香| 丝袜久久网站| 成年人网站免费视频| 成人av网在线| 国产性xxxx高清| 亚洲二区中文字幕| 国产在线天堂www网在线观看| y111111国产精品久久婷婷| 一区二区三区四区电影| www.com污| 亚洲欧美日韩人成在线播放| 97超碰人人草| 美日韩精品免费观看视频| 天堂精品久久久久| 成人在线免费高清视频| 国产传媒欧美日韩成人| 欧美黄色一级网站| 欧美大片在线观看| 国产桃色电影在线播放| 国产精品一区二区在线观看| 欧美天堂亚洲电影院在线观看 | 亚洲精品视频在线看| 国产伦理吴梦梦伦理| 久久成年人视频| 超碰97久久国产精品牛牛| 少妇人妻无码专区视频| 久久综合九色综合久久久精品综合| 99超碰在线观看| 一夜七次郎国产精品亚洲| 国产精品天堂蜜av在线播放| 久久免费一级片| 成人手机在线视频| 日韩综合在线观看| 日韩中文字幕视频在线观看| 日韩08精品| 日本一本二本在线观看| 亚洲国产经典视频| 99久久国产免费| 69久久夜色精品国产69乱青草| 国产探花一区| 中文字幕日韩久久| 午夜私人影院久久久久| 精品欧美不卡一区二区在线观看 | 午夜精品久久一牛影视| 免费黄色片在线观看| 成人中心免费视频| 亚洲精品123区| 国产精品久久久久久成人| 日韩欧美一级二级三级| 中文字幕在线直播| 在线成人av电影| 北条麻妃国产九九精品视频| 国产精品尤物视频| 欧美精品做受xxx性少妇| 色婷婷av一区二区三区丝袜美腿| 91女神在线观看| 婷婷丁香激情综合| 欧美成年黄网站色视频| 国产在线欧美日韩| 久久99热99| 国产区在线观看视频| 久热精品视频在线观看一区| 色愁久久久久久| 国产精品欧美性爱| 欧美午夜寂寞影院| 国产精品论坛| 成年人视频大全|