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

程序內存一直在泄漏,原來是異步死循環(huán)了 !

存儲 存儲軟件
根據(jù)朋友描述,程序運行一段時間后,內存就炸了,應該沒造成人員傷亡,不然也不會跟我wx聊天了,這里可以用 .time 看看當前的 process 跑了多久。

[[437425]]

一、背景

1. 講故事

上個月有位朋友找到我,說他的程序出現(xiàn)了內存泄漏,不知道如何進一步分析,截圖如下:

朋友這段話已經說的非常言簡意賅了,那就上 windbg 說話吧。

二、Windbg 分析

1. 到底是哪一方面的泄漏

根據(jù)朋友描述,程序運行一段時間后,內存就炸了,應該沒造成人員傷亡,不然也不會跟我wx聊天了,這里可以用 .time 看看當前的 process 跑了多久。

  1. 0:000> .time 
  2. Debug session time: Thu Oct 21 14:54:39.000 2021 (UTC + 8:00) 
  3. System Uptime: 6 days 4:37:27.851 
  4. Process Uptime: 0 days 0:40:14.000 
  5.   Kernel time: 0 days 0:01:55.000 
  6.   User time: 0 days 0:07:33.000 

看的出來,這個 dump 是在程序跑了 40min 之后抓的,接下來我們比較一下 process 的內存和 gc堆 占比, 看看到底是哪一塊的泄漏。

  1. 0:000> !address -summary 
  2.  
  3. --- State Summary ---------------- RgnCount ----------- Total Size -------- %ofBusy %ofTotal 
  4. MEM_FREE                                327     7dfc`c665a000 ( 125.987 TB)           98.43% 
  5. MEM_RESERVE                             481      201`e91a2000 (   2.007 TB)  99.74%    1.57% 
  6. MEM_COMMIT                             2307        1`507f4000 (   5.258 GB)   0.26%    0.00% 
  7.  
  8. 0:000> !eeheap -gc 
  9. Number of GC Heaps: 2 
  10. ------------------------------ 
  11.  
  12. GC Allocated Heap Size:    Size: 0x139923528 (5260850472) bytes. 
  13. GC Committed Heap Size:    Size: 0x13bf23000 (5300695040) bytes. 

2. 到底是什么占用了如此大的內存

知道是 托管層 的泄漏,感覺一下子就幸福起來了,接下來用 !dumpheap -stat 看看有沒有什么大對象可挖。

  1. 0:000> !dumpheap -stat 
  2. Statistics
  3.               MT    Count    TotalSize Class Name 
  4. 00007ffdeb1fc400  5362921    128710104 xxxBLLs.xxx.BundleBiz+<>c__DisplayClass20_0 
  5. 00007ffdeaeff140  5362929    171613728 System.Collections.Generic.List`1[[xxx.xxx, xxx]] 
  6. 00007ffdeaeff640  5362957    171615272 xxx.BLLs.Plan.Dto.xxx[] 
  7. 00007ffde8171e18 16146362    841456072 System.String 
  8. 00007ffdeb210098  5362921   1415811144 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  9. 00007ffdea9ca260  5362921   2359685240 xxx.Bundle              

從輸出看,內存主要被 xxx.Bundle 和 AsyncTaskMethodBuilder 兩大類對象給吃掉了,數(shù)量都高達 536w,這里有一個非常有意思的地方,如果你了解異步,我相信你一看就能看出 AsyncTaskMethodBuilder + VoidTaskResult 是干嘛的,按照經驗,這位朋友應該誤入了 異步無限遞歸 ,那怎么去挖呢?接著往下看。

3. 尋找問題代碼

看到上面的 xxx.BundleBiz+d__20 了嗎?這個正是異步操作所涉及到的類和方法,接下來用 ILSpy 反射出 BundleBiz 下的匿名類 d__20 , 如下圖所示:

