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

淺析提高.NET垃圾回收性能的幾種方法

開發 后端
這里將分析提高.NET垃圾回收性能的幾種方法,并詳細介紹.NET垃圾回收機制,希望能對大家有所幫助。

對于GC垃圾回收,很多人不會陌生。我們這里講的是提高.NET垃圾回收機制性能的幾種方法,通過研究.NET垃圾回收機制,可以提高程序執行效率。

本文值得閱讀嗎?

通過本文你會理解如何通過finalize dispose模式提升GC算法的性能。下圖顯示完成.NET垃圾回收機制優化后的對比。

完成本文后的對比

介紹和目標

問一下每一個開發人員,在.Net類中清除非托管資源的***位置在哪里?他們中的70%的人員會說放在析構函數。盡管看起來好象是最有希望的位置,但那對性能和內存消耗有巨大的影響。在析構函數中寫清理代碼會導致垃圾回收器再次調用,而且多次(multifold times)影響性能。

為了驗證上面所說,我們先從理論開始,然后我們會真實的看到使用析構函數時如何影響性能。因此我們要理解世代的概念,然后再去看finalize dispose模式。

我相信本文會改變你關于析構函數、dispose 和 finalize處理的看法。

請隨時到 http://www.questpond.com下載我的涵蓋.NET、 ASP.NET、 SQLServer、 WCF、 WPF、WWF的免費500個問題和回答的電子書。

假設

本文使用CLR探測器來探測GC如何工作。如果你對CLR探測器不熟悉,在繼續之前請先閱讀DOTNET1.aspx。

感謝Jeffrey Richter 和 Peter Sollich 先生

讓我們以感謝Jeffery Richter作為本文的開始,因為他深入的解釋了垃圾回收算法如何工作。他曾經寫過兩個關于垃圾回收工作方式的傳奇文章。我很想指出Jeffery Richter在MSDN雜志寫的文章,但因為一些原因并沒有在MSDN顯示出來。所以我給出一個非官方的地址,你可以從http://www.cs.inf.ethz.ch/ssw/files/GC_in_NET.pdf下載PDF格式文章。

同時也感謝Peter Sollich先生,他是CLR性能框架師,為CLR探測器寫了詳細的幫助。當你安裝CLR探測器時,請不要忘記閱讀Peter Sollich寫的詳細幫助文檔。在本文中我們會使用CLR探測器驗證使用finalize對垃圾回收器性能的影響。

非常感謝你們的支持,如果沒有讀你們寫的文章,我就不能完成這篇文章,無論何時我都很樂意聽到你們閱讀文章的評論。

垃圾回收器-幕后英雄

如在介紹中所說,把清理代碼放在析構函數會導致垃圾回收器的兩次調用。許多開發人員會聳聳肩說“我們真的需要去關心垃圾回收器(GC)在后臺做了什么嗎?”,對,如果你寫合適的代碼,我們確實不需要關心垃圾回收。垃圾回收器有保證你的應用程序不受影響的***的算法。但是很多時候,你寫代碼的方式和在你代碼中分配/清理內存資源的方式對垃圾回收算法產生了較大的影響。有時這種影響會導致垃圾回收器(GC)很差的性能,進而導致你應用程序很差的的性能。

因此我們先來看一下在垃圾回收器分配和清理內存時都執行了哪些不同的任務。

假如我們有三個類,類A調用了類B,類B調用了類C。

垃圾回收器分配和清理內存

當應用程序***次執行時,預定義內存分配給應用程序。當應用程序創建這3個對象時,它們被賦于一個內存棧上的地址。你可以從下圖中看到對象創建之前和對象創建之后的內存的樣子。如果還有一個對象D要創建,它會從對象C結束處分配地址。

對象創建之前和對象創建之后的內存

在內部,垃圾回收器為了知道哪些對象是可達的要維護一個對象圖。所有的對象屬于主應用程序的根對象,根對象同樣維護著哪些對象分配了哪些內存地址。如果一個對象使用了其他的對象,那么這個對象也要保存它使用的對象的內存地址。例如,在我們的示例中的對象A使用了對象B,所以對象A保存了對象B的內存地址。

對象圖

現在假如對象A從內存中移除,那么對象A的內存被賦于了對象B,對象B的內存被賦于了對象C。內部的內存分配情況如下所示:

內部的內存分配

