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

記一次 Java 應用內存泄漏的定位過程

開發 后端
最近,筆者負責測試的某個算法模塊機器出現大量報警,報警表現為機器CPU持續高占用。

 [[418418]]

問題現象

最近,筆者負責測試的某個算法模塊機器出現大量報警,報警表現為機器CPU持續高占用。該算法模塊是一個優化算法,本身就是CPU密集型應用,一開始懷疑可能是算法在正常運算,但很快這種猜測就被推翻:同算法同學確認后,該算法應用只使用了一個核心,而報警時,一個算法進程占用了服務機器的全部8個核心,這顯然不是正常計算造成的。

定位步驟

首先按照CPU問題的定位思路進行定位,對 Java 調用堆棧進行分析:

    1.  使用top -c 查看 CPU 占用高的進程:   

,從 top 命令的結果看,19272 號進程 CPU 占用率最高,基本確定問題是該進程引起,可以從 Command 欄看到這正是算法模塊程序,注意圖是線下4C機器上復現時的截圖。

    2.  使用ps -mp pid -o THREAD,tid,time命令定位問題線程。 

  1. ps -mp 19272 -o THREAD,tid,time  
  2.   USER     %CPU PRI SCNT WCHAN  USER SYSTEM   TID     TIME  
  3.   USER    191   -    - -         -      -     - 00:36:54  
  4.   USER    0.0  19    - futex_    -      - 19272 00:00:00  
  5.   USER   68.8  19    - futex_    -      - 19273 00:13:18  
  6.   USER   30.2  19    - -         -      - 19274 00:05:50  
  7.   USER   30.2  19    - -         -      - 19275 00:05:50  
  8.   USER   30.2  19    - -         -      - 19276 00:05:50  
  9.   USER   30.1  19    - -         -      - 19277 00:05:49  
  10.   USER    0.4  19    - futex_    -      - 19278 00:00:05  
  11.   USER    0.0  19    - futex_    -      - 19279 00:00:00  
  12.   USER    0.0  19    - futex_    -      - 19280 00:00:00  
  13.   USER    0.0  19    - futex_    -      - 19281 00:00:00  
  14.   USER    0.4  19    - futex_    -      - 19282 00:00:04  
  15.   USER    0.3  19    - futex_    -      - 19283 00:00:03  
  16.   USER    0.0  19    - futex_    -      - 19284 00:00:00  
  17.   USER    0.0  19    - futex_    -      - 19285 00:00:00  
  18.   USER    0.0  19    - futex_    -      - 19286 00:00:00  
  19.   USER    0.0  19    - skb_wa    -      - 19362 00:00:00 

從結果可以看到,出現問題的線程主要是 19273-19277。

    3.  使用jstack查看出現問題的線程堆棧信息。