雖然找到了源碼,但代碼是 ILSpy 反編譯出來的異步狀態(tài)機,接下來的一個問題是,如何根據(jù)狀態(tài)機代碼反向尋找到 await ,async 代碼呢?在 ILSpy 中有一個 used by 功能,在這里可以用起來了。

雙擊 used by 就能看到真正的調用代碼,簡化后如下:

  1. public async Task DistributionBundle(List<Bundle> list, List<xxx> bwdList, xxx item, List<xxx> sumDetails, List<xxx> details, BundleParameter bundleParameter, IEnumerable<dynamic> labels) 
  2.  int num = 0; 
  3.  foreach (xxx detail in sumDetails) 
  4.  { 
  5.   IEnumerable<xxx> woDetails = details.Where((xxx w) => w.Size == detail.Size && w.Color == detail.Color); 
  6.   foreach (xxx item2 in woDetails) 
  7.   { 
  8.             xxx 
  9.   } 
  10.   woDetails = woDetails.OrderBy((xxx s) => s.Seq).ToList(); 
  11.   num++; 
  12.         xxx 
  13.   Bundle bundle = new Bundle(); 
  14.   Bundle bundle2 = bundle; 
  15.   bundle2.BundleId = await _repo.CreateBundleId(); 
  16.    
  17.   foreach (xxx item3 in woDetails) 
  18.   { 
  19.    item3.TaskQty = item3.WoQty + Math.Ceiling(item3.WoQty * item3.OverCutRate); 
  20.    decimal value = default(decimal); 
  21.   } 
  22.  
  23.   await DistributionBundle(list, bwdList, item, sumDetails, details, bundleParameter, labels); 
  24.  } 

仔細看上面這段代碼, 我去, await DistributionBundle(list, bwdList, item, sumDetails, details, bundleParameter, labels); 又調用了自身,看樣子是某種條件下陷入了一個死遞歸。

