精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

精品精品视频| 国产高清不卡视频| 男人的天堂久久| 性做久久久久久免费观看| 国产高清精品一区二区三区| 国产性猛交普通话对白| 豆花视频一区二区| 黑人巨大精品欧美一区二区三区 | a级片免费视频| 亚洲不卡av不卡一区二区| 日韩限制级电影在线观看| 国产 日韩 欧美在线| 手机看片福利在线| 日韩在线a电影| 日韩一区二区在线视频| 黑人玩弄人妻一区二区三区| 色是在线视频| 成人欧美一区二区三区黑人麻豆| 国产传媒一区二区| 成人免费毛片视频| 亚洲色图网站| 日韩www在线| 一女二男3p波多野结衣| av有码在线观看| 国产无人区一区二区三区| 91在线看www| 九九热精品视频在线| 欧美a级片视频| 亚洲成人黄色网址| 久久久精品高清| 国产777精品精品热热热一区二区| 久久久精品日韩欧美| 91网站在线看| 无码无套少妇毛多18pxxxx| 91超碰国产精品| 日韩精品福利网站| 国产黄色一区二区三区| 欧美va视频| 亚洲一区在线观看免费 | 成人午夜视频网站| 国产精品嫩草视频| 精品在线免费观看视频| 日韩在线观看电影完整版高清免费悬疑悬疑 | 在线观看亚洲国产| 亚洲黄色成人| 美日韩在线视频| 熟女俱乐部一区二区视频在线| japansex久久高清精品| 色综合一区二区| 18禁裸男晨勃露j毛免费观看 | 久久九九全国免费精品观看| 欧美 变态 另类 人妖| 999国产精品一区| 717成人午夜免费福利电影| 国产91在线视频观看| 调教一区二区| ㊣最新国产の精品bt伙计久久| 日产精品一线二线三线芒果| 手机看片一区二区| 成人一区二区三区视频在线观看| 91免费看片网站| 真实的国产乱xxxx在线91| 亚洲一区日韩| 97在线视频精品| 国产一级淫片免费| 欧美视频日韩| 欧美黑人巨大xxx极品| 国产尤物在线播放| 欧美丰满日韩| 日韩一区二区三区在线播放| 亚洲精品国产精品乱码在线观看| 欧美丝袜激情| 中文字幕亚洲综合久久筱田步美| 泷泽萝拉在线播放| 一本久久青青| 国产一区二区三区在线播放免费观看| 丰满少妇在线观看资源站| 美国成人xxx| 日韩av在线看| 黄色录像a级片| 日韩有码一区| 日韩精品黄色网| 熟女丰满老熟女熟妇| 欧美国产极品| 精品小视频在线| 日本激情小视频| 首页亚洲中字| 亚洲色图35p| 欧美a在线播放| 97人人精品| 久久久av网站| 久久久久噜噜噜亚洲熟女综合| 欧美日本中文| 国产91对白在线播放| 日韩熟女一区二区| 理论片日本一区| 91日韩在线视频| 精品久久久无码中文字幕| 国产99精品视频| 九九九九精品九九九九| 二人午夜免费观看在线视频| 中文字幕一区二区三区不卡在线| 青青在线免费视频| 麻豆国产在线| 欧美日韩国产高清一区二区三区 | 乱亲女h秽乱长久久久| 亚洲精品在线91| 91无套直看片红桃在线观看| 欧美69wwwcom| 2019最新中文字幕| 国产免费的av| av一区二区三区| 色女孩综合网| 黄页网站在线| 欧美日韩中文字幕日韩欧美| 天天操天天爱天天爽| 久久久久毛片免费观看| 日韩精品久久久久久久玫瑰园| 免费看裸体网站| 欧美日韩成人| 国产99久久久欧美黑人| 国产精品一级二级| 26uuu成人网一区二区三区| 亚洲精品日韩精品| av中文字幕在线观看第一页| 欧美综合一区二区| 成熟妇人a片免费看网站| 国产欧美高清视频在线| 色综合导航网站| wwwwww在线观看| 盗摄精品av一区二区三区| 视频在线一区二区三区| 国产激情在线播放| 欧美一区二区三区视频在线| www.av天天| 亚洲黄色成人| 99国产视频在线| 1024国产在线| 色综合天天综合| 精品久久久久久无码人妻| 欧美韩国日本在线观看| 日本精品视频在线播放| 成人午夜视频一区二区播放| 国产精品视频你懂的| 噜噜噜久久亚洲精品国产品麻豆| 久久的色偷偷| 色妞久久福利网| 久久99国产综合精品免费| 成人午夜激情影院| 国产又粗又长又爽视频| 青草综合视频| 一区二区三区视频在线| 天堂中文字幕在线观看| 本田岬高潮一区二区三区| japanese在线播放| а天堂中文最新一区二区三区| 国产亚洲视频中文字幕视频| 欧美 日韩 精品| aaa国产一区| 每日在线观看av| 国产 日韩 欧美 综合 一区| 精品中文字幕在线观看| 国产免费叼嘿网站免费| 亚洲欧美一区二区三区久本道91 | 国产高清免费av在线| 日韩欧美精品网站| 久久精品老司机| 免费日韩视频| 就去色蜜桃综合| 日本韩国欧美| 亚洲丝袜在线视频| 在线视频精品免费| 国产日韩精品一区二区浪潮av| 国产一级片黄色| 欧美日韩国产高清电影| 国产精品日韩专区| 黄色动漫在线观看| 日韩一区二区免费在线电影| 成熟的女同志hd| 国产成人亚洲综合色影视| 久久99久久99精品| 欧美在线关看| 国产精品第3页| 77导航福利在线| 欧美一区二区三区小说| 国产一级视频在线| 91蜜桃免费观看视频| 日韩精品一区中文字幕| 波多野结衣在线观看一区二区| 国产精品亚洲欧美导航| av免费在线观| 亚洲国产精品久久| 中文字幕高清在线免费播放| 亚洲国产精品二十页| 激情久久综合网| 亚洲午夜91| 蜜桃麻豆91| 国产精品专区免费| 精品国产一区二区在线| 亚洲精品视频专区| 色综合欧美在线| 欧美乱大交做爰xxxⅹ小说| 国产麻豆91精品| 黄页免费在线观看视频| 国产精品chinese在线观看| 日本国产精品视频| 美女国产在线| 亚洲国模精品一区| 伊人精品一区二区三区| 亚洲在线观看免费视频| www.av天天| 成人性生交大片免费| 国产99久久九九精品无码| 欧美www视频在线观看| 国产乱子伦精品| 91天天综合| 国外色69视频在线观看| 在线中文资源天堂| 精品国产精品网麻豆系列| 亚洲视屏在线观看| 亚洲电影第三页| 五月激情四射婷婷| 26uuu国产电影一区二区| 国产裸体视频网站| 青青草精品视频| 国产精品久久..4399| 99精品在线| 免费中文日韩| 懂色av一区二区| 国产精品电影观看| а√在线中文网新版地址在线| 久久久极品av| 国产精品视频一区二区久久| 精品国产免费一区二区三区香蕉| 中文字幕乱伦视频| 欧美日韩加勒比精品一区| 波多野在线播放| 国产精品夜夜嗨| 污视频网站观看| 久久欧美肥婆一二区| 人妻夜夜添夜夜无码av| 一区二区三区网站| 一本色道久久综合亚洲二区三区| 偷拍自拍亚洲色图| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 久久久综合激的五月天| 日批免费观看视频| 国产成人av一区二区三区在线 | 国产成人精品视频免费| 久久久久亚洲蜜桃| 给我免费观看片在线电影的| 国产91精品在线观看| 日韩a一级欧美一级| 久久精品国产成人一区二区三区 | 日韩高清在线不卡| 无码无遮挡又大又爽又黄的视频| 亚洲久色影视| av网站手机在线观看| 欧美日韩国内| 国产乱子伦精品无码专区| 欧美成人有码| 91嫩草国产丨精品入口麻豆| 99热国内精品永久免费观看| 在线免费观看成人| 国产精品99久久精品| 欧美日韩视频免费在线观看| 99久久亚洲精品蜜臀| 国产福利片一区二区| 天天射成人网| 日本一二三区视频在线| 中文字幕一区二区精品区| 久久久天堂国产精品| 欧美国产另类| www.亚洲成人网| 1024日韩| 精品久久久久久久久久中文字幕| 中文精品在线| 红桃av在线播放| 日本午夜一区二区| 国产又黄又猛又粗| 激情综合一区二区三区| 女人扒开双腿让男人捅 | 国产一区玩具在线观看| 欧美日韩免费电影| 亚洲aⅴ男人的天堂在线观看| 国产一区2区在线观看| 97超碰在线播放| 欧美电影完整版在线观看| 日本午夜精品一区二区| 93在线视频精品免费观看| 男人的天堂视频在线| 亚洲片区在线| 熟妇人妻无乱码中文字幕真矢织江| 奇米在线7777在线精品| 国产精品igao网网址不卡| 成人精品视频一区二区三区| 手机av免费看| 亚洲欧洲一区二区三区| 久久在线视频精品| 色欧美88888久久久久久影院| 在线免费看毛片| 日韩美女视频在线| 男操女在线观看| xxx一区二区| segui88久久综合9999| 国产精品扒开腿做爽爽爽视频| www.久久99| 精品麻豆av| 日韩国产专区| aa视频在线播放| 免费高清在线一区| 第四色在线视频| 中文字幕一区免费在线观看| 国产性xxxx高清| 欧美浪妇xxxx高跟鞋交| 性高潮久久久久久久久久| 中文字幕欧美日韩精品| av岛国在线| 国产在线精品一区免费香蕉| 免费福利视频一区| 久久av秘一区二区三区| 美女日韩在线中文字幕| 日本成人在线免费观看| 国产日韩精品一区二区三区在线| 精品少妇久久久久久888优播| 欧美性一区二区| 日韩一级中文字幕| 久久国产精品影片| 日韩精品麻豆| 精品国产二区在线| 欧美一区成人| 美女在线视频一区二区| 久久麻豆一区二区| 日本一区二区免费在线观看| 欧美另类z0zxhd电影| 毛片在线免费| 久久久免费高清电视剧观看| 色综合一区二区日本韩国亚洲| 蜜桃视频日韩| 在线欧美日韩| 精产国品一区二区三区| 国产精品国产馆在线真实露脸 | 美女精品一区最新中文字幕一区二区三区| 久久久久亚洲av无码专区喷水| 日本欧美久久久久免费播放网| 极品白嫩丰满美女无套| 亚洲国产一区视频| 亚洲av无码乱码国产麻豆 | 亚洲专区国产精品| 久久在线视频| 校园春色 亚洲色图| 国产视频一区二区三区在线观看| 日韩av在线天堂| 欧美成人vr18sexvr| 日本乱理伦在线| 亚洲va久久久噜噜噜久久天堂| 久久在线视频| 久久久久久久高清| 中文字幕亚洲视频| 一级特黄录像免费看| 最近2019中文字幕mv免费看| 成人自拍视频网| 日韩精品一区二区三区外面| 狂野欧美性猛交xxxx巴西| 成人免费网站黄| 色噜噜久久综合| 男人天堂网在线观看| 日本精品久久久| 少妇精品久久久| 日本成人黄色网| 欧美激情中文不卡| 一级特黄aa大片| 欧美床上激情在线观看| 88久久精品| 水蜜桃色314在线观看| 94色蜜桃网一区二区三区| 国产91精品一区| 尤物精品国产第一福利三区 | 国产九九在线视频| 国产精品欧美综合在线| 国产一区二区三区视频免费观看| 久久躁日日躁aaaaxxxx| 北条麻妃在线一区二区免费播放 | 蜜臀久久99精品久久久| 91av视频在线| 激情五月综合| 想看黄色一级片| 亚洲午夜精品网| 嫩草在线播放| 国产精品欧美一区二区| 午夜久久一区| 第四色在线视频| 欧美日韩免费一区二区三区视频| 在线免费观看污| 精品久久一区二区三区蜜桃| 日韩成人精品在线观看| 天天看片中文字幕| 国产视频精品久久久| 亚洲一区二区三区久久久| 国产精品又粗又长|