隨同內存指針的更新,垃圾回收器需要確保它的內部對象圖也隨著新的內存地址更新了。因此對象圖變成了如下所示的樣子。對垃圾回收器有一些工作要做,它需要確保已經不再使用的對象已經從圖中移除,并且還存在的對象的地址已經在對象樹中全部更新了。

對象圖

除應用程序自定義對象外,構成對象圖表的還有.Net對象,那些對象的地址也是要更新的。.Net運行時對象的數量非常大,下圖就是一個簡單的Hello World控制臺應用程序創建的對象的數量,對象的數量約有1000個,更新每一個對象的指針是一個很大的任務。

Hello World控制臺

世代算法今天、昨天和前天

GC(垃圾回收器)使用世代的概念來提升性能。世代的概念是基于人們處理事情的心理的方式。下面的幾點指出人們是如何處理事情的,并且垃圾回收算法是按相同的方式工作:

如果你今天決定要做一些事情,那么很可能今天就把這些事做完。

如果一些事是昨天未決定的,那么很可能這些事情會給予比較低的優先級并且被再一次推遲。

如果一些事是前天未決定的,那么就有很大的可能性這個事被永遠推遲。

GC以同樣的方式思考并且使用下面的假設:

如果一個對象是新創建的,那么它的生命期可能很短。

如果一個對象是原來存在的,它可能會有更長的生命。

所以說,GC做了三個世代的支持(0代,1代和2)

三個世代的支持

0代包括所有新創建的對象,當應用程序創建對象時,這些對象首先被放入0代對象列表中。當0代對象裝滿時,GC需要運行以釋放內存資源,GC開始構建圖表并刪除所有應用程序不再使用的對象。如果一個對象GC不能在0代刪除,那么該對象會被提升為1代。如果在后面的迭代中一個對象不能在1代中刪除,那么它會被提升為2代。.Net運行時支持的***代是2代。

下面是當你運行CLR探測器時關于世代對象的一個簡單顯示。如果你對CLR探測器不了解,請先從DOTNET1.aspx了解CLR的基本知識。

運行CLR探測器

那么,在優化中世代有什么幫助呢

作為世代中的對象,GC會對哪個世代的對象需要被清理做出選擇。如果你記得,前面小節中我們講過關于GC認定對象世代的假設,GC假設新對象具有更短的生命周期。換句話說,GC主要檢查0代的對象,而不是所有世代的所有對象。

如果清理0代對象不能提供足夠的內存,它將繼而清理1代的對象,并依次繼續。這個算法能大幅提升GC的性能。

關于世代的推論

如果有大量的對象在1代或2代區域則說明內存使用沒有優化。

更大的世代1和世代2區域會導致GC算法性能更差。

使用終結器(finalize)/析構函數會導致更多的1代和2代對象

C#編譯器會把析構函數翻譯(重命名)為終結器。如果你使用IDASM查看IL代碼,就會看到析構函數被重命名為終結器(finalize)。所以讓我們先理解為什么實現析構函數會導致更多的對象進入1代和2代區域?,F在來看處理器是如何工作的:

當新對象創建時,它們被放到0代。

當0代區域填滿時,GC運行并清理內存。

如果對象沒有析構函數,那么如果它們不再被使用,GC就把它們清理掉。

如果對象有終結(finalize)方法,GC就把它們放到終結隊列中。

如果對象是可達的,它會被放置到Freachable隊列中,如果對象是不可達的,內存將被收回。

GC完成本次迭代工作。

下一次當GC開始工作時,它會進入Freachable隊列檢查對象是否可達,如果Freachable中的對象不可達,內存就會被聲名為可收回的。

析構函數的對象

換句話說,有析構函數的對象會在內存中存活更長的時間。

讓我們來看下實際的情況,下面是一個簡單的有析構函數的類。

  1. class clsMyClass
  2. {
  3. public clsMyClass()
  4. {
  5. }
  6. ~clsMyClass()
  7. {
  8. }
  9. }

讓我們用CLR探測器來監視創建100*10000個對象時的情況。

  1. for (int i = 0; i < 100 * 10000; i++)
  2. {
  3. clsMyClass obj = new clsMyClass();
  4. }

如果使用CLR探測器的內存地址報表,會看到大量的對象在1代。

CLR探測器的內存地址報表

現在去掉析構函數后再做一遍。

  1. class clsMyClass
  2. {
  3. public clsMyClass()
  4. {
  5. }
  6. }

你可以看到在0代對象大量增加,同時1代和2代對象很少。