有些朋友可能要問,除了經驗之外,能從 dump 中分析出來嗎?當然可以,從 500w+ 中抽一個看看它的 !gcroot 即可。

  1. 0:000> !DumpHeap /d -mt 00007ffdeb210098 
  2.          Address               MT     Size 
  3. 000001a297913a68 00007ffdeb210098      264      
  4. 000001a297913b70 00007ffdeb210098      264   
  5.  
  6. 0:000> !gcroot 000001a297913a68 
  7. Thread 5ac: 
  8.     000000470B1EE4E0 00007FFE45103552 System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken) [/_/src/System.Private.CoreLib/shared/System/Threading/Tasks/Task.cs @ 2922] 
  9.         rbp+10: 000000470b1ee550 
  10.             ->  000001A297A25D88 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions+<RunAsync>d__4, Microsoft.Extensions.Hosting.Abstractions]] 
  11.             ->  000001A29796D8C0 Microsoft.Extensions.Hosting.Internal.Host 
  12.             ... 
  13.             ->  000001A298213248 System.Data.SqlClient.TdsParserStateObjectNative 
  14.             ->  000001A32E6AB700 System.Threading.Tasks.TaskFactory`1+<>c__DisplayClass38_0`1[[System.Data.SqlClient.SqlDataReader, System.Data.SqlClient],[System.Data.CommandBehavior, System.Data.Common]] 
  15.             ->  000001A32E6AB728 System.Threading.Tasks.Task`1[[System.Data.SqlClient.SqlDataReader, System.Data.SqlClient]] 
  16.             ->  000001A32E6ABB18 System.Threading.Tasks.StandardTaskContinuation 
  17.             ->  000001A32E6ABA80 System.Threading.Tasks.ContinuationTaskFromResultTask`1[[System.Data.SqlClient.SqlDataReader, System.Data.SqlClient]] 
  18.             ->  000001A32E6AB6C0 System.Action`1[[System.Threading.Tasks.Task`1[[System.Data.SqlClient.SqlDataReader, System.Data.SqlClient]], System.Private.CoreLib]] 
  19.             ->  000001A32E6AB428 System.Data.SqlClient.SqlCommand+<>c__DisplayClass130_0 
  20.             ... 
  21.             ->  000001A32E6ABC08 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.String, System.Private.CoreLib],[Dapper.SqlMapper+<QueryRowAsync>d__34`1[[System.String, System.Private.CoreLib]], Dapper]] 
  22.             ->  000001A32E6ABD20 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.String, System.Private.CoreLib],[xxx.DALs.xxx.BundleRepo+<CreateBundleId>d__12, xxx]] 
  23.             ->  000001A32E6ABD98 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  24.             ->  000001A32E6A6BD8 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  25.             ->  000001A433250520 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  26.             ->  000001A32E69E0F8 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  27.             ->  000001A433247D28 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  28.             ->  000001A433246330 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  29.             ->  000001A32E69A568 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  30.             ->  000001A433245408 System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1+AsyncStateMachineBox`1[[System.Threading.Tasks.VoidTaskResult, System.Private.CoreLib],[xxx.BundleBiz+<DistributionBundle>d__20, xxx]] 
  31.             ... 

從調用棧來看,代碼貌似是從數(shù)據(jù)庫讀取記錄的過程中陷入死循環(huán)的。

4. 為什么沒有出現(xiàn)棧溢出

一看到無限循環(huán),我相信很多朋友肯定要問,為啥沒出現(xiàn)堆棧溢出,畢竟默認的線程棧空間僅僅 1M 而已,從 !gcroot 上看,這些引用都是掛在 5ac 線程上,也就是下面輸出的 主線程 ,而且主線程棧也非常干凈。

  1. 0:000> !t 
  2. ThreadCount:      30 
  3. UnstartedThread:  0 
  4. BackgroundThread: 24 
  5. PendingThread:    0 
  6. DeadThread:       5 
  7. Hosted Runtime:   no 
  8.                                                                                                             Lock   
  9.  DBG   ID     OSID ThreadOBJ           State GC Mode     GC Alloc Context                  Domain           Count Apt Exception 
  10.    0    1      5ac 000001A29752CDF0  202a020 Preemptive  0000000000000000:0000000000000000 000001a29754c570 0     MTA  
  11.    4    2     1e64 000001A29752A490    2b220 Preemptive  0000000000000000:0000000000000000 000001a29754c570 0     MTA (Finalizer)  
  12. ... 
  13.  
  14.  
  15. 0:000> !clrstack  
  16. OS Thread Id: 0x5ac (0) 
  17.         Child SP               IP Call Site 
  18. 000000470B1EE1D0 00007ffe5eb30544 [GCFrame: 000000470b1ee1d0]  
  19. 000000470B1EE318 00007ffe5eb30544 [HelperMethodFrame_1OBJ: 000000470b1ee318] System.Threading.Monitor.ObjWait(Boolean, Int32, System.Object) 
  20. 000000470B1EE440 00007ffe45103c25 System.Threading.ManualResetEventSlim.Wait(Int32, System.Threading.CancellationToken) 
  21. 000000470B1EE4E0 00007ffe45103552 System.Threading.Tasks.Task.SpinThenBlockingWait(Int32, System.Threading.CancellationToken) [/_/src/System.Private.CoreLib/shared/System/Threading/Tasks/Task.cs @ 2922] 
  22. 000000470B1EE550 00007ffe451032cf System.Threading.Tasks.Task.InternalWaitCore(Int32, System.Threading.CancellationToken) [/_/src/System.Private.CoreLib/shared/System/Threading/Tasks/Task.cs @ 2861] 
  23. 000000470B1EE5D0 00007ffe45121b04 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task) [/_/src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/TaskAwaiter.cs @ 143] 
  24. 000000470B1EE600 00007ffe4510482d System.Runtime.CompilerServices.TaskAwaiter.GetResult() [/_/src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/TaskAwaiter.cs @ 106] 
  25. 000000470B1EE630 00007ffe4de36595 Microsoft.Extensions.Hosting.HostingAbstractionsHostExtensions.Run(Microsoft.Extensions.Hosting.IHost) [/_/src/Hosting/Abstractions/src/HostingAbstractionsHostExtensions.cs @ 49] 
  26. 000000470B1EE660 00007ffde80f3b4b xxx.Program.Main(System.String[]) 
  27. 000000470B1EE8B8 00007ffe47c06c93 [GCFrame: 000000470b1ee8b8]  
  28. 000000470B1EEE50 00007ffe47c06c93 [GCFrame: 000000470b1eee50]  

