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

對比Ruby和Python的垃圾回收

開發 后端 前端
如果想要對Ruby垃圾回收器以及內部原理有更加深入的了解,你可以在我即將出版的新書《Ruby Under a Microscope》中找到答案。

注:這篇文章基于我在布達佩斯的RuPy大會上所作的演講。我覺得與其直接將幻燈片發布出來,不如在我還有印象的時候將它寫成博客來的更有意義。同樣,我會在將來發布RuPy大會的視頻鏈接。我計劃將在RubyConf大會上發表類似的演講,除了有關于Python的部分,并且將對比MRI,JRuby以及Rubinius的垃圾回收器是怎樣工作的。

如果想要對Ruby垃圾回收器以及內部原理有更加深入的了解,你可以在我即將出版的新書《Ruby Under a Microscope》中找到答案。

 

如果算法和業務邏輯是一個人的大腦,那么垃圾回收機制是人體的哪個器官呢?

在”Ruby Python”大會上,我想對比Ruby和Python內部的垃圾回收機制是一件很有意思的事情。在開始之前,我們為什么要討論垃圾回收機制呢?畢竟這是一個最迷人的,最令人激動的主題,不是嗎?你們有多少人對垃圾回收機制感到興奮?(許多的大會參與者竟然舉起了雙手!)

最近,在Ruby社區中有一篇帖子,關于怎樣通過修改Ruby GC的設置來提高單元測試的速度。這棒極了!通過減少GC垃圾回收的處理來提高測試的速度,這是一件很好的事情,但是不怎的,GC不會真正的讓我感到興奮。就如咋一看就感覺令人厭煩,枯燥的技術帖子。

事實上,垃圾回收是一個令人著迷的主題:垃圾回收算法不僅是計算機科學歷史一個重要的部分,更是前沿研究的一個主題。例如,MRI Ruby解釋器使用的”Mark Sweep”算法已經超過了50年的歷史,與此同時,在Rubinius解釋器中使用的一種垃圾回收算法,是在Ruby中的另一種實現方式,這種算法僅僅是在2008才被研究出來。

然而,”垃圾回收”的這個名稱,是非常的不恰當的。

應用程序的心臟

垃圾回收系統要做的不僅僅是”回收垃圾”。事實上,它主要完成三個重要任務:

  • 為新的對象分配內存
  • 標記垃圾對象
  • 回收垃圾對象占用的內存

想象你的應用程序是一個人的身體:所有你寫的優雅的代碼,你的商業邏輯,你的算法,將會成為你的應用程序的大腦或智能。與此類似的,你認為垃圾回收器會成為身體的哪一個部分呢?(我從大會的聽眾中得到了很多有趣的答案:腎,白細胞)

heart-polishefwefwefwefwef

我認為垃圾回收器是一個應用的心臟。正如心臟為身體的其他部分提供血液和養料一樣,垃圾回收器提供內存和對象供程序使用。如果你的心臟停跳,你將活不了幾秒。如果垃圾回收器停止運行或者變慢,就像動脈阻塞一樣,你的程序將變的慢下來***死掉!

一個簡單的例子

通過例子來驗證理論是一種很好的方式。這里有一個簡單的類,用Python和Ruby寫成,我們可以將它們作為一個簡單的例子:

codfdbfdhhgrthrthrth45t34te

于此同時,兩種代碼如此相似讓我感到非常吃驚:Python和Ruby在表達相同的語義時幾乎沒有差別。但是,兩種語言的內部實現方式是否相同呢?

空閑對象鏈表

在上面的代碼中,當我們調用了Node.new(1)之后,ruby將會做什么?也就是說,Ruby怎樣創建一個新的對象?

令人驚訝的是,Ruby做的事情非常少!事實上,在代碼運行之前,Ruby解釋器會提前創建成千上萬的對象放置到一個鏈表中,這個鏈表被稱為”空閑對象鏈表”(free list)。空閑對象鏈表(`free list`)在概念上看起來像下面的樣子:

frgfbfgthrthrthee-list1

每一個白色方塊可以想象成一個預創建的,沒有使用的Ruby對象。當我們調用Node.new,Ruby簡單的使用一個對象,并且將它的引用返回給我們:

freegfhhrthrth-list2

在上圖中,左邊的灰色方塊代表一個活躍的Ruby對象,被我們的代碼所使用,而其余的白色方塊代碼沒有使用的對象。(注意:當然,圖中是一種簡化的實現版本。事實上,Ruby將會使用另外一個對象保存字符串”ABC”,使用第三個對象保存Node的定義,以及其他的對象保存代碼處理過的抽象語法數”AST”,等待。)