0代對象

如果做一對一的對比,結果如下圖所示:

做一對一的對比

#p#

使用Dispose代替去掉的析構函數

我們可以去掉析構函數而在dispose方法中實現清理代碼。為此要實現‘IDisposable’ 的接口方法,在這寫我們的清理代碼,并如下代碼段所示調用終結方法。

‘SuppressFinalize’指示GC不要調用finalize方法,所以不會發生GC的二次調用。

  1. class clsMyClass : IDisposable
  2. {
  3. public clsMyClass()
  4. {
  5. }
  6. ~clsMyClass()
  7. {
  8. }
  9. public void Dispose()
  10. {
  11. GC.SuppressFinalize(this);
  12. }
  13. }
現在客戶端要確保它要象如下所示調用dispose方法。
  1. for (int i = 0; i < 100 ; i++)
  2. {
  3. clsMyClass obj = new clsMyClass();
  4. obj.Dispose();
  5. }
下圖是使用析構函數和使用dispose時的0代和1代對象如何分布的對比。你會看到0代內存分配有明顯的提升,這標識著更好的內存分配。

內存分布對比

如果開發人員忘記調用Dispose

這不是一個***的世界,我們不能確保在客戶端總是調用了dispose方法。這就是下面的小節中我們要使用Finalize / Dispose模式的原因。

關于這個模式在http://msdn.microsoft.com/en-us/library/b1yfkh5e(VS.71).aspx.有詳細的實現。

下面看起來更象是如何實現finalize / dispose模式。

  1. class clsMyClass : IDisposable
  2. {
  3. public clsMyClass()
  4. {
  5. }
  6. ~clsMyClass()
  7. {
  8. // In case the client forgets to call
  9. // Dispose , destructor will be invoked for
  10. Dispose(false);
  11. }
  12. protected virtual void Dispose(bool disposing)
  13. {
  14. if (disposing)
  15. {
  16. // Free managed objects.
  17. }
  18. // Free unmanaged objects
  19. }
  20. public void Dispose()
  21. {
  22. Dispose(true);
  23. // Ensure that the destructor is not called
  24. GC.SuppressFinalize(this);
  25. }
  26. }

代碼解釋:

我們定義了一個帶布爾參數的Dispose方法,該參數說明是從Dispose中調用還是從析構函數中調用。如果是從’Dispose’方法調用,則釋放所有的托管和非托管的資源。

如果該方法是從析構函數中調用,則只釋放非托管的資源。

在dispose方法中我們禁用了finilize的調用,并且用true參數調用了這個dispose方法。

在析構函數中我們使用false值調用dispose函數。換句話說,我們假定GC會處理好托管的資源并用析構函數調用來清理非托管資源。

換句話說,客戶端沒有調用dispose函數,析構函數會照顧清除非托管資源。

結論

不要在類中寫空的析構函數。

如果你需要清除,使用帶‘SupressFinalize’方法調用的finalize dispose模式。

如果類有公開的dispose方法,確保在客戶端代碼中調用它。

應用程序應該分配在0代區域中的對象比分配在1代和2代區域中的對象更多。如果在1代和2代區域中有更多的對象,標志著很差的GC算法執行。

源代碼

可以在這里找到dispose模式的示例代碼

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Shivprasad koirala

[[6016]]


Member

原文標題:.net***實踐二:使用finalize/dispose模式提升垃圾回收器性能

鏈接:http://www.cnblogs.com/mickeychang/archive/2009/09/17/1568670.html

【編輯推薦】

  1. 簡述C# XML解析方法的特點及應用
  2. .NET對象的XML序列化和反序列化概念淺析
  3. .NET對象的XML序列化和反序列化實例詳解
  4. C# XML序列化實例淺析
  5. .NET序列化和反序列化基礎知識總結
責任編輯:彭凡 來源: 博客園
相關推薦

2009-07-20 17:07:30

提高ASP.NET性能

2021-03-03 08:13:57

模式垃圾回收

2009-06-23 14:15:00

Java垃圾回收

2009-09-24 14:59:38

C#編寫COM組件

2019-12-12 21:45:17

javascript前端css

2010-01-05 18:49:57

.NET Framew

2009-07-28 16:07:40

.NET圖片快速處理

2009-02-25 09:52:14

類型轉換.NET 強制轉型

2010-09-08 13:53:10

.NET連接Sybas

2012-12-18 13:57:42

.NetC#

2009-09-04 11:20:47

