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

JVM性能調優監控工具使用詳解

云計算 虛擬化
這些問題在日常開發、維護中可能被很多人忽視(比如有的人遇到上面的問題只是重啟服務器或者調大內存,而不會深究問題根源),但能夠理解并解決這些問題是Java程序員進階的必備要求。

 [[280944]]

現實企業級Java應用開發、維護中,有時候我們會碰到下面這些問題:

  • OutOfMemoryError,內存不足
  • 內存泄露
  • 線程死鎖
  • 鎖爭用(Lock Contention)
  • Java進程消耗CPU過高
  • ......

這些問題在日常開發、維護中可能被很多人忽視(比如有的人遇到上面的問題只是重啟服務器或者調大內存,而不會深究問題根源),但能夠理解并解決這些問題是Java程序員進階的必備要求。本文將對一些常用的JVM性能調優監控工具進行介紹,希望能起拋磚引玉之用。

而且這些監控、調優工具的使用,無論你是運維、開發、測試,都是必須掌握的。

A、 jps(Java Virtual Machine Process Status Tool)

jps主要用來輸出JVM中運行的進程狀態信息。語法格式如下:

  1. jps [options] [hostid] 

如果不指定hostid就默認為當前主機或服務器。

命令行參數選項說明如下:

  1. -q 不輸出類名、Jar名和傳入main方法的參數 
  2. -m 輸出傳入main方法的參數 
  3. -l 輸出main類或Jar的全限名 
  4. -v 輸出傳入JVM的參數 

比如下面:

  1. root@ubuntu:/# jps -m -l 
  2. 2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml 
  3. 29920 com.sun.tools.hat.Main -port 9998 /tmp/dump.dat 
  4. 3149 org.apache.catalina.startup.Bootstrap start 
  5. 30972 sun.tools.jps.Jps -m -l 
  6. 8247 org.apache.catalina.startup.Bootstrap start 
  7. 25687 com.sun.tools.hat.Main -port 9999 dump.dat 
  8. 21711 mrf-center.jar 

B、jstack

jstack主要用來查看某個Java進程內的線程堆棧信息。語法格式如下:

  1. jstack [option] pid 
  2. jstack [option] executable core 
  3. jstack [option] [server-id@]remote-hostname-or-ip 

命令行參數選項說明如下:

  1. -l long listings,會打印出額外的鎖信息,在發生死鎖時可以用jstack -l pid來觀察鎖持有情況-m mixed mode,不僅會輸出Java堆棧信息,還會輸出C/C++堆棧信息(比如Native方法) 

jstack可以定位到線程堆棧,根據堆棧信息我們可以定位到具體代碼,所以它在JVM性能調優中使用得非常多。下面我們來一個實例找出某個Java進程中最耗費CPU的Java線程并定位堆棧信息,用到的命令有ps、top、printf、jstack、grep。

第一步先找出Java進程ID,我部署在服務器上的Java應用名稱為mrf-center:

  1. root@ubuntu:/# ps -ef | grep mrf-center | grep -v grep 
  2. root 21711 1 1 14:47 pts/3 00:02:10 java -jar mrf-center.jar 

得到進程ID為21711,第二步找出該進程內最耗費CPU的線程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid,我這里用第三個,輸出如下:

 

JVM性能調優監控工具使用詳解

 

TIME列就是各個Java線程耗費的CPU時間,CPU時間最長的是線程ID為21742的線程,用

  1. printf "%x\n" 21742 

得到21742的十六進制值為54ee,下面會用到。

OK,下一步終于輪到jstack上場了,它用來輸出進程21711的堆棧信息,然后根據線程ID的十六進制值grep,如下:

  1. root@ubuntu:/# jstack 21711 | grep 54ee 
  2. "PollIntervalRetrySchedulerThread" prio=10 tid=0x00007f950043e000 nid=0x54ee in Object.wait [0x00007f94c6eda000] 

