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

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

開發 前端
像C語言這樣的底層語言一般都有底層的內存管理接口,比如 malloc()和free()用于分配內存和釋放內存。 而對于JavaScript來說,會在創建變量(對象,字符串等)時分配內存,并且在不再使用它們時“自動”釋放內存,這個自動釋放內存的過程稱為垃圾回收。

前言

像C語言這樣的底層語言一般都有底層的內存管理接口,比如 malloc()和free()用于分配內存和釋放內存。 而對于JavaScript來說,會在創建變量(對象,字符串等)時分配內存,并且在不再使用它們時“自動”釋放內存,這個自動釋放內存的過程稱為垃圾回收。 因為自動垃圾回收機制的存在,讓大多Javascript開發者感覺他們可以不關心內存管理,所以會在一些情況下導致內存泄漏。

內存生命周期

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

JS 環境中分配的內存有如下聲明周期:

  1. 內存分配:當我們申明變量、函數、對象的時候,系統會自動為他們分配內存
  2. 內存使用:即讀寫內存,也就是使用變量、函數等
  3. 內存回收:使用完畢,由垃圾回收機制自動回收不再使用的內存

JS 的內存分配

為了不讓程序員費心分配內存,JavaScript 在定義變量時就完成了內存分配。

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

有些函數調用結果是分配對象內存:

  1. var d = new Date(); // 分配一個 Date 對象 
  2. var e = document.createElement('div'); // 分配一個 DOM 元素 

有些方法分配新變量或者新對象:

  1. var s = "azerty"
  2. var s2 = s.substr(0, 3); // s2 是一個新的字符串 
  3. // 因為字符串是不變量, 
  4. // JavaScript 可能決定不分配內存, 
  5. // 只是存儲了 [0-3] 的范圍。 
  6. var a = ["ouais ouais""nan nan"]; 
  7. var a2 = ["generation""nan nan"]; 
  8. var a3 = a.concat(a2);  
  9. // 新數組有四個元素,是 a 連接 a2 的結果 

JS 的內存使用

使用值的過程實際上是對分配內存進行讀取與寫入的操作。 讀取與寫入可能是寫入一個變量或者一個對象的屬性值,甚至傳遞函數的參數。

  1. var a = 10; // 分配內存 
  2. console.log(a); // 對內存的使用 

JS 的內存回收

JS 有自動垃圾回收機制,那么這個自動垃圾回收機制的原理是什么呢? 其實很簡單,就是找出那些不再繼續使用的值,然后釋放其占用的內存。

大多數內存管理的問題都在這個階段。 在這里最艱難的任務是找到不再需要使用的變量。

不再需要使用的變量也就是生命周期結束的變量,是局部變量,局部變量只在函數的執行過程中存在, 當函數運行結束,沒有其他引用(閉包),那么該變量會被標記回收。

全局變量的生命周期直至瀏覽器卸載頁面才會結束,也就是說全局變量不會被當成垃圾回收。

因為自動垃圾回收機制的存在,開發人員可以不關心也不注意內存釋放的有關問題,但對無用內存的釋放這件事是客觀存在的。 不幸的是,即使不考慮垃圾回收對性能的影響,目前***的垃圾回收算法,也無法智能回收所有的極端情況。

接下來我們來探究一下 JS 垃圾回收的機制。

垃圾回收

引用

垃圾回收算法主要依賴于引用的概念。

在內存管理的環境中,一個對象如果有訪問另一個對象的權限(隱式或者顯式),叫做一個對象引用另一個對象。

例如,一個Javascript對象具有對它原型的引用(隱式引用)和對它屬性的引用(顯式引用)。

在這里,“對象”的概念不僅特指 JavaScript 對象,還包括函數作用域(或者全局詞法作用域)。

引用計數垃圾收集

這是最初級的垃圾回收算法。

引用計數算法定義“內存不再使用”的標準很簡單,就是看一個對象是否有指向它的引用。 如果沒有其他對象指向它了,說明該對象已經不再需了。

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

由上面可以看出,引用計數算法是個簡單有效的算法。但它卻存在一個致命的問題:循環引用

如果兩個對象相互引用,盡管他們已不再使用,垃圾回收不會進行回收,導致內存泄露。