由于 jstack 使用的線程號是十六進制,因此需要先把線程號從十進制轉換為十六進制。 

  1. $ printf "%x\n" 19273  
  2. 4b49 
  3. $ jstack 12262 |grep -A 15 4b49  
  4. "main" #1 prio=5 os_prio=0 tid=0x00007f98c404c000 nid=0x4b49 runnable [0x00007f98cbc58000]  
  5. java.lang.Thread.State: RUNNABLE  
  6.     at java.util.ArrayList.iterator(ArrayList.java:840)  
  7.     at optional.score.MultiSkuDcAssignmentEasyScoreCalculator.updateSolution(MultiSkuDcAssignmentEasyScoreCalculator.java:794)  
  8.     at optional.score.MultiSkuDcAssignmentEasyScoreCalculator.calculateScore(MultiSkuDcAssignmentEasyScoreCalculator.java:80)  
  9.     at optional.score.MultiSkuDcAssignmentEasyScoreCalculator.calculateScore(MultiSkuDcAssignmentEasyScoreCalculator.java:17)  
  10.     at org.optaplanner.core.impl.score.director.easy.EasyScoreDirector.calculateScore(EasyScoreDirector.java:60)  
  11.     at org.optaplanner.core.impl.score.director.AbstractScoreDirector.doAndProcessMove(AbstractScoreDirector.java:188)  
  12.     at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.doMove(LocalSearchDecider.java:132)  
  13.     at org.optaplanner.core.impl.localsearch.decider.LocalSearchDecider.decideNextStep(LocalSearchDecider.java:116)  
  14.     at org.optaplanner.core.impl.localsearch.DefaultLocalSearchPhase.solve(DefaultLocalSearchPhase.java:70)  
  15.     at org.optaplanner.core.impl.solver.AbstractSolver.runPhases(AbstractSolver.java:88)  
  16.     at org.optaplanner.core.impl.solver.DefaultSolver.solve(DefaultSolver.java:191)  
  17.     at app.DistributionCenterAssignmentApp.main(DistributionCenterAssignmentApp.java:61)  
  18. "VM Thread" os_prio=0 tid=0x00007f98c419d000 nid=0x4b4e runnable 
  19. "GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f98c405e800 nid=0x4b4a runnable  
  20. "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f98c4060800 nid=0x4b4b runnable  
  21. "GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f98c4062800 nid=0x4b4c runnable  
  22. "GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f98c4064000 nid=0x4b4d runnable  
  23. "VM Periodic Task Thread" os_prio=0 tid=0x00007f98c4240800 nid=0x4b56 waiting on condition 

可以看到,除了 0x4b49 線程是正常工作線程,其它都是 gc 線程。

此時懷疑:是頻繁 GC 導致的 CPU 被占滿。

我們可以使用 jstat 命令查看 GC 統計: 

  1. $ jstat -gcutil 19272 2000 10  
  2. S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT  
  3. 0.00   0.00  22.71 100.00  97.16  91.53   2122   19.406   282  809.282  828.688  
  4. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   283  809.282  828.688  
  5. 0.00   0.00  92.46 100.00  97.16  91.53   2122   19.406   283  812.730  832.135  
  6. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   284  812.730  832.135  
  7. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   285  815.965  835.371  
  8. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   285  815.965  835.371  
  9. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   286  819.492  838.898  
  10. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   286  819.492  838.898  
  11. 0.00   0.00 100.00 100.00  97.16  91.53   2122   19.406   287  822.751  842.157  
  12. 0.00   0.00  30.78 100.00  97.16  91.53   2122   19.406   287  825.835  845.240 

重點關注一下幾列:

YGC:年輕代垃圾回收次數

YGCT:年輕代垃圾回收消耗時間

FGC:老年代垃圾回收次數

FGCT:老年代垃圾回收消耗時間

GCT:垃圾回收消耗總時間

可以看到,20s 的時間中進行了 5 次 full GC,僅僅耗費在 GC 的時間已經到了 17s。

    1.  增加啟動參數,展示詳細 GC 過程。通過增加 jvm 參數,更快暴露 GC 問題,并展示 GC 詳細過程java -Xmx1024m -verbose:gc。 

  1. [Full GC (Ergonomics)  1046527K->705881K(1047552K), 1.8974837 secs]  
  2. [Full GC (Ergonomics)  1046527K->706191K(1047552K), 2.5837756 secs]  
  3. [Full GC (Ergonomics)  1046527K->706506K(1047552K), 2.6142270 secs]  
  4. [Full GC (Ergonomics)  1046527K->706821K(1047552K), 1.9044987 secs]  
  5. [Full GC (Ergonomics)  1046527K->707130K(1047552K), 2.0856625 secs]  
  6. [Full GC (Ergonomics)  1046527K->707440K(1047552K), 2.6273944 secs]  
  7. [Full GC (Ergonomics)  1046527K->707755K(1047552K), 2.5668877 secs]  
  8. [Full GC (Ergonomics)  1046527K->708068K(1047552K), 2.6924427 secs]  
  9. [Full GC (Ergonomics)  1046527K->708384K(1047552K), 3.1084132 secs]  
  10. [Full GC (Ergonomics)  1046527K->708693K(1047552K), 1.9424100 secs]  
  11. [Full GC (Ergonomics)  1046527K->709007K(1047552K), 1.9996261 secs]  
  12. [Full GC (Ergonomics)  1046527K->709314K(1047552K), 2.4190958 secs]  
  13. [Full GC (Ergonomics)  1046527K->709628K(1047552K), 2.8139132 secs]  
  14. [Full GC (Ergonomics)  1046527K->709945K(1047552K), 3.0484079 secs]  
  15. [Full GC (Ergonomics)  1046527K->710258K(1047552K), 2.6983539 secs] 
  16. [Full GC (Ergonomics)  1046527K->710571K(1047552K), 2.1663274 secs] 