如果我們再次調用Node.new,Ruby僅僅返回另外一個對象的引用。

frefbhfhthrte-list3

 

[[114654]]

約翰麥卡錫在1960年在Lisp中***實現了垃圾回收機制

這中使用預創建對象鏈表的簡單算法發明于50多年前,它的作者是傳說中的計算機科學家,約翰麥卡錫,正是他實現了最初的Lisp解釋器。Lisp不僅是***個函數式編程語言,并且包含了計算機科學中許多突破性的進展。其中之一便是通過垃圾回收機制自動管理內存。

標準版Ruby,也就是”Matz’s Ruby Interpreter”(MRI),使用了一種類似于約翰麥卡錫在1960年實現的Lisp的垃圾回收算法。就像Lisp一樣,Ruby會預先創建對象并且在你創建對象或值的時候返回對象的引用。

在Python中分配對象內存

從上面我們可以看出,Ruby會預先創建對象,并且保存在空閑對象鏈表(free list)中。那么Python呢?

當然Python內部也會由于各種原因使用空閑對象鏈表(它使用鏈表循環確定對象),Python為對象和值分配內存的方式常常不同于Ruby。

假設我們創建一個Node對象使用Python:

pythobvdfbfdbdfbn1

Python不同于Ruby,當你創建對象的時候,Python會立即向操作系統申請分配內存。(Python 事實上實現了自己的內存分配系統,它在操作系統內存堆上提供了另外一層抽象,但是今天沒有事件深入探討。 )

當我們創建第二個對象時,Python將再次向操作系統申請更多的內存:

python2fbfdhhrt

看起來相當簡單,當我們創建Python對象的時刻,將花費事件申請內存。

[[114657]]

Ruby將沒有用的對象扔的到處都是,直到下一個垃圾回收過程

#p#

Ruby開發者生活在一個臟亂的房間

回到Ruby,由于我們分配越來越多的對象,Ruby將繼續為我們從空閑對象鏈表(free list)獲取預分配對象。因此,空閑對象鏈表將變得越來越短:

fregergregrgge-list4

或者更短:

freederfreferfg-list5

請注意,我將一個新的值賦給了n1,Ruby會遺留下舊的值。”ABC”, “JKL”和”MNO”等結點對象會依然保留在內存中。Ruby不會立即清理舊的對象盡管程序不再使用!作為一名Ruby開發者就像生活在一個臟亂的房間,衣服隨意的仍在地板上,廚房的水槽中堆滿了臟盤子。作為一個Ruby開發者,你必須在一大堆垃圾對象中去工作。

[[114660]]

當你的程序不在使用任何對象的時候,Python會立刻進行清理。

Python開發者生活在一所整潔的房子

垃圾回收機制在Python和Ruby中迥然不同,讓我們回到前面三個Python中Node對象的例子:

pythfgbfgbfgbnfgon3b

內部的,每當我們新建一個對象,Python將在對象對應的C語言結構中保存一個數字,叫做引用技術。最初,Python將它的值設為1。

pytefwefwefwefghon4

值為1表明每個對象有一個指針或引用指向它。假設我們創建一個新的對象,JKL:

pythgbfgbfbfgbon5

正如前面所說,Python將”JKL”的引用計數設置為1。同樣注意到我們改變n1指向了”JKL”,不再引用”ABC”,同時將”ABC”的引用計數減少為0。

通過這一點,Python垃圾回收器將會立即執行!無論何時,只要一個對象的引用計數變為0,python將立即釋放這個對象,并且將它的內存返回給操作系統。

pythgfbfgbfgnbfgnon6

上圖中,Python將回收”ABC”對象的內存。記住,Ruby只是將舊的對象遺留在那里并且不去釋放它們占用的內存。

這種垃圾回收算法被稱為”引用計數”,由喬治柯林斯發明于1960年。非常巧合的是在同一年約翰麥卡錫大叔發明了”空閑對象鏈表算法”。正如Mike Bernstein在Ruby Conference大會上所說”1960年是屬于垃圾回收器的…”。

作為一個Python開發者,就像生活在一個整潔的房間中。你知道,你的室友有些潔癖,他會把你使用過的任何東西都清洗一遍。你把臟盤子,臟杯子一放到水槽中他就會清洗。

現在看另外一個例子,假設我們讓n2和n1指向同樣的結點:

pytvwefwefwefhon8

上圖左邊可以看到,Python減少了”DEF”的引用計數并且立即回收了”DEF”對象。同時可以看到,由于n1和n2同時指了”JKL”對象,所以它的引用計數變為了2。

標記回收算法

最終臟亂的房間將堆慢垃圾,生活不能總是如此。Ruby程序在運行一段時間之后,空閑對象鏈表最終將被用盡。

mark-fthrthand-sweep1

上圖中所有的預分配對象都被用盡(方塊全部變成了灰色),鏈表上沒有對象可用(沒有剩余的白色方塊)。

此時,Ruby使用了一種由約翰麥卡錫發明的被稱為”標記回收”的算法。首先,Ruby將停止程序的執行,Ruby使用了”停止這個世界,然后回收垃圾”的方式。然后,Ruby會掃描所有的指向對象和值的指針或引用。同樣,Ruby也會迭代虛擬機內部使用的指針。它會標記每一個指針所能到達的對象。在下圖中,我使用了”M”指出了這些標記:

mark-and-swfbdfdfbeep2

上面三個”M”標記的對象為活躍對象,依然被我們的程序使用。在Ruby解釋器內部,通常使用”free bitmap”的數據結構來保存一個對象是否被標記:

mark-anfdgdgdgd-sweep3

Ruby將”free bitmap”保存在一個獨立的內存區域,以便可以更好的利用Unix的”copy-on-write”特性。更詳細的信息,請參考我的另一篇文章《為什么Ruby2.0的垃圾回收器讓我們如此興奮》。

如果活躍對象被標記了,那么其余的便是垃圾對象,意味著它們不再會被代碼使用。在下圖中,我使用白色的方塊表示垃圾對象:

mafdbdffdbrk-and-sweep4

接下來,Ruby將清理沒有使用的,垃圾對象,將它們鏈入空閑對象鏈表(free list):

gfhghfghtrhtrhjjrt-sweet5

在解釋器內部,這個過程非常迅速,Ruby并不會真正的將對象從一個地方拷貝到另一個地方。相反的,Ruby會將垃圾對象組成一個新的鏈表,并且鏈入空閑對象鏈表(free list)。

現在,當我們要創建一個新的Ruby對象的時候,Ruby將為我們返回收集的垃圾對象。在Ruby中,對象是可以重生的,享受著多次的生命!

標記回收算法 vs. 引用計數算法

咋一看,Python的垃圾回收算法對于Ruby來說是相當讓人感到驚訝的:既然可以生活在一個整潔干凈的房間,為什么要生活在一個臟亂的房間呢?為什么Ruby周期性的強制停止程序的運行去清理垃圾,而不使用Python的算法呢?

然而,引用計數實現起來不會像它看起來那樣簡單。這里有一些許多語言不愿像Python一樣使用引用計數算法的原因:

  • 首先,實現起來很困難。Python必須為每一個對象留有一定的空間來保存引用計數。這會導致一些細微的內存開銷。但更遭的是,一個簡答的操作例如改變一個變量或引用將導致復雜的操作,由于Python需要增加一個對象的計數,減少另一個對象的計數,有可能釋放一個對象。
  • 其次,它會減慢速度。盡管Python在程序運行過程中垃圾回收的過程非常順暢(當你把臟盤子放到水槽后,它立馬清洗干凈),但是運行的并不十分迅速。Python總是在更新引用計數。并且當你停止使用一個巨大的數據結構時,例如一個包含了大量元素的序列,Python必須一次釋放許多對象。減少引用計數可能是一個復雜的,遞歸的過程。
  • ***,它并不總是工作的很好。在我演講的下一部分,也就是下一篇帖子中能看到,引用計數不能處理循環引用數據結構,它包含循環引用。

下一次…

下周我將發布演講的其他部分。我將討論Python怎樣處理循環引用數據結構,以及在即將到來的Ruby2.1中,垃圾回收器是怎樣工作的。

原文鏈接: Pat Shaughnessy   翻譯: 伯樂在線 - geekerzp

譯文鏈接: http://blog.jobbole.com/60900/

責任編輯:林師授 來源: 伯樂在線
相關推薦

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2022-01-20 10:34:49

JVM垃圾回收算法

2022-10-08 18:25:22

Python內存管理GC

2021-11-05 15:23:20

JVM回收算法

2021-02-04 10:43:52

開發技能代碼

2017-06-12 17:38:32

Python垃圾回收引用

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2021-01-04 10:08:07