來看一個循環引用的例子:

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

上面我們申明了一個函數 f ,其中包含兩個相互引用的對象。 在調用函數結束后,對象 o1 和 o2 實際上已離開函數范圍,因此不再需要了。 但根據引用計數的原則,他們之間的相互引用依然存在,因此這部分內存不會被回收,內存泄露不可避免了。

再來看一個實際的例子:

  1. var div = document.createElement("div"); 
  2. div.onclick = function() { 
  3.  console.log("click"); 
  4. }; 
     

上面這種JS寫法再普通不過了,創建一個DOM元素并綁定一個點擊事件。 此時變量 div 有事件處理函數的引用,同時事件處理函數也有div的引用!(div變量可在函數內被訪問)。 一個循序引用出現了,按上面所講的算法,該部分內存無可避免的泄露了。

為了解決循環引用造成的問題,現代瀏覽器通過使用標記清除算法來實現垃圾回收。

標記清除算法

標記清除算法將“不再使用的對象”定義為“無法達到的對象”。 簡單來說,就是從根部(在JS中就是全局對象)出發定時掃描內存中的對象。 凡是能從根部到達的對象,都是還需要使用的。 那些無法由根部出發觸及到的對象被標記為不再使用,稍后進行回收。

從這個概念可以看出,無法觸及的對象包含了沒有引用的對象這個概念(沒有任何引用的對象也是無法觸及的對象)。 但反之未必成立。

工作流程:

  1. 垃圾收集器會在運行的時候會給存儲在內存中的所有變量都加上標記。
  2. 從根部出發將能觸及到的對象的標記清除。
  3. 那些還存在標記的變量被視為準備刪除的變量。
  4. ***垃圾收集器會執行***一步內存清除的工作,銷毀那些帶標記的值并回收它們所占用的內存空間。
JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

循環引用不再是問題了