可以看到CPU消耗在PollIntervalRetrySchedulerThread這個類的Object.wait,我找了下我的代碼,定位到下面的代碼:

  1. // Idle wait 
  2. getLog.info("Thread [" + getName() + "] is idle waiting..."); 
  3. schedulerThreadState = PollTaskSchedulerThreadState.IdleWaiting; 
  4. long now = System.currentTimeMillis; 
  5. long waitTime = now + getIdleWaitTime; 
  6. long timeUntilContinue = waitTime - now; 
  7. synchronized(sigLock) {try { 
  8. if(!halted.get) { 
  9. sigLock.wait(timeUntilContinue); 
  10. } catch (InterruptedException ignore) { 

它是輪詢任務的空閑等待代碼,上面的sigLock.wait(timeUntilContinue)就對應了前面的Object.wait。

C、jmap(Memory Map)和jhat(Java Heap Analysis Tool)

jmap用來查看堆內存使用狀況,一般結合jhat使用。

jmap語法格式如下:

  1. jmap [option] pid 
  2. jmap [option] executable core 
  3. jmap [option] [server-id@]remote-hostname-or-ip 

如果運行在64位JVM上,可能需要指定-J-d64命令選項參數。

  1. jmap -permstat pid 

打印進程的類加載器和類加載器加載的持久代對象信息,輸出:類加載器名稱、對象是否存活(不可靠)、對象地址、父類加載器、已加載的類大小等信息,如下圖:

 

JVM性能調優監控工具使用詳解

 

使用jmap -heap pid查看進程堆內存使用情況,包括使用的GC算法、堆配置參數和各代中堆內存使用情況。比如下面的例子:

  1. root@ubuntu:/# jmap -heap 21711 
  2. Attaching to process ID 21711, please wait... 
  3. Debugger attached successfully. 
  4. Server compiler detected. 
  5. JVM version is 20.10-b01 
  6.  
  7. using thread-local object allocation. 
  8. Parallel GC with 4 thread(s) 
  9.  
  10. Heap Configuration: 
  11. MinHeapFreeRatio = 40 
  12. MaxHeapFreeRatio = 70 
  13. MaxHeapSize = 2067791872 (1972.0MB) 
  14. NewSize = 1310720 (1.25MB) 
  15. MaxNewSize = 17592186044415 MB 
  16. OldSize = 5439488 (5.1875MB) 
  17. NewRatio = 2 
  18. SurvivorRatio = 8 
  19. PermSize = 21757952 (20.75MB) 
  20. MaxPermSize = 85983232 (82.0MB) 
  21.  
  22. Heap Usage: 
  23. PS Young Generation 
  24. Eden Space
  25. capacity = 6422528 (6.125MB) 
  26. used = 5445552 (5.1932830810546875MB) 
  27. free = 976976 (0.9317169189453125MB) 
  28. 84.78829520089286% used 
  29. From Space
  30. capacity = 131072 (0.125MB) 
  31. used = 98304 (0.09375MB) 
  32. free = 32768 (0.03125MB) 
  33. 75.0% used 
  34. To Space
  35. capacity = 131072 (0.125MB) 
  36. used = 0 (0.0MB) 
  37. free = 131072 (0.125MB) 
  38. 0.0% used 
  39. PS Old Generation 
  40. capacity = 35258368 (33.625MB) 
  41. used = 4119544 (3.9287033081054688MB) 
  42. free = 31138824 (29.69629669189453MB) 
  43. 11.683876009235595% used 
  44. PS Perm Generation 
  45. capacity = 52428800 (50.0MB) 
  46. used = 26075168 (24.867218017578125MB) 
  47. free = 26353632 (25.132781982421875MB) 
  48. 49.73443603515625% used 
  49. .... 

使用jmap -histo[:live] pid查看堆內存中的對象數目、大小統計直方圖,如果帶上live則只統計活對象,如下:

  1. root@ubuntu:/# jmap -histo:live 21711 | more  
  2. num #instances #bytes class name---------------------------------------------- 
  3. 1: 38445 5597736 <constMethodKlass> 
  4. 2: 38445 5237288 <methodKlass> 
  5. 3: 3500 3749504 <constantPoolKlass> 
  6. 4: 60858 3242600 <symbolKlass> 
  7. 5: 3500 2715264 <instanceKlassKlass> 
  8. 6: 2796 2131424 <constantPoolCacheKlass> 
  9. 7: 5543 1317400 [I 
  10. 8: 13714 1010768 [C 
  11. 9: 4752 1003344 [B 
  12. 10: 1225 639656 <methodDataKlass> 
  13. 11: 14194 454208 java.lang.String 
  14. 12: 3809 396136 java.lang.Class 
  15. 13: 4979 311952 [S 
  16. 14: 5598 287064 [[I 
  17. 15: 3028 266464 java.lang.reflect.Method 
  18. 16: 280 163520 <objArrayKlassKlass> 
  19. 17: 4355 139360 java.util.HashMap$Entry 
  20. 18: 1869 138568 [Ljava.util.HashMap$Entry; 
  21. 19: 2443 97720 java.util.LinkedHashMap$Entry 
  22. 20: 2072 82880 java.lang.ref.SoftReference 
  23. 21: 1807 71528 [Ljava.lang.Object; 
  24. 22: 2206 70592 java.lang.ref.WeakReference 
  25. 23: 934 52304 java.util.LinkedHashMap 
  26. 24: 871 48776 java.beans.MethodDescriptor 
  27. 25: 1442 46144 java.util.concurrent.ConcurrentHashMap$HashEntry 
  28. 26: 804 38592 java.util.HashMap 
  29. 27: 948 37920 java.util.concurrent.ConcurrentHashMap$Segment 
  30. 28: 1621 35696 [Ljava.lang.Class; 
  31. 29: 1313 34880 [Ljava.lang.String; 
  32. 30: 1396 33504 java.util.LinkedList$Entry 
  33. 31: 462 33264 java.lang.reflect.Field 
  34. 32: 1024 32768 java.util.Hashtable$Entry 
  35. 33: 948 31440 [Ljava.util.concurrent.ConcurrentHashMap$HashEntry; 

class name是對象類型,說明如下:

  1. B byte 
  2. char 
  3. double 
  4. float 
  5. int 
  6. J long 
  7. Z boolean 
  8. [ 數組,如[I表示int[] 
  9. [L+類名 其他對象 

還有一個很常用的情況是:用jmap把進程內存使用情況dump到文件中,再用jhat分析查看。jmap進行dump命令格式如下:

  1. jmap -dump:format=b,file=dumpFileName pid 

我一樣地對上面進程ID為21711進行Dump:

  1. root@ubuntu:/# jmap -dump:format=b,file=/tmp/dump.dat 21711  
  2. Dumping heap to /tmp/dump.dat ... 
  3. Heap dump file created 

dump出來的文件可以用MAT、VisualVM等工具查看,這里用jhat查看:

  1. root@ubuntu:/# jhat -port 9998 /tmp/dump.dat 
  2. Reading from /tmp/dump.dat... 
  3. Dump file created Tue Jan 28 17:46:14 CST 2014Snapshot read, resolving... 
  4. Resolving 132207 objects... 
  5. Chasing references, expect 26 dots.......................... 
  6. Eliminating duplicate references.......................... 
  7. Snapshot resolved. 
  8. Started HTTP server on port 9998Server is ready. 

注意如果Dump文件太大,可能需要加上-J-Xmx512m這種參數指定最大堆內存,即jhat -J-Xmx512m -port 9998 /tmp/dump.dat。然后就可以在瀏覽器中輸入主機地址:9998查看了:

 

JVM性能調優監控工具使用詳解

 

上面紅線框出來的部分大家可以自己去摸索下,最后一項支持OQL(對象查詢語言)。

D、jstat(JVM統計監測工具)

語法格式如下:

  1. jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ] 

vmid是Java虛擬機ID,在Linux/Unix系統上一般就是進程ID。interval是采樣時間間隔。count是采樣數目。比如下面輸出的是GC信息,采樣時間間隔為250ms,采樣數為4:

  1. root@ubuntu:/# jstat -gc 21711 250 4  
  2. S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 
  3. 192.0 192.0 64.0 0.0 6144.0 1854.9 32000.0 4111.6 55296.0 25472.7 702 0.431 3 0.218 0.649 
  4. 192.0 192.0 64.0 0.0 6144.0 1972.2 32000.0 4111.6 55296.0 25472.7 702 0.431 3 0.218 0.649 
  5. 192.0 192.0 64.0 0.0 6144.0 1972.2 32000.0 4111.6 55296.0 25472.7 702 0.431 3 0.218 0.649 
  6. 192.0 192.0 64.0 0.0 6144.0 2109.7 32000.0 4111.6 55296.0 25472.7 702 0.431 3 0.218 0.649 

要明白上面各列的意義,先看JVM堆內存布局:

 

JVM性能調優監控工具使用詳解

 

可以看出:

  1. 堆內存 = 年輕代 + 年老代 + 永久代 
  2. 年輕代 = Eden區 + 兩個Survivor區(FromTo

現在來解釋各列含義:

  1. S0C、S1C、S0U、S1U:Survivor 0/1區容量(Capacity)和使用量(Used) 
  2. EC、EU:Eden區容量和使用量 
  3. OC、OU:年老代容量和使用量 
  4. PC、PU:永久代容量和使用量 
  5. YGC、YGT:年輕代GC次數和GC耗時 
  6. FGC、FGCT:Full GC次數和Full GC耗時 
  7. GCT:GC總耗時 

E、hprof(Heap/CPU Profiling Tool)

hprof能夠展現CPU使用率,統計堆內存使用情況。

語法格式如下:

  1. java -agentlib:hprof[=options] ToBeProfiledClass 
  2. java -Xrunprof[:options] ToBeProfiledClass 
  3. javac -J-agentlib:hprof[=options] ToBeProfiledClass 

完整的命令選項如下:

  1. Option Name and Value Description Default 
  2. --------------------- ----------- ------- 
  3. heap=dump|sites|all heap profiling all 
  4. cpu=samples|times|old CPU usage off 
  5. monitor=y|n monitor contention n 
  6. format=a|b text(txt) or binary output a 
  7. file=<file> write data to file java.hprof[.txt] 
  8. net=<host>:<port> send data over a socket off 
  9. depth=<size> stack trace depth 4 
  10. interval=<ms> sample interval in ms 10 
  11. cutoff=<value> output cutoff point 0.0001 
  12. lineno=y|n line number in traces? y 
  13. thread=y|n thread in traces? n 
  14. doe=y|n dump on exit? y 
  15. msa=y|n Solaris micro state accounting n 
  16. force=y|n force output to <file> y 
  17. verbose=y|n print messages about dumps y 

來幾個官方指南上的實例。

CPU Usage Sampling Profiling(cpu=samples)的例子:

  1. java -agentlib:hprof=cpu=samples,interval=20,depth=3 Hello 

上面每隔20毫秒采樣CPU消耗信息,堆棧深度為3,生成的profile文件名稱是java.hprof.txt,在當前目錄。

CPU Usage Times Profiling(cpu=times)的例子,它相對于CPU Usage Sampling Profile能夠獲得更加細粒度的CPU消耗信息,能夠細到每個方法調用的開始和結束,它的實現使用了字節碼注入技術(BCI):

  1. javac -J-agentlib:hprof=cpu=times Hello.java 

Heap Allocation Profiling(heap=sites)的例子:

  1. javac -J-agentlib:hprof=heap=sites Hello.java 

Heap Dump(heap=dump)的例子,它比上面的Heap Allocation Profiling能生成更詳細的Heap Dump信息:

  1. javac -J-agentlib:hprof=heap=dump Hello.java 

 

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2017-07-21 08:55:13

TomcatJVM容器

2020-11-09 07:34:49

JVM性能監控

2024-12-04 15:49:29

2017-10-17 14:02:30

jvm調優工具

2023-04-24 14:54:09

JVM性能調優

2012-01-10 14:35:08

JavaJVM

2019-02-19 10:25:28

JVM性能工具

2021-12-06 11:03:57

JVM性能調優

2023-11-11 19:07:23

JVMJava

2023-02-10 09:28:23

優化工具

2010-09-27 10:20:09

JVMLinux

2023-11-28 08:43:48

2010-09-26 11:22:22

JVM垃圾回收JVM

2021-03-17 11:35:11

JVM代碼Java

2009-04-01 11:17:52

內存分配調優Oracle

2010-09-26 13:39:46

JVM調優

2012-01-10 15:13:56

JavaJVM

2010-09-26 09:08:17

JVM調優

2023-03-03 08:14:33

JavaJDK調優

2012-06-20 11:05:47

性能調優攻略
點贊
收藏

51CTO技術棧公眾號

欧美色电影在线| 懂色av中文字幕一区二区三区| 一本色道久久88综合亚洲精品ⅰ | 免费成人av网站| 无码久久精品国产亚洲av影片| 999国产精品| 亚洲国产精品成人精品| 男人搞女人网站| 怡红院av在线| xf在线a精品一区二区视频网站| 国产日韩精品在线观看| 日本熟妇毛耸耸xxxxxx| 波多野结衣在线观看一区二区| 日韩午夜激情视频| 国产精品入口免费软件| av老司机在线观看| 国产精品久久久久久福利一牛影视 | 亚洲精品视频久久| 欧美污在线观看| av有声小说一区二区三区| 一区二区在线观看视频在线观看| 久久综合九色99| 国产福利免费视频| 日韩av二区在线播放| 国语自产精品视频在线看一大j8 | 亚洲综合20p| 日韩精品一区二区三区| 亚洲一区视频在线| 亚洲成人一区二区三区| 欧美男男激情freegay| 国产成人亚洲综合a∨婷婷| 国产精品久在线观看| 久久久久久久久久影院| 自拍视频亚洲| 中文字幕亚洲综合久久| a级在线观看视频| 97超碰成人| 337p亚洲精品色噜噜狠狠| 青青在线视频免费| 亚洲啊v在线| 亚洲成人777| 黄色特一级视频| 含羞草www国产在线视频| 日本一区二区三区dvd视频在线 | 国产精品久久激情| 亚洲永久精品在线观看| 亚洲区欧美区| 久久久久久久一| 欧美精品入口蜜桃| 欧美一区网站| 美女久久久久久久久久久| 国产又黄又粗的视频| 精品久久一区| 在线观看国产精品淫| 精品人妻无码一区二区三区换脸| 少妇一区二区三区| 精品亚洲一区二区三区在线观看 | 99久久精品国产一区色| 久久久久久久尹人综合网亚洲| 欧美极品少妇xxxxⅹ喷水| 精品国产视频一区二区三区| 日韩亚洲一区在线| 中文字幕日本欧美| 欧美日韩国产黄色| 欧美理论在线播放| 在线观看日韩av| 日韩av片在线免费观看| 一本一本久久a久久综合精品| 日韩最新免费不卡| 爱爱视频免费在线观看| 欧美精品偷拍| 国外成人性视频| av图片在线观看| 免费在线观看不卡| 91热福利电影| 亚洲成a人片在线| 成人动漫视频在线| 欧美国产综合视频| yw193.com尤物在线| 最新热久久免费视频| 亚洲一区 在线播放| heyzo中文字幕在线| 欧美日韩国产区| 国产精品亚洲二区在线观看| www.国产精品| 91精品国产综合久久精品图片| 97免费公开视频| 日韩精品丝袜美腿| 在线播放国产精品| 国产大学生自拍| 99国内精品| 国产精品亚洲一区二区三区| 国产不卡av在线播放| 91影院在线观看| 亚洲欧美日产图| 日本片在线看| 欧洲av在线精品| 极品白嫩少妇无套内谢| 色婷婷综合久久久久久| 久久亚洲成人精品| 在线看成人av| 久久福利视频一区二区| 国产九色精品| 里番在线观看网站| 欧美色另类天堂2015| 免费黄频在线观看| 久草精品在线| 欧美大奶子在线| 欧美一区二区三区久久久| 国产成人超碰人人澡人人澡| 青青草久久网络| 黄色的视频在线观看| 欧美伊人久久久久久久久影院| 最新中文字幕日本| 日韩毛片视频| 日本久久久久久久久| 亚洲va天堂va欧美ⅴa在线| 国产精品丝袜一区| 亚洲熟妇国产熟妇肥婆| 97色婷婷成人综合在线观看| 亚洲免费电影在线观看| 久久久香蕉视频| 久久国产三级精品| 日本视频精品一区| 精品三级久久| 日韩欧美国产电影| 极品色av影院| 日韩国产在线一| 鲁鲁狠狠狠7777一区二区| 蜜桃传媒在线观看免费进入 | 精品av一区二区| 久久久欧美一区二区| 夜夜嗨aⅴ一区二区三区| 久久精品一区四区| 欧美亚洲一二三区| 老牛精品亚洲成av人片| 欧美精品videossex性护士| 国产精品国产一区二区三区四区 | 日韩av不卡在线播放| 黄色aa久久| 亚洲第一偷拍网| 国产精品99精品无码视| 国产精品一区专区| 一区二区三区四区免费观看| 免费一级欧美在线观看视频| 在线播放亚洲激情| 欧美高清69hd| 欧美激情一区在线观看| 我看黄色一级片| 成人激情视频| 国产精品视频中文字幕91| 都市激情在线视频| 精品视频免费在线| 亚洲少妇xxx| 精品一二线国产| 中文精品视频一区二区在线观看| 欧美亚洲综合视频| 久久精品99久久香蕉国产色戒| 中文字幕一区二区三区人妻四季| 国产精品人成在线观看免费| 色婷婷成人在线| 久久久9色精品国产一区二区三区| 国产精品一区二区女厕厕| 美州a亚洲一视本频v色道| 欧洲视频一区二区| 午夜激情福利电影| 国产一区二区三区在线观看免费| 操bbb操bbb| 粉嫩精品导航导航| 欧美在线视频免费播放| 毛片免费在线| 欧美日韩国产另类不卡| 欧美色图亚洲视频| av一区二区三区黑人| 久久精品香蕉视频| 欧美r级电影| 成人欧美一区二区三区视频xxx| 国产精品69xx| 亚洲人精选亚洲人成在线| 中文字幕永久免费视频| 亚洲免费观看高清完整| 国产日韩视频一区| 嫩草成人www欧美| 一区二区三区四区免费视频| 日本一区二区三区视频在线看| 91精品国产777在线观看| 国产精品麻豆一区二区三区 | 欧美尤物巨大精品爽| wwwxxx在线观看| 日韩免费视频一区二区| 亚洲s码欧洲m码国产av| 中文字幕亚洲区| 国产精品成人99一区无码| 老**午夜毛片一区二区三区| 97超碰人人爱| 国产传媒欧美日韩成人精品大片| 成人中心免费视频| 天堂av在线| 蜜月aⅴ免费一区二区三区| 午夜av免费在线观看| 欧美日本不卡视频| 天堂网av手机版| 日韩美女啊v在线免费观看| 捆绑凌虐一区二区三区| 久久精品国产999大香线蕉| 男女激情无遮挡| 国产韩国精品一区二区三区| 好吊色欧美一区二区三区| 少妇高潮一区二区三区99| 6080yy精品一区二区三区| 毛片在线播放a| 亚洲美女在线视频| www.亚洲欧美| 欧美日韩一卡二卡| 中文字幕在线欧美| 亚洲成av人影院| 亚洲人与黑人屁股眼交| 久久久综合视频| 亚洲国产精品狼友在线观看| 精品在线视频一区| 国产成人精品无码播放| 91久久黄色| 日韩精品第1页| 91九色精品| 日韩欧美一区二区在线观看| 欧美变态网站| 丁香婷婷久久久综合精品国产 | 欧美日韩在线精品一区二区三区激情| 日本少妇吞精囗交| 一区二区高清免费观看影视大全 | 日韩在线不卡| 欧美日韩在线不卡一区| 女仆av观看一区| 国产日韩欧美一区二区| www.成人| 成人两性免费视频| 欧美一级做一级爱a做片性| 国产精品久久激情| 国产在线|日韩| 国产精品美女免费| 成人全视频在线观看在线播放高清 | 精品欧美一区二区久久久伦| 日韩精品久久久久久久软件91| 国产日韩欧美影视| 香蕉久久久久久| 国产一区二区香蕉| 亚瑟国产精品| 国产欧美亚洲视频| 麻豆久久久久| 国产精品永久免费视频| 巨大黑人极品videos精品| 国产欧美精品日韩精品| 日韩av黄色| 91丝袜美腿美女视频网站| 久久国际精品| 99久久精品免费看国产四区| 伊人精品综合| 国产伦精品一区二区三毛| 久久a爱视频| 玛丽玛丽电影原版免费观看1977 | 成人免费的视频| 美女露出粉嫩尿囗让男人桶| 成人激情视频网站| 91丝袜在线观看| 97国产一区二区| 永久免费看mv网站入口78| 国产清纯白嫩初高生在线观看91| 国产123在线| 亚洲天堂福利av| 久久久久久久福利| 欧美色另类天堂2015| 亚洲精品无码久久久久| 欧美另类z0zxhd电影| 国产黄色片av| 精品性高朝久久久久久久| www.成人.com| 欧美成人小视频| 精精国产xxxx视频在线播放| 国产精品av免费在线观看| 亚洲男人在线| 国产精品污www一区二区三区| 亚洲第一二三区| 在线一区高清| 精品电影一区| 黄色aaa级片| 国产1区2区3区精品美女| 9.1成人看片免费版| 中文字幕一区二区三区av| 国产大片中文字幕在线观看| 色综合久久久久综合体桃花网| 亚洲综合网av| 亚洲福利在线播放| 最新97超碰在线| 久久久久久久久久久久久久久久久久av| 日本三级一区| 亚洲最大激情中文字幕| 亚洲品质自拍| 男女爱爱视频网站| 久久久久久穴| 亚洲av综合色区无码另类小说| 国产三级一区二区三区| 激情五月少妇a| 欧美日韩中字一区| 可以免费看毛片的网站| 色老头一区二区三区| 1区2区在线| 91老司机在线| 国精一区二区| 免费不卡av在线| 久久99国产精品免费网站| 黄色正能量网站| 一区二区三区日韩欧美| 樱花视频在线免费观看| 亚洲国产精品资源| 2024最新电影在线免费观看| 国产成人avxxxxx在线看| 97久久亚洲| 自拍偷拍一区二区三区| 日韩影院精彩在线| 亚洲国产果冻传媒av在线观看| 亚洲精品日产精品乱码不卡| 国产一级片一区二区| 亚洲美女www午夜| 91www在线| 成人欧美一区二区三区视频| 仙踪林久久久久久久999| 国产精品视频黄色| 久久久久久**毛片大全| 日产欧产va高清| 欧美成人一区二区三区| 毛片在线不卡| 91精品久久久久久久久青青| 日韩av密桃| 亚欧在线免费观看| 久久精品亚洲一区二区三区浴池 | 中文字幕有码在线观看| 国产日韩在线观看av| 精品国产乱码久久久久久蜜坠欲下 | 亚洲综合精品四区| 久久久久亚洲av成人网人人软件| 亚洲免费观看在线视频| www.com在线观看| 久久成人综合视频| 国产精品一区三区在线观看| 亚洲一区二区三区四区中文| 日本午夜一本久久久综合| 毛片aaaaaa| 欧美日韩精品免费观看视频| 四虎久久免费| 成人亲热视频网站| 久久精品免费一区二区三区| 91aaa精品| 亚洲在线一区二区三区| 日本免费不卡视频| 91高清视频免费观看| 日韩电影不卡一区| 国产xxxxx在线观看| 国产人伦精品一区二区| 一区二区三区麻豆| 久久激情视频久久| 免费观看性欧美大片无片| 白白操在线视频| 成人视屏免费看| 中文字幕第15页| 亚洲天堂视频在线观看| 久久国内精品| 日韩中文在线字幕| 成人一级片在线观看| 日韩欧美大片在线观看| 亚洲久久久久久久久久久| 亚洲精品.com| 中文字幕欧美日韩一区二区| 国产精品一区久久久久| 日韩手机在线观看| 国产香蕉97碰碰久久人人| 99综合99| www.av中文字幕| 中文字幕第一页久久| 国产乱子伦精品无码码专区| 欧美精品18videos性欧| 欧美欧美黄在线二区| 亚洲欧美天堂在线| 午夜精品123| av一本在线| 99免费在线视频观看| 亚洲欧美日韩国产一区| 久久国产高清视频| 亚洲国产精品系列| 欧美123区| 久久这里只有精品18| 久久免费的精品国产v∧| a级片免费观看| 日韩av第一页| 欧美日韩国产一区精品一区| 亚洲永久精品ww.7491进入| 日韩一区二区免费视频| 亚洲精品mv| 国产黄色激情视频| 欧美极品少妇xxxxⅹ高跟鞋| 国模私拍视频在线|