如果你稍微了解一點異步的玩法,你應該知道這其中有一個 IO完成端口 的概念,它可以實現(xiàn) 句柄 和 ThreadPool 的綁定,無限遞歸只不過是進了 IO完成端口 的待回調隊列中而已,理論上和棧空間沒什么關系,也就不會出現(xiàn)棧溢出了。

三、總結

本次內存泄漏的事故主要還是因為程序員的大意,也許是長期的 996 給弄恍惚了 ??????,有了這些信息,修正起來相信會非常簡單。

本文轉載自微信公眾號「一線碼農聊技術」,可以通過以下二維碼關注。轉載本文請聯(lián)系一線碼農聊技術公眾號。

責任編輯:武曉燕 來源: 一線碼農聊技術
相關推薦

2021-02-11 09:14:36

內存虛擬機數(shù)據(jù)

2012-05-18 00:01:07

JVMJavaJVM平臺

2022-09-26 08:30:41

黑客網絡攻擊隱私

2009-03-10 12:42:45

2025-02-17 09:22:16

MySQLSQL語句

2021-02-02 09:13:11

索引SQL數(shù)據(jù)庫

2020-03-23 08:30:12

程序員男友感受

2023-09-13 11:19:49

2017-07-06 11:08:12

開源云計算EasyStack

2023-09-13 17:08:31

2024-12-02 00:00:02

Svelte 5effect?數(shù)據(jù)

2019-12-02 15:22:34

硬件 游戲顯存

2020-05-26 08:52:36

Java JVM多態(tài)

2021-12-15 10:20:08

緩存架構開發(fā)

2025-04-03 10:39:56

2011-03-25 15:35:55

ARM微軟處理器架構

2018-03-21 18:00:15

NestJS

2016-07-20 17:19:21

SDN軟件定義網絡SDN商用

2019-11-28 14:14:16

微信QQ騰訊
點贊
收藏

51CTO技術棧公眾號