垃圾回收Java虛擬機

2017-08-17 15:40:08

大數據Python垃圾回收機制

2021-03-03 08:13:57

模式垃圾回收

2020-07-09 08:26:42

Kubernetes容器開發

2012-12-18 13:57:42

.NetC#

2019-12-02 16:23:03

Python編程語言“垃圾”回收

2021-05-27 21:47:12

Python垃圾回收

2009-12-30 10:14:29

JVM垃圾回收

2022-06-22 09:54:45

JVM垃圾回收Java

2009-07-06 17:34:22

Java垃圾回收

2020-03-13 08:00:00

.NET對象清理垃圾回收

2024-08-20 16:27:54

2023-05-12 07:38:46

Python基準測試性能分析
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久久99| 亚洲在线不卡| 无码人妻精品一区二区| 亚洲人成伊人成综合图片| 亚洲va中文字幕| 国产精品午夜av在线| 久久黄色小视频| 老牛影视av一区二区在线观看| 香蕉影视欧美成人| 日韩中文一区二区三区| 亚洲视频久久久| 综合五月婷婷| 日韩精品视频免费在线观看| 可以免费在线看黄的网站| 麻豆传媒视频在线观看| 国产剧情一区二区| 91国产美女在线观看| 亚洲性猛交xxxx乱大交| 91精品在线免费视频| 亚洲一二三区在线观看| 日本10禁啪啪无遮挡免费一区二区| 69av视频在线观看| 欧美a级一区| 亚洲男女自偷自拍图片另类| 怡红院亚洲色图| 男人添女人下部高潮视频在线观看| 99久久免费视频.com| 国产精品一二区| 国产亚洲精品成人| 日韩激情一区| 精品久久久久久久久久久久久久久久久 | 香蕉精品视频在线| 免费看日韩av| 久久激情五月激情| 欧美亚洲第一区| 999福利视频| 网红女主播少妇精品视频| 欧美精品粉嫩高潮一区二区| 啊啊啊一区二区| 污污的网站在线看| 中文字幕欧美国产| 久久精品日产第一区二区三区乱码 | 亚洲乱码av中文一区二区| 一级片黄色免费| 欧美日韩尤物久久| 亚洲成人av在线电影| 在线播放豆国产99亚洲| 国内在线精品| 91亚洲永久精品| 亚洲综合国产精品| 在线观看一二三区| 视频一区免费在线观看| 91精品国产777在线观看| 丝袜 亚洲 另类 欧美 重口| 成人精品久久| 亚洲一级片在线看| 日本免费福利视频| 国产伦理久久久久久妇女| 欧美日韩国产精选| 成人免费在线观看视频网站| 韩国主播福利视频一区二区三区| 亚洲电影一级黄| 日本福利视频网站| 羞羞的视频在线观看| 国产精品久久久久久久久免费桃花| 日本10禁啪啪无遮挡免费一区二区 | 香蕉视频黄色在线观看| 久久精品国产亚洲5555| 精品日韩99亚洲| 国产老头和老头xxxx×| www.91精品| 3d成人h动漫网站入口| 中文字幕亚洲乱码| 欧美videos粗暴| 欧美日韩亚洲综合在线| 天天爽夜夜爽一区二区三区| 国产情侣一区二区三区| 在线不卡的av| 亚洲精品乱码久久久久久动漫| 国产精品成人**免费视频| 欧美精品vⅰdeose4hd| 国产在线观看中文字幕| 电影一区中文字幕| 日韩一级高清毛片| 成人啪啪18免费游戏链接| 精品按摩偷拍| 亚洲美女久久久| 91精品国自产在线| 99久久夜色精品国产亚洲96| 美女少妇精品视频| 日本中文字幕在线免费观看| 久久久精品日韩| 国产精品自拍网| va视频在线观看| 成人av电影在线网| 蜜桃传媒视频麻豆一区| 97超碰人人在线| 亚洲人成影院在线观看| 精品少妇人欧美激情在线观看| 交100部在线观看| 在线观看欧美精品| 超碰中文字幕在线观看| 欧美电影完整版在线观看| 亚洲天堂一区二区三区| 91 在线视频| 亚洲伦理精品| 国产综合久久久久| 色网站免费观看| 欧美国产精品一区二区三区| 日日噜噜夜夜狠狠久久丁香五月| 98色花堂精品视频在线观看| 日本黄色一区二区| 亚洲区 欧美区| 制服丝袜日韩| 欧美激情第1页| 中文字幕在线欧美| 国产真实乱对白精彩久久| 国产无套精品一区二区| 天堂资源在线中文| 精品久久久一区| 亚洲精品成人在线播放| 蜜桃一区二区| 久精品免费视频| 尤物视频免费观看| 成人精品在线视频观看| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 免费污视频在线| 欧美三级电影一区| 国产不卡一二三| 亚洲成人二区| 日韩免费观看av| 国产刺激高潮av| 国产精品福利一区二区| 熟妇人妻va精品中文字幕| 亚洲成av人片在线观看www| 揄拍成人国产精品视频| 韩国av免费观看| 国产成人av在线影院| 午夜精品福利一区二区| 成人三级高清视频在线看| 欧美电影一区二区三区| 亚洲av无码一区二区三区人| 黄色亚洲在线| 91亚色免费| 欧洲不卡视频| 欧美综合亚洲图片综合区| 少妇被狂c下部羞羞漫画| 欧美韩日精品| 91久久精品美女高潮| 91ph在线| 在线国产电影不卡| 久久久久久久久久久国产精品| 国产综合婷婷| 国产99在线免费| 污污片在线免费视频| 91麻豆精品国产91久久久 | 亚洲区小说区图片区qvod| 久久免费福利视频| 亚洲xxx在线| 亚洲免费看黄网站| 亚洲热在线视频| 中文字幕日韩欧美精品高清在线| 国产日韩精品一区二区| 在线观看黄色av| 欧美日韩精品三区| 午夜精品久久久久99蜜桃最新版| 日本系列欧美系列| 亚洲高清在线观看一区| 99亚洲伊人久久精品影院| 伊人伊成久久人综合网站| 自拍偷拍色综合| 国产精品白丝在线| 在线观看av免费观看| 欧美1区2区视频| 国产精品久久久久久久免费大片 | 中文在线字幕av| 中文字幕免费不卡| xxxx在线免费观看| 中文视频一区| 国产精品夜夜夜一区二区三区尤| 97蜜桃久久| 亚洲欧美激情视频| 国产偷人爽久久久久久老妇app | 国产黑丝在线观看| 久久国产精品99国产| 日本一区二区三区视频免费看| 欧美特黄aaaaaaaa大片| 中文字幕亚洲欧美一区二区三区| 在线视频欧美亚洲| 一区二区三区四区亚洲| 尤物网站在线观看| 石原莉奈一区二区三区在线观看| 日韩欧美精品久久| 中文字幕成人| 欧美激情国产精品| 欧美在线一卡| 欧美日韩国产精选| 国产无套粉嫩白浆内谢| www激情久久| 女人高潮一级片| 亚洲精品女人| 亚洲欧美精品在线观看| 91成人入口| 全亚洲最色的网站在线观看| 精品视频二区| 欧美精品1区2区| 欧洲第一无人区观看| 成人精品免费看| 久久久久久久久久久久久久国产| 欧美日韩国产高清电影| 91九色在线免费视频| 天天综合网站| 欧美美女18p| 精品美女视频在线观看免费软件| 日韩欧美中文一区二区| 男人天堂av在线播放| 亚洲精品成人少妇| 久久精品成人av| 国产精品一级黄| 日韩av手机版| 亚洲精品字幕| 超碰免费在线公开| 日韩欧美中文字幕电影| 91亚洲精品一区二区| 一区二区乱码| 不卡av电影院| 风间由美一区| 亚洲国产精品人久久电影| 夜夜躁狠狠躁日日躁av| 欧美视频在线免费| 麻豆changesxxx国产| 日本一区二区三区在线观看| 岛国精品资源网站| 国产精品影视在线| 污污动漫在线观看| 丝袜美腿亚洲一区二区图片| www插插插无码免费视频网站| 欧美激情777| 日韩欧美视频一区二区| 黄色成人美女网站| 国产欧美精品xxxx另类| 不卡av播放| 91精品国产91久久久久福利| 18av在线视频| 精品国产欧美成人夜夜嗨| 国产高清在线| 亚洲欧美激情视频| 色吊丝在线永久观看最新版本| 精品国产制服丝袜高跟| 国产jzjzjz丝袜老师水多| 欧美日韩国产综合久久| 中文字幕人妻一区二区在线视频| 色婷婷久久久综合中文字幕| 日韩黄色一级大片| 性久久久久久久久久久久| 2025国产精品自拍| 综合久久久久久久| 国产熟妇搡bbbb搡bbbb| 97精品电影院| 老熟妇精品一区二区三区| 久久精品久久综合| 亚洲精品20p| 三级欧美在线一区| 日日碰狠狠躁久久躁婷婷| 一区二区91| 欧美 丝袜 自拍 制服 另类| 中日韩视频在线观看| 日本在线xxx| 精品二区久久| www.夜夜爱| 亚洲综合中文| 中文字幕一区二区三区在线乱码 | 美国一级黄色录像| 久久久精品影视| 中文字幕欧美激情极品| 国产精品灌醉下药二区| 欧美大片xxxx| 亚洲午夜久久久久久久久电影院| 日本三级理论片| 日韩欧美成人精品| 中文字幕人妻精品一区| 9191久久久久久久久久久| 精品黑人一区二区三区国语馆| 亚洲精品国产免费| 日本在线天堂| 97成人精品视频在线观看| 校园春色亚洲色图| 91精品国产综合久久男男| 1313精品午夜理伦电影| 久久99导航| 欧美精品一区二区三区精品| 永久久久久久| 99热免费精品在线观看| aa免费在线观看| 久久电影国产免费久久电影 | 久一区二区三区| 在线观看亚洲a| 性中国xxx极品hd| 亚洲男人天堂视频| 麻豆免费在线观看| 午夜精品一区二区三区在线播放| 刘亦菲一区二区三区免费看| 国产精品一区二区3区| 99这里只有精品视频| 日本一区视频在线播放| 中文字幕一区二区精品区| 国产91在线免费| 久久99精品国产.久久久久久| 国产一级片自拍| 91丨九色porny丨蝌蚪| 久久一级免费视频| 午夜欧美一区二区三区在线播放| 亚洲成熟少妇视频在线观看| 欧美性色黄大片| 亚洲美女福利视频| 亚洲男人天堂2019| 免费**毛片在线| 欧美自拍大量在线观看| 国产精品一区二区三区av| 欧美午夜视频在线| 午夜精品网站| 中文字幕国产传媒| 成人av网站免费观看| 欧美大片xxxx| 在线免费观看不卡av| 午夜精品久久久久久久91蜜桃| 日韩成人在线网站| 制服丝袜在线播放| 国产精品黄页免费高清在线观看| 大型av综合网站| 天天干天天操天天干天天操| 三级久久三级久久久| 强迫凌虐淫辱の牝奴在线观看| 亚洲欧美国产三级| 最近中文字幕在线免费观看| 亚洲精品二三区| 免费影视亚洲| 亚洲aaa激情| 91欧美国产| 丝袜制服一区二区三区| 91免费国产在线| 五月天婷婷丁香| 日韩精品一区二区三区视频| 理论片午午伦夜理片在线播放| 日韩av不卡电影| 婷婷成人影院| 人妻夜夜添夜夜无码av| 国产精品白丝av| 五月天色婷婷丁香| 欧美日韩一区二区三区视频| 激情小视频在线观看| 亲子乱一区二区三区电影| 日本成人a网站| 奇米影视亚洲色图| 国产白丝网站精品污在线入口| 亚洲av鲁丝一区二区三区| 91麻豆精品国产91久久久久| 亚洲xxxxxx| 91精品国产综合久久香蕉922| 日韩精品久久| 奇米影视四色在线| 国产精品欧美综合在线| 在线播放精品视频| 色青青草原桃花久久综合| 欧美激情福利| 佐佐木明希av| 国产精一区二区三区| 激情五月少妇a| 亚洲精品一区二区在线观看| heyzo在线播放| 国产一区二区三区四区五区在线| 亚洲精品乱码久久久久久蜜桃麻豆| 亚洲av成人片无码| 色综合视频一区二区三区高清| 偷拍自拍在线| 青青草原成人在线视频| 久久av资源| 久久国产精品国产精品| 亚洲欧洲日产国码二区| a天堂视频在线| 91精品国产精品| 精品国产一区二区三区久久久蜜臀| 91n.com在线观看| 中文字幕一区av| 亚洲AV无码乱码国产精品牛牛 | 91久久精品国产| 91成人看片| av黄色一级片| 欧美怡红院视频| 日本性爱视频在线观看| 精品无人乱码一区二区三区的优势| 午夜亚洲福利在线老司机| av女人的天堂| 日韩午夜在线观看视频| 黄色aa久久| 亚洲日本欧美在线| 成人免费看的视频| 男人的天堂av网站| 久久国产精品亚洲| 欧美久久精品|