ASP.NET頁面間值

2009-10-14 14:37:56

調試.NET程序

2022-03-21 11:33:11

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

2009-07-03 13:22:37

調用Servlet

2020-03-13 08:00:00

.NET對象清理垃圾回收

2009-07-27 14:41:33

ASP.NET調用存儲

2021-11-25 07:01:57

.NET開發編程

2009-07-29 11:33:14

ASP.NET技巧ASP.NET應用程序

2011-05-24 15:15:12

mysql性能

2009-07-24 16:40:14

ASP.NET軟件開發
點贊
收藏

51CTO技術棧公眾號

91亚洲精品久久久蜜桃| 国产精品久久久久久模特| 91精品国产一区二区三区| 国产成人三级视频| 五十路在线观看| 日本欧美一区二区在线观看| 久久亚洲精品国产亚洲老地址| 亚洲精品鲁一鲁一区二区三区| 正在播放日韩精品| 亚洲天堂精品视频| 久久精品国产综合精品| 91九色蝌蚪91por成人| 亚洲第一精品影视| 中文字幕av一区二区| 黄色av电影网站| 色噜噜成人av在线| 精品久久久久久久久久| 中国成人在线视频| 精品乱码一区二区三四区视频| 黄页视频在线91| 欧美综合在线观看| 欧美成人三级在线观看| 精品久久一区| 亚洲精品综合精品自拍| 日本人妻一区二区三区| 激情久久一区二区| 色八戒一区二区三区| av免费观看大全| 黄黄的网站在线观看| 久久久五月婷婷| 极品尤物一区二区三区| 国产精品丝袜黑色高跟鞋| 久久久久国产精品一区三寸| 欧美夫妻性视频| 尤物在线免费视频| 欧洲杯半决赛直播| 亚洲乱码一区av黑人高潮| 黄色a级三级三级三级| 欧美jizz18| 欧美视频在线一区二区三区| 国产精品后入内射日本在线观看| 欧美xxxx做受欧美88bbw| 中文字幕一区二区不卡| 亚洲精品久久久久久一区二区| 四虎在线观看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 三级国产在线观看| 成人99免费视频| 99在线视频首页| 亚洲AV无码一区二区三区性| 国产乱人伦偷精品视频不卡| 成人免费在线网址| 91久久国语露脸精品国产高跟| 麻豆精品视频在线| 国产精品网站视频| 一本色道久久综合熟妇| 九九久久精品视频 | 91国内精品| 精品少妇一区二区三区视频免付费| 天美一区二区三区| 99久久999| 日韩欧美在线网站| 男人女人拔萝卜视频| 激情综合婷婷| 精品久久一区二区三区| 人妖粗暴刺激videos呻吟| 国产精品巨作av| 亚洲精品www久久久| 538国产视频| 久久不见久久见中文字幕免费| 亚洲男人av电影| 日韩福利在线视频| 无需播放器亚洲| 欧美国产亚洲视频| 日本在线播放视频| 青娱乐精品视频在线| 国产欧美精品va在线观看| 国产精品国产三级国产普通话对白| 韩国av一区二区三区四区| 丁香五月网久久综合| 五月天婷婷在线播放| 国产午夜亚洲精品理论片色戒| 视频一区三区| 在线免费观看污| 亚洲3atv精品一区二区三区| 亚洲人成色77777| 欧美风情在线视频| 日韩精品专区在线| 午夜一区二区三区免费| 久久激情电影| 欧美激情在线视频二区| 亚洲熟女综合色一区二区三区| 日本午夜精品视频在线观看| 99在线影院| 午夜成人免费影院| 国产精品久久久99| 美脚丝袜脚交一区二区| 色香欲www7777综合网| 91精品国产乱码| 日韩中文字幕电影| 中文字幕乱码亚洲无线精品一区| 91国产高清在线| 亚洲中文一区二区三区| 成人在线视频首页| 日韩一区国产在线观看| 青青草原av在线| 在线精品亚洲一区二区不卡| 91aaa精品| 九九热精品视频在线观看| 欧美成人一区在线| 人人爽人人爽人人片av| 国产精品羞羞答答xxdd| 欧美日韩综合精品| 四虎影院观看视频在线观看| 一本久久精品一区二区| 女女调教被c哭捆绑喷水百合| 精品毛片免费观看| 亚洲**2019国产| 国产又大又长又粗| 久久精品在线观看| r级无码视频在线观看| 久久91视频| 亚洲欧美成人网| 国产乡下妇女做爰| 极品少妇xxxx偷拍精品少妇| 欧美亚洲精品日韩| 蜜臀久久精品| 精品久久一区二区三区| 黑鬼狂亚洲人videos| 日韩激情视频网站| 精品中文字幕人| 青春草在线免费视频| 在线播放日韩导航| 亚洲一二三精品| 久久国产精品99国产| 狠狠色综合色区| 欧美人与牲禽动交com | 国产成人免费91av在线| 韩国av永久免费| 亚洲乱码国产乱码精品精可以看| 国产又猛又黄的视频| 亚洲人成网www| 欧美亚洲国产另类| 四虎永久在线精品免费网址| 亚洲一区影音先锋| 风韵丰满熟妇啪啪区老熟熟女| 香蕉视频国产精品| 91精品免费视频| 日韩毛片久久久| 正在播放亚洲一区| 亚洲综合久久av一区二区三区| 水野朝阳av一区二区三区| 久久视频在线观看中文字幕| 免费在线小视频| 亚洲国产天堂网精品网站| 国产超碰人人爽人人做人人爱| av亚洲精华国产精华精| 国产精品自拍片| 久操国产精品| 国产成人自拍视频在线观看| 福利视频在线看| 欧美精品1区2区3区| 麻豆天美蜜桃91| 国产成人综合亚洲网站| 无码人妻精品一区二区蜜桃网站| 国产一区福利| 欧美一区二区三区精品电影| 九色视频在线播放| 欧美少妇一区二区| www.av视频| www.性欧美| 日本三级免费网站| 红桃成人av在线播放| 国产精自产拍久久久久久| 国产在线观看免费麻豆| 日韩一区二区三区免费观看| 懂色av.com| 国产丝袜欧美中文另类| 羞羞的视频在线| 欧美欧美全黄| 久久久亚洲综合网站| 黑人一区二区三区| 欧美激情一级欧美精品| 麻豆影视在线| 6080亚洲精品一区二区| 国产一级特黄a高潮片| 26uuu久久综合| 污色网站在线观看| 欧美日韩国产一区精品一区| 精品视频一区在线| 99久久精品一区二区成人| 久久99久久亚洲国产| 深夜福利免费在线观看| 欧美乱妇20p| 成年免费在线观看| 国产精品久久久久久久久免费桃花 | 91精品国产综合久久久蜜臀九色| 国产亲近乱来精品视频| 激情小说欧美色图| 三级久久三级久久| 久久综合亚洲精品| 国产精品嫩模av在线| 2022国产精品| 欧美成a人片免费观看久久五月天| 久久久女人电视剧免费播放下载| 成人精品一区二区三区免费 | 国产精品爽爽爽| 超碰激情在线| 久久成人亚洲精品| 北岛玲日韩精品一区二区三区| 欧美电影精品一区二区| 国产九色91回来了| 午夜精品久久久久久久久久| 欧美88888| 91视频观看视频| 妖精视频在线观看| 男女性色大片免费观看一区二区| 91丨porny丨探花| 欧美一区二区三区免费看| 日韩国产欧美精品| 女厕嘘嘘一区二区在线播放 | 亚洲妇熟xx妇色黄| 国产成人av免费在线观看| 国产视频在线观看一区二区三区 | 亚洲一级电影视频| 特级西西人体高清大胆| 久久精品亚洲精品国产欧美 | 青草热久免费精品视频| 美女网站视频在线| 久久亚洲精品网站| 国产在线高清理伦片a| 色av中文字幕一区| 国产黄色在线| 亚洲精品日韩丝袜精品| 日本精品一二区| 欧美不卡视频一区| jlzzjlzz亚洲女人18| 欧美理论片在线| 怡红院成永久免费人全部视频| 色国产精品一区在线观看| 欧美a∨亚洲欧美亚洲| 亚洲成人7777| 国产欧美日韩另类| 亚洲电影一级黄| 伊人国产在线观看| 亚洲国产精品综合小说图片区| 久久精品一区二区三| 亚洲欧美日韩国产成人精品影院 | 99国产在线| 香蕉免费一区二区三区在线观看| 95av在线视频| 日韩在线精品强乱中文字幕| av资源一区二区| 99香蕉久久| 久精品国产欧美| 久久av国产紧身裤| 国产日韩久久| 西野翔中文久久精品字幕| 久久久综合亚洲91久久98| 美女少妇全过程你懂的久久| 中文字幕九色91在线| 国内精品在线视频| 一区二区三区天堂av | 亚洲欧洲国产精品| 国产免费av在线| 深夜福利日韩在线看| 精品国产白色丝袜高跟鞋| 九九热这里只有精品免费看| 波多一区二区| 欧美中文字幕在线观看| 吞精囗交69激情欧美| 国产在线高清精品| 精品一区二区三区四区五区| 国产精品国产三级欧美二区| 欧美日韩导航| 视频在线观看成人| 希岛爱理av一区二区三区| 日本黄色片一级片| 香蕉久久久久久久av网站| 免费看污污网站| 国产精品白丝av| 欧美黑人欧美精品刺激| 国产精品第四页| 免费一级特黄特色大片| 欧美亚洲国产一区在线观看网站| av中文在线观看| 精品在线小视频| dj大片免费在线观看| 91精品国产高清| 欧美日韩卡一| 精品国产一二| 婷婷精品进入| 中文字幕无码精品亚洲35| 久久99久久久欧美国产| 年下总裁被打光屁股sp| 欧美国产97人人爽人人喊| 欧美成人手机视频| 91国产免费观看| 亚洲经典一区二区| 一区二区亚洲精品国产| 182在线视频观看| 成人综合国产精品| 亚洲人成精品久久久| 欧美日韩dvd| 日韩电影在线观看电影| 韩国三级在线看| 中文字幕一区二区三区不卡在线| 在线天堂中文字幕| 日韩精品中文字幕一区二区三区 | 51精品在线观看| 粉嫩av国产一区二区三区| 欧美大陆一区二区| 欧美午夜在线| 亚洲图片 自拍偷拍| 久久精品免视看| 在线观看亚洲天堂| 欧美大片顶级少妇| 三区四区在线视频| 国产精品av网站| 日韩欧美国产大片| 国产在线xxxx| 国产中文字幕一区| 国产18无套直看片| 在线免费一区三区| 免费黄网站在线观看| 欧美第一淫aaasss性| 成人短视频软件网站大全app| 日韩视频在线播放| 亚洲综合精品| 中文字幕a在线观看| 亚洲最大成人综合| 99久久国产热无码精品免费| 在线视频日本亚洲性| 日本免费久久| 欧美日韩精品不卡| 国产精品婷婷| aaaaaav| 欧美日韩激情视频8区| 免费看日韩av| 91av在线免费观看视频| caoporn成人| 可以看毛片的网址| 国产成+人+日韩+欧美+亚洲 | 色综合天天综合网国产成人综合天| 成人av手机在线| 欧美国产一区二区三区| 秋霞一区二区| 精品视频在线观看一区| av在线综合网| 国产美女激情视频| 亚洲欧美在线一区二区| 日本欧美日韩| 亚洲精品在线视频观看| 老司机免费视频一区二区三区| 欧美xxxooo| 91精品国产高清一区二区三区| 在线观看wwwxxxx| 国产精品成人观看视频免费| 精品999网站| 国产高清自拍视频| 色爱区综合激月婷婷| 成人精品一区二区三区校园激情| 国产色综合天天综合网| 亚洲国产精品91| 久久无码专区国产精品s| 亚洲成人午夜影院| 日韩三级电影网| 国产精品国产亚洲伊人久久| 日韩免费在线| 亚洲美女精品视频| 欧美丝袜一区二区三区| 国产美女视频一区二区三区| 国产一区欧美二区三区| 中文字幕日韩欧美精品高清在线| 日本xxxx免费| 欧美性开放视频| 日韩三级影院| 精品国产一区二区三区久久久久久| 先锋a资源在线看亚洲| 色屁屁草草影院ccyy.com| 欧美一级二级三级乱码| 岛国av在线网站| 神马影院我不卡午夜| 国产精品中文字幕一区二区三区| 日本高清www免费视频| 伊人久久免费视频| 免费精品一区二区三区在线观看| 欧美一区二区中文字幕| 国产精品视频免费| 欧美一级性视频| 国产免费一区二区三区在线观看| 黄色日韩精品| аⅴ天堂中文在线网| 欧美成人伊人久久综合网| 韩漫成人漫画| 日本黄xxxxxxxxx100| 久久精品亚洲乱码伦伦中文| 亚洲av无码乱码国产麻豆| 国产成人精品久久二区二区91| 亚洲最大av|