日本精品视频在线播放| 精品久久久网站| 一区二区在线观看网站| av无码精品一区二区三区宅噜噜| 欧美96在线丨欧| 亚洲国产精品高清久久久| 国产成人精品无码播放| 羞羞的网站在线观看| a亚洲天堂av| 国产噜噜噜噜噜久久久久久久久| 日韩欧美国产成人精品免费| 国产精品网在线观看| 色欧美片视频在线观看在线视频| 中文字幕欧美日韩一区二区三区| 好吊视频一二三区| 老鸭窝一区二区久久精品| 欧美极品少妇xxxxⅹ喷水| 精品少妇一区二区三区免费观| 四虎国产精品永久在线国在线 | 精品少妇一区二区| 黄色aaa级片| av福利在线导航| 亚洲欧洲国产日韩| 奇米精品在线| 污视频网站免费观看| 国产剧情一区二区| 国产狼人综合免费视频| 欧美一区二区三区不卡视频| 国产精品v日韩精品v欧美精品网站| 亚洲网站视频福利| 7788色淫网站小说| 婷婷综合国产| 777亚洲妇女| 蜜桃免费在线视频| xxxxx性欧美特大| 亚洲图片欧美色图| 国产精品啪啪啪视频| 亚洲麻豆精品| 97精品久久久午夜一区二区三区| 91免费视频网站| 真实的国产乱xxxx在线91| 久久国产福利| 欧美一级淫片aaaaaaa视频| 精品无码久久久久| 在线精品视频在线观看高清| 日韩中文在线不卡| 免费在线观看成年人视频| 成人av影音| 精品久久久久久亚洲综合网| 亚洲国产欧美日韩在线| 精品视频在线观看网站| 8x8x8国产精品| 日本美女视频一区| 亚洲伊人精品酒店| 欧美精品一二三四| 亚洲激情在线看| 亚洲欧美综合久久久久久v动漫| 欧美色爱综合网| 91高清国产视频| 91精品国产一区二区在线观看| 欧美日韩精品系列| 国内av一区二区| 成人综合日日夜夜| 日韩精品一区在线| 美女扒开腿免费视频| 另类ts人妖一区二区三区| 亚洲精品www久久久| 熟妇高潮精品一区二区三区| 日韩有码一区| 国产亚洲欧美日韩精品| 91导航在线观看| 我不卡伦不卡影院| 色综合天天综合网国产成人网| 久久久久久久中文字幕| 亚洲高清二区| 国产成人a亚洲精品| 亚洲天堂久久久久| 国产一区二区三区免费| 国产精品v欧美精品v日韩| 污污的视频网站在线观看| 91丨九色丨蝌蚪丨老版| 亚洲v国产v| 在线观看小视频| 欧美性猛交xxxx乱大交3| 欧美伦理视频在线观看| 国产精品2区| 亚洲国产精品va在看黑人| 亚洲av无码一区二区三区人| 97视频精品| 韩国福利视频一区| 国产成人av免费| 国产精品一区二区视频| 久久久久久欧美精品色一二三四| 福利小视频在线观看| 亚洲精品videosex极品| 欧美精品色婷婷五月综合| 亚洲老司机网| 国产视频精品xxxx| 蜜臀av午夜精品久久| 亚洲少妇一区| 96sao精品视频在线观看| 神马亚洲视频| 综合久久久久久久| 日本wwww视频| 日韩视频一区二区三区四区| 亚洲视频免费一区| 精品无码av在线| 久久99久国产精品黄毛片色诱| 国产伦理久久久| 欧美三级电影一区二区三区| 福利视频第一区| 黑人无套内谢中国美女| 精品国产一级毛片| 91精品国产色综合| aa视频在线免费观看| 久久久国产精品午夜一区ai换脸| a级片一区二区| 日本欧美在线| 亚洲一级一级97网| 羞羞影院体验区| 国产激情偷乱视频一区二区三区| 日韩亚洲欧美精品| 亚洲性受xxx喷奶水| 欧美大黄免费观看| 日韩av手机在线免费观看| 老牛嫩草一区二区三区日本| 欧美一级片在线看| 欧美深性狂猛ⅹxxx深喉| 亚洲国产老妈| 国产精品视频精品| 国产一区电影| 欧美性极品xxxx做受| 中国极品少妇xxxx| 欧美日韩四区| 亚洲最大激情中文字幕| 免费在线午夜视频| 欧美视频中文一区二区三区在线观看| 菠萝菠萝蜜网站| 亚洲黄色天堂| 国产精品日韩欧美一区二区三区| 黄网址在线观看| 欧美喷潮久久久xxxxx| 一区二区精品免费| 久久一区国产| 欧美日韩精品不卡| 欧美片第1页| 亚洲美女在线观看| 日韩精品成人免费观看视频| 97精品久久久久中文字幕| 精品视频在线观看一区| 国产精品2023| 97视频免费观看| 男男激情在线| 欧美影视一区二区三区| 在线免费观看视频| 看国产成人h片视频| 一区不卡视频| 精品一区91| 欧美激情按摩在线| 黑人乱码一区二区三区av| 亚洲一区二区五区| 日本免费福利视频| 天堂va蜜桃一区二区三区| 日韩jizzz| 日韩在线你懂得| 欧美www在线| 欧美一区二区三区黄片| 精品成人久久av| 小早川怜子久久精品中文字幕| 日本不卡一区二区三区高清视频| 亚洲精品中文字幕在线| 巨胸喷奶水www久久久免费动漫| 在线不卡国产精品| aaaa一级片| 精品美女国产在线| 秋霞网一区二区三区| 狠狠色狠狠色综合系列| 国产精品va在线观看无码| 日韩av系列| 国产精品天天狠天天看| 中文字幕在线三区| 日韩精品免费在线观看| 中文字幕日韩三级| 一二三区精品福利视频| 国产激情在线免费观看| 久草这里只有精品视频| 国内精品视频一区二区三区| 国产精品一区2区3区| 91在线中文字幕| www.成人爱| 欧美成人一二三| 免费一级在线观看播放网址| 欧美日韩国产中文| 成人午夜视频精品一区| 国产精品久久久久9999吃药| 挪威xxxx性hd极品| 麻豆91在线播放免费| 国产无限制自拍| 日韩情爱电影在线观看| 精品国产一区二区三| 91精品视频一区二区| 欧美亚洲视频在线观看| 老司机精品影院| 亚洲欧洲一区二区三区在线观看| 国产三级按摩推拿按摩| 色婷婷av一区二区三区大白胸| 中文字幕另类日韩欧美亚洲嫩草| 99精品桃花视频在线观看| xxxx在线免费观看| 欧美一级视频| 一卡二卡三卡视频| 性欧美欧美巨大69| 日本一区免费| 日韩美脚连裤袜丝袜在线| 91色琪琪电影亚洲精品久久| 欧美极品免费| 91精品国产91久久| av片在线观看| 视频直播国产精品| 欧美女子与性| 亚洲二区在线播放视频| av男人天堂网| 欧美福利视频导航| 中文字幕+乱码+中文字幕明步| 精品色蜜蜜精品视频在线观看| 欧美一区二区三区爽爽爽| 国产精品情趣视频| 国产sm调教视频| 91免费看片在线观看| 国产白袜脚足j棉袜在线观看| 麻豆国产一区二区| 欧美大片在线播放| 在线播放不卡| 成人性生活视频免费看| 欧美日韩免费观看一区=区三区| 一区二区三区四区欧美| 欧美在线电影| 亚洲国产精品综合| 郴州新闻综合频道在线直播| 日本高清不卡一区二区三| 日本午夜精品久久久| 久久久福利视频| 精品少妇3p| 精品国产免费人成电影在线观... 精品国产免费久久久久久尖叫 | 久久久久国产精品麻豆| 亚洲av无码国产精品久久| 99re66热这里只有精品3直播| 中文字幕一区二区三区乱码不卡| 成人免费看视频| 精品1卡二卡三卡四卡老狼| av在线播放不卡| 国产精品1000部啪视频| 91蜜桃在线观看| 黄色片网站免费| 中文一区一区三区高中清不卡| 四季av中文字幕| 自拍偷自拍亚洲精品播放| 日韩欧美国产成人精品免费| 一区二区在线看| 粉嫩aⅴ一区二区三区| 精品日韩视频在线观看| 欧美视频xxxx| 91麻豆精品国产| 亚洲黄色在线观看视频| 亚洲国产高清高潮精品美女| 神马亚洲视频| 色七七影院综合| 91在线中字| 国产91|九色| 色猫猫成人app| 91在线高清免费观看| 国产成人精品亚洲线观看| 久久精品二区| 日韩欧美不卡| 大荫蒂性生交片| 免费在线成人| 日日干日日操日日射| 国产69精品久久99不卡| 精品人妻少妇嫩草av无码| 国产农村妇女毛片精品久久麻豆| 黄色录像免费观看| 午夜久久久久久久久久一区二区| 自拍偷拍18p| 日韩一区二区三区在线| 色综合久久网女同蕾丝边| 中文字幕成人在线| 福利小视频在线| 国产精品黄色av| 91蜜桃臀久久一区二区| 欧美久久久久久久| 你懂的亚洲视频| 欧美亚洲日本在线观看| 丰满白嫩尤物一区二区| 精品无码人妻一区二区免费蜜桃 | 国产成人精品一区二区三区在线 | 999视频精品| 国产av天堂无码一区二区三区| 日韩av中文字幕一区二区| 色偷偷中文字幕| 国产亚洲欧美一区在线观看| 懂色av粉嫩av蜜臀av一区二区三区| 一区二区日韩电影| 中文无码av一区二区三区| 亚洲第五色综合网| 在线免费看a| 欧美亚洲日本网站| 2020国产精品极品色在线观看| 日韩精品久久久毛片一区二区| 国产一区日韩欧美| 亚洲第一天堂久久| 日本一区二区三区久久久久久久久不| 国产一级二级毛片| 91精品蜜臀在线一区尤物| 都市激情一区| 青青草一区二区| 精品五月天堂| 成人短视频在线观看免费| 久久国内精品自在自线400部| 久久丫精品国产亚洲av不卡| 亚洲高清三级视频| 国产黄色高清视频| 俺去啦;欧美日韩| а√天堂资源国产精品| 欧美日韩亚洲一区二区三区四区| 国产一区视频在线观看免费| 又黄又爽又色的视频| 中文字幕一区二| 中文字幕av久久爽| 亚洲一区二区精品| 黄色综合网址| 欧美精品久久| 亚洲影院一区| 亚洲制服丝袜在线播放| 亚洲国产裸拍裸体视频在线观看乱了 | 99视频免费在线观看| 国产日韩精品一区二区| 日韩精品久久久久久久电影99爱| 大香煮伊手机一区| 久久久不卡影院| 亚洲欧美另类在线视频| 国产视频自拍一区| 中文字幕一区久| 久久综合九色综合网站| 亚洲永久免费| 成人片黄网站色大片免费毛片| 精品久久久久久久久中文字幕| 日韩一区二区三区不卡| 97精品一区二区三区| 农村少妇一区二区三区四区五区 | 日精品一区二区三区| 亚洲精品国产91| 欧美网站一区二区| 日本中文字幕在线视频| 成人国产精品一区| 欧美二区不卡| 精品无码人妻少妇久久久久久| 五月婷婷综合网| 牛牛影视精品影视| 国产精品日韩一区| 亚洲高清影视| 亚洲欧美日韩偷拍| 欧美日韩黄色大片| 成年人视频在线看| 成人网在线视频| 亚洲视频福利| 蜜桃av免费看| 欧美日韩在线播放| 91黄色在线| 精选一区二区三区四区五区| 久久字幕精品一区| 亚洲一二三在线观看| 亚洲国产成人精品一区二区 | 日本黄色片在线观看| 99国产视频在线| 香蕉精品999视频一区二区| 欧美人与禽zoz0善交| 日韩欧美123| 成人香蕉视频| a级网站在线观看| 96av麻豆蜜桃一区二区| 在线观看国产成人| 欧美激情伊人电影| 成人同人动漫免费观看| 中国男女全黄大片| 在线看一区二区| 欧美videossex| 五月天亚洲综合| 粉嫩嫩av羞羞动漫久久久| 中文字幕一区二区三区四区欧美| 久久精品免费电影| 西瓜成人精品人成网站| 亚洲一区二区福利视频| 五月婷婷综合激情| 乱人伦中文视频在线| 精品久久蜜桃| 国产精品996| 波多野结衣一区二区在线| 欧美激情手机在线视频 | 久久精品视频亚洲| 亚洲国产欧美日韩在线观看第一区 |