至此基本可以確定,CPU 高負載的根本原因是內存不足導致頻繁 GC。

根本原因

雖然我們經過上面的分析可以知道,是頻繁 GC 導致的 CPU 占滿,但是并沒有找到問題的根本原因,因此也無從談起如何解決。GC 的直接原因是內存不足,懷疑算法程序存在內存泄漏。

為什么會內存泄漏

雖然 Java 語言天生就有垃圾回收機制,但是這并不意味著 Java 就沒有內存泄漏問題。

正常情況下,在 Java 語言中如果一個對象不再被使用,那么 Java 的垃圾回收機制會及時把這些對象所占用的內存清理掉。但是有些情況下,有些對象雖然不再被程序使用,但是仍然有引用指向這些對象,所以垃圾回收機制無法處理。隨著這些對象占用內存數量的增長,最終會導致內存溢出。

Java 的內存泄漏問題比較難以定位,下面針對一些常見的內存泄漏場景做介紹:

    1.  持續在堆上創建對象而不釋放。例如,持續不斷的往一個列表中添加對象,而不對列表清空。這種問題,通??梢越o程序運行時添加 JVM 參數-Xmx 指定一個較小的運行堆大小,這樣可以比較容易的發現這類問題。

    2. 不正 所有的靜態變量。

    3.  對大 String 對象調用 String.intern()方法,該方法會從字符串常量池中查詢當前字符串是否存在,若不存在就會將當前字符串放入常量池中。而在 jdk6 之前,字符串常量存儲在 PermGen 區的,但是默認情況下 PermGen 區比較小,所以較大的字符串調用此方法,很容易會觸發內存溢出問題。

    4.  打開的輸入流、連接沒有爭取關閉。由于這些資源需要對應的內存維護狀態,因此不關閉會導致這些內存無法釋放。

如何進行定位

以上介紹了一些常見的內存泄漏場景,在實際的問題中還需要針對具體的代碼進行確定排查。下面結合之前的頻繁 GC 問題,講解一下定位的思路,以及相關工具的使用方法。

線上定位

對于線上服務,如果不能開啟 Debug 模式,那么可用的工具較少。推薦方式:

使用 top -c 命令查詢 Java 高內存占用程序的進程 pid。然后使用 jcmd 命令獲取進程中對象的計數、內存占用信息。 

  1. $ jcmd 24600 GC.class_histogram |head -n 10  
  2. 24600:  
  3.  num     #instances         #bytes  class name  
  4. ----------------------------------------------  
  5.    1:       2865351      103154208  [J  
  6.    2:       1432655       45844960  org.optaplanner.core.impl.localsearch.scope.LocalSearchMoveScope  
  7.    3:       1432658       34383792  org.optaplanner.core.api.score.buildin.bendablelong.BendableLongScore  
  8.    4:       1193860       28652640  org.optaplanner.core.impl.heuristic.selector.move.generic.ChangeMove  
  9.    5:        241961       11986056  [Ljava.lang.Object;  
  10.    6:        239984        5759616  java.util.ArrayList 

結果中,#instances 為對象數量,#bytes 為占用內存大小,單位是 byte,class name 為對應的類名。

排名第一的是 Java 原生類型,實際上是 long 類型。

另外,要注意的是結果中的類可能存在包含關系,例如一個類中含有多個 long 類型數據,那 long 對應的計數也會增加,所以我們要排除一些基本類型,它們可能是我們程序中使用導致的計數增加,重點關注我們程序中的類。

如果僅僅有 jcmd 的結果,其實很難直接找到問題的根本原因。如果問題不能在線下復現,我們基本上只能針對計數較多的類名跟蹤變量的數據流,重點關注 new 對象附近的代碼邏輯。觀察代碼邏輯時,重點考慮上述幾種常見內存泄漏場景。

線下定位

如果內存泄漏問題可以在線下復現,那么問題定位的工具就比較豐富了。下面主要推薦的兩種工具,VisualVM & IDEA。

這里主要講一下IDEA調試定位思路:

使用 IDEA 調試器定位內存泄漏問題

如果以上過程依然不能有效的分析出問題的根本原因,還可以使用 IDEA 的調試功能進行定位。

配置好程序的運行參數,正常復現問題之后,對程序打斷點并逐步追蹤。

重點關注的是程序需要大量運行時間的代碼部分,我們可以使用調試暫停功能獲得一個內存快照。

然后在此運行并暫停,這時候在調試的 Memory 視圖中可以看到哪些類在快速增加?;旧峡梢詳喽▎栴}的原因是兩次運行中 new 該對象的語句。

定位結果

經過上述定位步驟,最終發現問題的根本原因,在求解器的 LocalSearch 階段,如果使用了禁忌搜索(Tabu Search)策略,并且長時間找不到更好的解,會不斷把當前經歷過的解加到禁忌表中。對應的代碼部分,finalListScore 是一個 list,在 55 行代碼不斷的添加 moveScope 對象,導致了內存泄漏:

解決方案

在求解器該處代碼對 finalListScore 進行長度限制,添加對象前發現達到了上限就清空,徹底避免內存泄漏的發生。由于出問題的是一個開源求解器框架:optaplanner,為了方便以后維護,按照開源項目貢獻流程,把改fix提PR給項目即可,如何給開源項目提PR可以參考社區文章:https://testerhome.com/topics/2114

細節參考PR鏈接:https://github.com/kiegroup/optaplanner/pull/726。

項目維護者從代碼維護的角度沒有接受這個PR,但是使用了類似的fix思路最終修復了這個存在了幾年bug:https://github.com/kiegroup/optaplanner/pull/763。

最后,算法模塊升級到最新版本的optaplanner依賴即可修復該問題。 

責任編輯:龐桂玉 來源: JAVA高級架構
相關推薦

2022-02-08 17:17:27

內存泄漏排查

2021-11-02 07:54:41

內存.NET 系統

2022-09-13 17:46:19

STA模式內存

2018-09-14 10:48:45

Java內存泄漏

2021-02-11 14:06:38

Linux內核內存

2022-01-10 09:31:17

Jetty異步處理seriesbaid

2023-10-10 12:05:45

2017-12-19 14:00:16

數據庫MySQL死鎖排查

2019-08-26 09:50:09

2023-01-04 18:32:31

線上服務代碼

2021-12-02 07:50:30

NFS故障內存

2020-11-02 09:48:35

C++泄漏代碼

2017-11-09 16:07:00

Web應用內存

2021-11-23 21:21:07

線上排查服務

2021-02-01 09:00:34

Ceph octopu集群運維

2017-09-22 10:16:16

MySQL數據庫用戶數據

2011-08-08 13:31:44

數據分析數據倉庫

2019-02-20 09:29:44

Java內存郵件

2022-10-09 10:47:37

NET視覺軟件

2020-08-27 21:36:50

JVM內存泄漏
點贊
收藏

51CTO技術棧公眾號

欧美肉体xxxx裸体137大胆| 涩涩涩视频在线观看| 国产成人一级电影| 55夜色66夜色国产精品视频| 亚洲女优在线观看| 国产在线一区不卡| 欧美香蕉大胸在线视频观看| 在线丝袜欧美日韩制服| 人妻精品一区一区三区蜜桃91| 视频一区二区国产| 久久久久久亚洲精品| 精品人妻中文无码av在线| 99热这里只有精品首页 | 日韩欧美一区二区三区免费观看| 国产精品电影一区二区| 精品1区2区| 亚洲一区精品在线观看| 国产美女精品| 欧美激情一区二区三区在线视频观看 | 精品无码一区二区三区蜜臀| 日本中文字幕在线一区| 日韩午夜中文字幕| 美女黄色片视频| 国产三级电影在线播放| ●精品国产综合乱码久久久久| 久久涩涩网站| 欧美 日韩 国产 成人 在线 91| 蜜臀a∨国产成人精品| 9.1国产丝袜在线观看| 在线免费日韩av| 久久综合国产| 伊人伊成久久人综合网小说| 亚洲日本久久久| 亚洲精品18| 51精品秘密在线观看| chinese少妇国语对白| 黄色污网站在线观看| 一区二区三区四区蜜桃| 欧美日韩亚洲国产成人| 1769在线观看| 国产精品人人做人人爽人人添| 久久国产精品久久精品国产| 风流少妇一区二区三区91| 国产精品一二三四五| 成人自拍性视频| 一区二区三区播放| 久久国产乱子精品免费女| 国产精品草莓在线免费观看| 精品人妻一区二区三区免费看| 在线播放亚洲| 91精品国产99久久久久久| 国产主播在线播放| 亚洲韩日在线| 91av免费观看91av精品在线| 日韩三级视频在线| 国产欧美欧美| 日韩女优人人人人射在线视频| 日本视频免费在线| 国产精品腿扒开做爽爽爽挤奶网站| 久久久久中文字幕2018| 国产午夜精品无码一区二区| 亚洲区国产区| 人人澡人人澡人人看欧美| 秋霞精品一区二区三区| 久久激情综合| 国产免费一区二区三区在线能观看 | 欧美欧美欧美欧美| 久久婷婷中文字幕| 一区二区三区亚洲变态调教大结局 | 一区二区三区四区毛片| 久久爱www.| 亚洲大胆人体在线| 国产人妻一区二区| 天天影视欧美综合在线观看| 久久国产精彩视频| 日韩在线观看第一页| 久久久久.com| 91网在线免费观看| 人妻中文字幕一区| 国产欧美精品区一区二区三区 | 欧美二区视频| 欧美综合国产精品久久丁香| 中文天堂在线资源| 国产成人在线视频免费播放| 精品无人区一区二区三区| 国产小视频在线| 成人免费一区二区三区视频| 久久男人资源站| 久久野战av| 日韩手机在线导航| 久久久久久国产精品无码| 国产精品二区不卡| 欧美一级成年大片在线观看| 在线视频播放大全| 成人精品免费看| 日本在线视频一区| 影音先锋中文在线视频| 色天使久久综合网天天| 午夜免费福利网站| 九一国产精品| 久久久久久国产三级电影| 中文字幕日韩免费| 高清视频一区二区| 亚洲精美视频| 天堂网在线最新版www中文网| 欧美偷拍一区二区| a天堂视频在线观看| 99久久99久久精品国产片果冰| 国内精品久久久久影院优| 中国老头性行为xxxx| 成人av网站在线观看免费| 性欧美.com| 新版的欧美在线视频| 91精品国产综合久久国产大片| 欧美 日本 国产| 欧美不卡高清| 91精品国产自产在线观看永久| 天堂中文在线观看视频| 亚洲黄色免费电影| 欧美在线aaa| 久久99青青| 欧美在线视频a| 丁香六月天婷婷| 亚洲三级电影网站| 国产视频1区2区3区| 亚洲人挤奶视频| 久久久久久久久久国产精品| 国产精品爽爽久久| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产免费黄色网址| 国产精品久久久久桃色tv| 老司机午夜av| 国产九一精品| 欧美一区二区三区精品电影| 婷婷开心激情网| 亚洲成人中文在线| 精品人妻在线视频| 国产中文一区| 国产91色在线|亚洲| 污网站在线免费看| 日韩欧美一二三四区| www.xxxx日本| 国内精品免费**视频| 制服丝袜综合日韩欧美| 日本免费成人| 美日韩精品免费视频| 999免费视频| 亚洲欧美日韩在线| 人妻激情偷乱视频一区二区三区| 亚洲精品一区二区在线看| 91精品视频免费| 91中文在线| 日韩久久免费av| 精品无码一区二区三区电影桃花| 国产成人av电影在线| 国产日本在线播放| 外国成人在线视频| 国产国产精品人在线视| 2021av在线| 制服丝袜av成人在线看| 日本一级二级视频| 国产99久久久精品| 国产91在线视频观看| 伊甸园亚洲一区| 国产精品欧美激情在线播放| 老司机av在线免费看| 日韩无一区二区| 中文字幕在线观看免费视频| 久久天堂av综合合色蜜桃网| 乌克兰美女av| 欧美va亚洲va日韩∨a综合色| 高清日韩一区| 免费亚洲电影| 俺去了亚洲欧美日韩| 午夜精品久久久久久久99老熟妇| 亚洲妇熟xx妇色黄| 国产jk精品白丝av在线观看| 久久福利资源站| 97干在线视频| 国产一区二区三区电影在线观看| 国产精品视频永久免费播放| av电影免费在线观看| 亚洲成人999| 欧美性受xxx黑人xyx性爽| 亚洲视频狠狠干| 亚洲av网址在线| 久久99国产精品尤物| 日本手机在线视频| 色综合五月天| 国产一区视频观看| 另类一区二区| 91精品国产91久久久久久| 黄色一级片免费的| 免费播放片a高清在线观看| 欧美视频一区二区在线观看| 麻豆明星ai换脸视频| 99久久精品免费| av免费一区二区| 国产精品一级| 大地资源第二页在线观看高清版| 欧美精品中文字幕亚洲专区| 国产在线播放91| 国产自产自拍视频在线观看| 中文字幕在线看视频国产欧美在线看完整 | 欧美日韩一区不卡| 日本一区二区不卡在线| 欧美国产精品v| 国产高清成人久久| 狠狠v欧美v日韩v亚洲ⅴ| 日本精品免费在线观看| 欧美在线视屏| 亚洲国产高清国产精品| 青青一区二区| 成人xxxxx色| 日韩专区视频| 国产成人精品午夜| 成人一级福利| 欧美日韩福利电影| 免费在线看黄色| 亚洲色图50p| 深夜福利在线看| 欧美刺激午夜性久久久久久久| 中文字幕一区二区三区四区视频 | 国产精品高清无码| 欧美日韩国产丝袜美女| 免费在线观看亚洲| 自拍偷拍欧美激情| 欧美日韩生活片| 久久精品一二三| 中文字幕免费看| 99久久综合精品| 精品人妻二区中文字幕| 国产精品资源在线看| 奇米视频888| 麻豆精品国产传媒mv男同| 99草草国产熟女视频在线| 久久最新视频| 欧美成人精品欧美一级乱| 一区二区日韩免费看| www在线观看免费| 亚洲黄色影片| 又粗又黑又大的吊av| 亚洲区一区二| 1024av视频| 性高湖久久久久久久久| 看av免费毛片手机播放| 亚洲欧美日韩国产一区二区| 日本韩国欧美在线观看| 国产日韩欧美一区在线| 爱福利视频一区二区| 久久激情久久| 免费看污黄网站| 久久激情综合网| 免费高清视频在线观看| 国产成人在线电影| www.88av| 久久免费精品国产久精品久久久久| 国产三级国产精品| 久久久久一区二区三区四区| 日韩av片在线| 亚洲天堂精品视频| 国产一二三四在线| 午夜日韩在线观看| 中文字幕高清在线免费播放| 欧美在线不卡视频| 国产精品毛片久久久久久久av| 91精品在线麻豆| 成人爽a毛片一区二区| 日韩电影免费观看中文字幕| 国产女主播在线直播| 日韩中文在线不卡| 色www永久免费视频首页在线 | 成人h版在线观看| 免费成人深夜夜行p站| 欧美激情在线免费观看| 国产黄色片在线| 亚洲综合自拍偷拍| 在线观看日本视频| 在线成人免费观看| 少妇荡乳情欲办公室456视频| 亚洲人成在线观| av免费在线网站| 456国产精品| 日本a人精品| 精品欧美国产| 99久久精品国产亚洲精品| 韩日视频在线观看| 日韩精品电影一区亚洲| 日韩精品xxx| 欧美激情在线一区二区三区| 日本中文字幕免费在线观看| 欧美视频在线看| 国产视频手机在线| 精品亚洲国产成av人片传媒| 日本中文在线观看| 97精品国产97久久久久久免费| 欧美大片免费观看网址| 亚洲va欧美va国产综合久久| 久久不见久久见免费视频7| 欧美日韩在线免费观看视频| 先锋亚洲精品| 一级黄色大片儿| 国产三级精品三级| 日本亚洲色大成网站www久久| 欧美性视频一区二区三区| 后进极品白嫩翘臀在线视频| 色婷婷久久一区二区| 小草在线视频免费播放| 痴汉一区二区三区| 国产韩国精品一区二区三区| wwwxxx黄色片| 99久久婷婷国产综合精品电影 | 亚洲国产第一| 亚洲精品mv在线观看| 国产欧美精品一区| 六月丁香激情综合| 亚洲成人黄色网| 中文字幕中文字幕在线十八区 | 久热av在线| 午夜精品久久久久久久白皮肤| 天堂综合在线播放| 日韩电影大全在线观看| 国产日韩高清一区二区三区在线| 国内精品国产三级国产aⅴ久| 亚洲国产精华液网站w| 国产成人无码精品| 亚洲精品一区在线观看| 91高清在线观看视频| 91精品国产综合久久男男| 欧美日韩一二三四| 国产一区亚洲二区三区| 91视频国产资源| 日韩和一区二区| 亚洲国产欧美久久| 国产夫妻在线播放| 国产欧美日韩综合精品二区| 欧美午夜不卡| jjzz黄色片| 亚洲午夜久久久久久久久电影网 | 亚洲人成在线免费观看| 蜜桃麻豆影像在线观看| 国产综合色一区二区三区| 欧美另类专区| 一级全黄裸体片| 亚洲国产日韩a在线播放| 精品人妻久久久久一区二区三区 | 国产福利一区二区三区视频在线| 中文字幕求饶的少妇| 欧美日韩国产精选| 日韩在线观看www| 成人欧美一区二区三区黑人| 欧美丰满老妇| 国产又粗又猛大又黄又爽| 一级日本不卡的影视| 国产男男gay体育生网站| 欧美成人在线免费视频| 亚洲精品一二三**| 成人网站免费观看入口| av不卡免费电影| 国产www在线| 综合欧美国产视频二区| 亚洲图片小说区| 日韩video| 成人精品一区二区三区四区| 久久国产精品系列| 在线观看国产成人av片| av日韩一区| 国产黄色片免费在线观看| 91美女片黄在线观看91美女| 啦啦啦免费高清视频在线观看| 亚洲天堂2020| 精品久久久久久久久久岛国gif| 欧美美女黄色网| 91香蕉视频在线| 一级黄色大片免费| 欧美高清第一页| 九九精品在线| 男生操女生视频在线观看| 亚洲一区二区三区视频在线| 亚洲三级黄色片| 国产一区视频在线播放| 午夜视频精品| 波多野结衣av在线观看| 91精品国产综合久久久蜜臀粉嫩 | 国产精品日韩av| 欧美99久久| 最近中文字幕免费| 日韩午夜在线播放| 日韩电影网站| 996这里只有精品| 久久久久9999亚洲精品| av一级黄色片| 国产精品老牛影院在线观看| 欧美国产高潮xxxx1819| 性高潮久久久久久久| 精品久久一区二区| 青青在线精品| 久久久999免费视频| 亚洲色图另类专区| 麻豆影视在线|