再看之前循環引用的例子:

  1. function f(){ 
  2.  var o = {}; 
  3.  var o2 = {}; 
  4.  o.a = o2; // o 引用 o2 
  5.  o2.a = o; // o2 引用 o 
  6.  return "azerty"
  7. f(); 

函數調用返回之后,兩個循環引用的對象在垃圾收集時從全局對象出發無法再獲取他們的引用。 因此,他們將會被垃圾回收器回收。

內存泄漏

什么是內存泄漏

程序的運行需要內存。只要程序提出要求,操作系統或者運行時(runtime)就必須供給內存。

對于持續運行的服務進程(daemon),必須及時釋放不再用到的內存。 否則,內存占用越來越高,輕則影響系統性能,重則導致進程崩潰。

本質上講,內存泄漏就是由于疏忽或錯誤造成程序未能釋放那些已經不再使用的內存,造成內存的浪費。

內存泄漏的識別方法

經驗法則是,如果連續五次垃圾回收之后,內存占用一次比一次大,就有內存泄漏。 這就要求實時查看內存的占用情況。

在 Chrome 瀏覽器中,我們可以這樣查看內存占用情況

  1. 打開開發者工具,選擇 Performance 面板
  2. 在頂部勾選 Memory
  3. 點擊左上角的 record 按鈕
  4. 在頁面上進行各種操作,模擬用戶的使用情況
  5. 一段時間后,點擊對話框的 stop 按鈕,面板上就會顯示這段時間的內存占用情況

來看一張效果圖:

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

我們有兩種方式來判定當前是否有內存泄漏:

  1. 多次快照后,比較每次快照中內存的占用情況,如果呈上升趨勢,那么可以認為存在內存泄漏
  2. 某次快照后,看當前內存占用的趨勢圖,如果走勢不平穩,呈上升趨勢,那么可以認為存在內存泄漏

在服務器環境中使用 Node 提供的 process.memoryUsage 方法查看內存情況

console.log(process.memoryUsage());
// {
// rss: 27709440,
// heapTotal: 5685248,
// heapUsed: 3449392,
// external: 8772
// }

process.memoryUsage返回一個對象,包含了 Node 進程的內存占用信息。

該對象包含四個字段,單位是字節,含義如下:

  • rss(resident set size):所有內存占用,包括指令區和堆棧。
  • heapTotal:"堆"占用的內存,包括用到的和沒用到的。
  • heapUsed:用到的堆的部分。
  • external: V8 引擎內部的 C++ 對象占用的內存。

判斷內存泄漏,以heapUsed字段為準。

常見的內存泄露案例

意外的全局變量

function foo() {
bar1 = 'some text'; // 沒有聲明變量 實際上是全局變量 => window.bar1
this.bar2 = 'some text' // 全局變量 => window.bar2
}
foo();

在這個例子中,意外的創建了兩個全局變量 bar1 和 bar2

被遺忘的定時器和回調函數

在很多庫中, 如果使用了觀察者模式, 都會提供回調方法, 來調用一些回調函數。 要記得回收這些回調函數。舉一個 setInterval的例子:

var serverData = loadData();
setInterval(function() {
var renderer = document.getElementById('renderer');
if(renderer) {
renderer.innerHTML = JSON.stringify(serverData);
}
}, 5000); // 每 5 秒調用一次

如果后續 renderer 元素被移除,整個定時器實際上沒有任何作用。 但如果你沒有回收定時器,整個定時器依然有效, 不但定時器無法被內存回收, 定時器函數中的依賴也無法回收。在這個案例中的 serverData 也無法被回收。

閉包

在 JS 開發中,我們會經常用到閉包,一個內部函數,有權訪問包含其的外部函數中的變量。 下面這種情況下,閉包也會造成內存泄露:

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

這段代碼,每次調用 replaceThing 時,theThing 獲得了包含一個巨大的數組和一個對于新閉包 someMethod 的對象。 同時 unused 是一個引用了 originalThing 的閉包。

這個范例的關鍵在于,閉包之間是共享作用域的,盡管 unused 可能一直沒有被調用,但是 someMethod 可能會被調用,就會導致無法對其內存進行回收。 當這段代碼被反復執行時,內存會持續增長。

DOM 引用

很多時候, 我們對 Dom 的操作, 會把 Dom 的引用保存在一個數組或者 Map 中。

JavaScript基礎:如何管理JS中的內存?什么是內存泄漏和垃圾回收

 

上述案例中,即使我們對于 image 元素進行了移除,但是仍然有對 image 元素的引用,依然無法對齊進行內存回收。

另外需要注意的一個點是,對于一個 Dom 樹的葉子節點的引用。 舉個例子: 如果我們引用了一個表格中的td元素,一旦在 Dom 中刪除了整個表格,我們直觀的覺得內存回收應該回收除了被引用的 td 外的其他元素。 但是事實上,這個 td 元素是整個表格的一個子元素,并保留對于其父元素的引用。 這就會導致對于整個表格,都無法進行內存回收。所以我們要小心處理對于 Dom 元素的引用。

如何避免內存泄漏

記住一個原則:不用的東西,及時歸還

  1. 減少不必要的全局變量,使用嚴格模式避免意外創建全局變量。
  2. 在你使用完數據后,及時解除引用(閉包中的變量,dom引用,定時器清除)。
  3. 組織好你的邏輯,避免死循環等造成瀏覽器卡頓,崩潰的問題。

 

責任編輯:龐桂玉 來源: 今日頭條
相關推薦

2023-05-31 09:00:00

2021-09-26 05:06:46

JS垃圾內存

2022-05-26 09:51:50

JavaScrip內存泄漏

2025-07-23 07:40:29

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2011-08-15 16:28:06

Cocoa內存管理

2021-08-09 09:54:37

內存泄漏JS 阿里云

2021-08-05 15:28:22

JS內存泄漏

2024-10-24 16:51:08

2023-12-19 21:52:51

Go垃圾回收開發

2020-01-03 16:04:10

Node.js內存泄漏

2023-02-20 15:27:30

開發JavaScript內存管理

2013-10-11 17:32:18

Linux運維內存管理

2023-02-28 07:56:07

V8內存管理

2009-09-02 09:23:26

.NET內存管理機制

2023-05-12 07:38:46

Python基準測試性能分析

2017-03-20 13:43:51

Node.js內存泄漏

2017-03-19 16:40:28

漏洞Node.js內存泄漏

2024-04-10 13:59:44

JavaScript內存

2009-06-10 22:03:40

JavaScript內IE內存泄漏
點贊
收藏

51CTO技術棧公眾號

亚洲欧美日产图| 国产精品www| 无码人妻一区二区三区一| 欧美hdxxxxx| 91看片淫黄大片一级| 国产精品久久久久久久久借妻| 国产调教在线观看| 网站一区二区| 欧美综合视频在线观看| 亚洲五码在线观看视频| 日韩一二三四| 国产一区二区三区免费观看| 2019亚洲男人天堂| 国产在线观看免费视频软件| 欧美精品中文字幕亚洲专区| 欧美日韩视频在线一区二区 | 一区二区三区视频在线观看免费| 成人av福利| 久久嫩草精品久久久精品| 国产这里只有精品| 日韩精品一区二区亚洲av| 98精品视频| 亚洲欧美国产一本综合首页| 99热这里只有精品2| 精品免费av在线| 亚洲成人中文在线| 热这里只有精品| 国产污视频在线| 99视频精品在线| 91日韩久久| 91肉色超薄丝袜脚交一区二区| 国产一区二区三区的电影| 成年人精品视频| 女女互磨互喷水高潮les呻吟| 9l视频自拍蝌蚪9l视频成人| 欧美精品久久99久久在免费线| 亚洲精品久久久久久久蜜桃臀| 麻豆视频在线播放| 国产精品青草综合久久久久99| 另类视频在线观看+1080p| www.蜜臀av| 国产在线看一区| 国产精品99久久久久久白浆小说| 国产情侣在线视频| 在线视频观看日韩| 欧美精品激情视频| 久久这里只有精品国产| 无码一区二区三区视频| 色偷偷9999www| 亚洲最大成人综合网| 国产一区二区三区天码| 亚洲欧美另类在线观看| 中文字幕在线观看的网站| 久久a爱视频| 亚洲激情 国产| 免费a v网站| 久久男人av| 日韩福利在线播放| 精品无码人妻一区| 国产传媒欧美日韩成人精品大片| 国产手机视频精品| 日本少妇高潮喷水xxxxxxx| 亚洲区小说区| 国产亚洲视频在线观看| 亚洲精品成人av久久| 日韩av有码| 久久亚洲影音av资源网| 国产suv一区二区三区| 亚洲国产老妈| 欧美激情综合亚洲一二区| 久久久久亚洲av片无码下载蜜桃| 精品动漫3d一区二区三区免费版 | 青青在线视频免费观看| 羞羞视频在线免费国产| 亚洲一区在线观看免费观看电影高清 | 激情在线观看视频| 嫩呦国产一区二区三区av| 欧美一级理论性理论a| 国产乱淫av片| 亚洲涩涩av| 色狠狠久久aa北条麻妃| 精品人妻伦九区久久aaa片| 欧美日韩视频| 日本久久精品视频| 亚洲视频一区在线播放| 国产不卡一区视频| 欧美日韩亚洲一区二区三区四区| av电影在线观看| 亚洲乱码国产乱码精品精98午夜| 97超碰在线人人| 韩国美女久久| 51精品国自产在线| 美女又爽又黄视频毛茸茸| 欧美日韩国产一区二区三区不卡| 久久夜色精品国产亚洲aⅴ| jizz国产免费| 美腿丝袜亚洲三区| 国产成人免费电影| 福利在线播放| 亚洲成人一二三| 九九视频精品在线观看| 免费看日产一区二区三区| 亚洲人成欧美中文字幕| 午夜免费激情视频| 老**午夜毛片一区二区三区| 91在线视频精品| 麻豆app在线观看| 亚洲精品视频在线看| 粗暴91大变态调教| 91精品短视频| 中文字幕久久亚洲| 免费日韩一级片| 国产精品自拍在线| 日本不卡二区高清三区| 久草成色在线| 6080日韩午夜伦伦午夜伦| 无码人妻精品一区二区三区温州| 国产精品不卡| 国产精品吊钟奶在线| 亚洲欧美激情在线观看| 一区视频在线播放| 成年人在线观看视频免费| 欧美毛片免费观看| 九九九久久久久久| 136福利视频导航| 久久品道一品道久久精品| 国产成a人亚洲精v品在线观看| 丁香婷婷久久| 亚洲人av在线影院| 狠狠躁夜夜躁人人爽天天高潮| 国产在线视视频有精品| 亚洲一区二区三区四区中文| 粉嫩一区二区| 亚洲精品www| 久久久综合久久| 国产电影精品久久禁18| 国产又爽又黄ai换脸| 最新日韩三级| 亚洲欧美日韩网| 日韩字幕在线观看| 成人av第一页| 欧美在线一区视频| 超碰在线亚洲| 久久久久久久久久久久久久久久久久av | 午夜欧美性电影| 久久毛片亚洲| 亚洲色图25p| 午夜一区二区三区四区| 久久久青草青青国产亚洲免观| 国产特级淫片高清视频| 久久九九热re6这里有精品| 国自产精品手机在线观看视频| 午夜精品久久久久久久99 | 在线观看成人免费| 国产电影一区二区| 美女扒开尿口让男人操亚洲视频网站| 亚洲最新av网站| 国产精品成人免费在线| 99国产精品久久久久久| 五月精品视频| 成人午夜影院在线观看| 超碰91在线观看| 日韩精品视频在线| 波多野结衣激情视频| 欧美高清一级片在线观看| www.久久久精品| 亚洲精品久久| 国产一区福利视频| 成人片免费看| 日韩在线精品视频| 精品人妻久久久久一区二区三区 | 中文字幕亚洲自拍| 国产免费黄色网址| 亚洲一区二区三区自拍| 老司机免费视频| 日韩精品五月天| 中文字幕在线亚洲三区| baoyu135国产精品免费| 欧美在线观看网址综合| 成人性生交大片免费看午夜 | 国产精品久久久久一区二区三区厕所| 成人亚洲激情网| 97人澡人人添人人爽欧美| 亚洲欧美日韩第一区| 中文字幕av网站| 亚洲精品一二三区| 一卡二卡三卡四卡| 国产一区美女在线| 2022亚洲天堂| 欧美高清在线| 久久综合一区二区三区| 成人黄色免费观看| 久久久久免费视频| av中文在线| 精品国产乱码久久久久久1区2区 | 岛国在线视频网站| 中文字幕日韩精品有码视频| www.97av.com| 在线精品观看国产| 久久精品女人毛片国产| 国产欧美日韩亚州综合| 亚洲成a人无码| 青青青伊人色综合久久| www.日本少妇| 色天天综合网| 欧美视频1区| 91成人噜噜噜在线播放| 国产精品视频大全| 黄色污网站在线观看| 久久久成人精品视频| 天堂v视频永久在线播放| 欧美一三区三区四区免费在线看| www.国产色| 一区二区三区久久| 男人天堂资源网| 久久免费看少妇高潮| 无码人妻一区二区三区精品视频| 日韩电影在线看| 国产又黄又大又粗视频| 欧美视频网站| 小说区视频区图片区| 黑人操亚洲人| 麻豆av一区| 欧美三级午夜理伦三级小说| 91最新国产视频| 狂野欧美性猛交xxxx| 欧洲午夜精品久久久| 岛国片av在线| 欧美高跟鞋交xxxxxhd| 午夜在线小视频| 伊人青青综合网站| 激情小视频在线观看| 亚洲精品videossex少妇| 日韩一级片免费| 日韩情涩欧美日韩视频| 国产精品永久久久久久久久久| 91精品办公室少妇高潮对白| 特级毛片www| 精品久久久久久久中文字幕| 日韩精品久久久久久久| 亚洲综合在线视频| 免费无码毛片一区二区app| 自拍偷在线精品自拍偷无码专区 | 国产在线久久久| 欧美亚洲福利| 成人黄色激情网| 国产精品亚洲四区在线观看| 成人一区二区电影| 亚洲热av色在线播放| 成人激情黄色网| 9999在线精品视频| 91高跟黑色丝袜呻吟在线观看| 91麻豆精品| 97中文在线观看| 高清日韩欧美| 久久久精品动漫| 美女久久久久| 亚洲精品视频一二三| 国产精品国内免费一区二区三区| 一区二区三区观看| 影音先锋日韩精品| 国产片侵犯亲女视频播放| 影音先锋中文字幕一区二区| 奇米精品一区二区三区| 久久精品成人| 91福利免费观看| 国产精品综合一区二区三区| 年下总裁被打光屁股sp | 奇米影视7777精品一区二区| 久热精品在线观看视频| 国产精品性做久久久久久| 中文字幕18页| 国产亚洲福利社区一区| 国产黄色片在线| 一区二区免费视频| 国产精品久久久久久久妇| 91久久精品国产91性色tv| 一区二区三区日| 亚洲成人精品av| 成人亚洲综合天堂| 欧美日韩国产成人| 日韩三区免费| 亚洲综合精品一区二区| 精品久久ai| 一级二级三级欧美| 激情视频一区| 欧美两根一起进3p做受视频| 韩国欧美国产一区| 亚洲观看黄色网| 国产精品久久久久一区二区三区共| 在线免费观看亚洲视频| 第一福利永久视频精品| 在线观看亚洲一区二区| 欧美不卡一区二区三区| 经典三级在线| 欧美精品激情在线观看| 国产福利91精品一区二区| 国产麻豆乱码精品一区二区三区| 欧美日韩激情| 老太脱裤让老头玩ⅹxxxx| 欧美aⅴ一区二区三区视频| 亚洲成a人无码| 中文字幕一区av| 日韩一区二区视频在线| 91精品国产综合久久精品app| 午夜成人鲁丝片午夜精品| 久久精品99国产精品酒店日本 | 国产黄色免费在线观看| 欧美大学生性色视频| 五月激情久久| 好看的日韩精品| 亚洲一区 二区 三区| 欧美黑人又粗又大又爽免费| 成人性生交大片免费看视频在线| 一二三四在线观看视频| 婷婷开心激情综合| 草草视频在线播放| 色偷偷888欧美精品久久久| 欧美大片1688| 狠狠干一区二区| 欧美特黄视频| 三级黄色片播放| 国产精品女主播av| 手机看片久久久| 亚洲精品国产电影| 欧美xxxx黑人又粗又长| 91精品中文在线| 日韩精品影视| 黄色免费网址大全| 国产亚洲欧美日韩俺去了| 青青操免费在线视频| 欧美成人vps| 伊人精品影院| 91在线短视频| 国产综合精品一区| 国产黄色一区二区三区| ...av二区三区久久精品| 中国女人真人一级毛片| 亚洲人成绝费网站色www| 奇米777日韩| 日本一区二区三区免费观看| 国产日本精品| 五月婷婷综合在线观看| 欧美日韩亚洲高清| 九色视频网站在线观看| 日韩av免费看网站| 国内成人精品| 久久久久久久久久一区二区| 国产精品入口麻豆九色| 在线观看中文字幕码| 中文字幕亚洲无线码在线一区| 精品国产黄a∨片高清在线| 亚洲一区二区免费视频软件合集| 蜜臀99久久精品久久久久久软件| 日韩av片在线免费观看| 51精品视频一区二区三区| 在线视频国产区| 国产精华一区| 国产视频欧美| 亚洲区免费视频| 欧美系列亚洲系列| 黄色av免费在线| 成人动漫视频在线观看免费| 精品91在线| b站大片免费直播| 欧美日韩国产在线播放网站| 米奇精品一区二区三区| 99中文字幕| 久久av一区二区三区| 国产又大又粗又爽的毛片| 欧美日韩精品免费| 中文在线观看免费| 精品久久久久久乱码天堂| 视频一区二区不卡| 夫妻性生活毛片| 亚洲精品在线免费播放| 芒果视频成人app| 精品嫩模一区二区三区| 成人av午夜影院| 中文字幕一区二区三区免费看| 久久国产精品电影| 激情亚洲另类图片区小说区| 国产成人无码一二三区视频| 国产精品理伦片| 欧美 日韩 国产 成人 在线| 国产成人精品999| 欧美成人首页| 高潮毛片无遮挡| 日韩午夜激情av| 深夜成人福利| 日本成人在线不卡| 久久久激情视频| 性欧美8khd高清极品| 日韩免费观看高清| 欧美 日韩 国产一区二区在线视频 | 成人精品电影在线观看| 波多野结衣视频网址| 欧美黄色小视频| 久久中文亚洲字幕| 添女人荫蒂视频|