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

從實戰角度聊聊JVM調優的幾種場景

開發 前端
cpu占用過高要分情況討論,是不是業務上在搞活動,突然有大批的流量進來,而且活動結束后cpu占用率就下降了,如果是這種情況其實可以不用太關心,因為請求越多,需要處理的線程數越多,這是正常的現象。

最近很多小伙伴跟我說,自己學了不少JVM的調優知識,但是在實際工作中卻不知道何時對JVM進行調優。今天,冰河就為大家介紹幾種JVM調優的場景。

在閱讀本文時,冰河假定大家已經了解了運行時的數據區域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器。

cpu占用過高

cpu占用過高要分情況討論,是不是業務上在搞活動,突然有大批的流量進來,而且活動結束后cpu占用率就下降了,如果是這種情況其實可以不用太關心,因為請求越多,需要處理的線程數越多,這是正常的現象。

話說回來,如果你的服務器配置本身就差,cpu也只有一個核心,這種情況,稍微多一點流量就真的能夠把你的cpu資源耗盡,這時應該考慮先把配置提升吧。

第二種情況,cpu占用率長期過高,這種情況下可能是你的程序有那種循環次數超級多的代碼,甚至是出現死循環了。排查步驟如下:

1.用top命令查看cpu占用情況

這樣就可以定位出cpu過高的進程。在linux下,top命令獲得的進程號和jps工具獲得的vmid是相同的:

2.用top -Hp命令查看線程的情況

可以看到是線程id為7287這個線程一直在占用cpu

3.把線程號轉換為16進制

[root@localhost ~]# printf "%x" 7287
1c77

記下這個16進制的數字,下面我們要用

4.用jstack工具查看線程棧情況

[root@localhost ~]# jstack 7268 | grep 1c77 -A 10
"http-nio-8080-exec-2" #16 daemon prio=5 os_prio=0 tid=0x00007fb66ce81000 nid=0x1c77 runnable [0x00007fb639ab9000]
   java.lang.Thread.State: RUNNABLE
 at com.binghe.jvm.service.EndlessLoopService.service(EndlessLoopService.java:19)
 at com.binghe.jvm.controller.JVMController.endlessLoop(JVMController.java:30)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 at java.lang.reflect.Method.invoke(Method.java:498)
 at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
 at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
 at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:105)

通過jstack工具輸出現在的線程棧,再通過grep命令結合上一步拿到的線程16進制的id定位到這個線程的運行情況,其中jstack后面的7268是第(1)步定位到的進程號,grep后面的是(2)、(3)步定位到的線程號。

從輸出結果可以看到這個線程處于運行狀態,在執行com.binghe.jvm.service.EndlessLoopService.service這個方法,代碼行號是19行,這樣就可以去到代碼的19行,找到其所在的代碼塊,看看是不是處于循環中,這樣就定位到了問題。

死鎖

死鎖并沒有第一種場景那么明顯,web應用肯定是多線程的程序,它服務于多個請求,程序發生死鎖后,死鎖的線程處于等待狀態(WAITING或TIMED_WAITING),等待狀態的線程不占用cpu,消耗的內存也很有限,而表現上可能是請求沒法進行,最后超時了。在死鎖情況不多的時候,這種情況不容易被發現。

可以使用jstack工具來查看

1.jps查看java進程

[root@localhost ~]# jps -l
8737 sun.tools.jps.Jps
8682 jvm-0.0.1-SNAPSHOT.jar

2.jstack查看死鎖問題

由于web應用往往會有很多工作線程,特別是在高并發的情況下線程數更多,于是這個命令的輸出內容會十分多。jstack最大的好處就是會把產生死鎖的信息(包含是什么線程產生的)輸出到最后,所以我們只需要看最后的內容就行了

Java stack information for the threads listed above:
===================================================
"Thread-4":
 at com.binghe.jvm.service.DeadLockService.service2(DeadLockService.java:35)
 - waiting to lock <0x00000000f5035ae0> (a java.lang.Object)
 - locked <0x00000000f5035af0> (a java.lang.Object)
 at com.binghe.jvm.controller.JVMController.lambda$deadLock$1(JVMController.java:41)
 at com.binghe.jvm.controller.JVMController$$Lambda$457/1776922136.run(Unknown Source)
 at java.lang.Thread.run(Thread.java:748)
"Thread-3":
 at com.binghe.jvm.service.DeadLockService.service1(DeadLockService.java:27)
 - waiting to lock <0x00000000f5035af0> (a java.lang.Object)
 - locked <0x00000000f5035ae0> (a java.lang.Object)
 at com.binghe.jvm.controller.JVMController.lambda$deadLock$0(JVMController.java:37)
 at com.binghe.jvm.controller.JVMController$$Lambda$456/474286897.run(Unknown Source)
 at java.lang.Thread.run(Thread.java:748)

Found 1 deadlock.

發現了一個死鎖,原因也一目了然。

內存泄漏

我們都知道,java和c++的最大區別是前者會自動收回不再使用的內存,后者需要程序員手動釋放。在c++中,如果我們忘記釋放內存就會發生內存泄漏。但是,不要以為jvm幫我們回收了內存就不會出現內存泄漏。

程序發生內存泄漏后,進程的可用內存會慢慢變少,最后的結果就是拋出OOM錯誤。發生OOM錯誤后可能會想到是內存不夠大,于是把-Xmx參數調大,然后重啟應用。這么做的結果就是,過了一段時間后,OOM依然會出現。最后無法再調大最大堆內存了,結果就是只能每隔一段時間重啟一下應用。

內存泄漏的另一個可能的表現是請求的響應時間變長了。這是因為頻繁發生的GC會暫停其它所有線程(Stop The World)造成的。

為了模擬這個場景,使用了以下的程序

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Main {

    public static void main(String[] args) {
        Main main = new Main();
        while (true) {
            try {
                Thread.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            main.run();
        }
    }

    private void run() {
        ExecutorService executorService = Executors.newCachedThreadPool();
        for (int i = 0; i < 10; i++) {
            executorService.execute(() -> {
                // do something...
            });
        }
    }
}

運行參數是-Xms20m -Xmx20m -XX:+PrintGC,把可用內存調小一點,并且在發生gc時輸出信息,運行結果如下:

...
[GC (Allocation Failure)  12776K->10840K(18432K), 0.0309510 secs]
[GC (Allocation Failure)  13400K->11520K(18432K), 0.0333385 secs]
[GC (Allocation Failure)  14080K->12168K(18432K), 0.0332409 secs]
[GC (Allocation Failure)  14728K->12832K(18432K), 0.0370435 secs]
[Full GC (Ergonomics)  12832K->12363K(18432K), 0.1942141 secs]
[Full GC (Ergonomics)  14923K->12951K(18432K), 0.1607221 secs]
[Full GC (Ergonomics)  15511K->13542K(18432K), 0.1956311 secs]
...
[Full GC (Ergonomics)  16382K->16381K(18432K), 0.1734902 secs]
[Full GC (Ergonomics)  16383K->16383K(18432K), 0.1922607 secs]
[Full GC (Ergonomics)  16383K->16383K(18432K), 0.1824278 secs]
[Full GC (Allocation Failure)  16383K->16383K(18432K), 0.1710382 secs]
[Full GC (Ergonomics)  16383K->16382K(18432K), 0.1829138 secs]
[Full GC (Ergonomics) Exception in thread "main"  16383K->16382K(18432K), 0.1406222 secs]
[Full GC (Allocation Failure)  16382K->16382K(18432K), 0.1392928 secs]
[Full GC (Ergonomics)  16383K->16382K(18432K), 0.1546243 secs]
[Full GC (Ergonomics)  16383K->16382K(18432K), 0.1755271 secs]
[Full GC (Ergonomics)  16383K->16382K(18432K), 0.1699080 secs]
[Full GC (Allocation Failure)  16382K->16382K(18432K), 0.1697982 secs]
[Full GC (Ergonomics)  16383K->16382K(18432K), 0.1851136 secs]
[Full GC (Allocation Failure)  16382K->16382K(18432K), 0.1655088 secs]
java.lang.OutOfMemoryError: Java heap space

可以看到雖然一直在gc,占用的內存卻越來越多,說明程序有的對象無法被回收。但是上面的程序對象都是定義在方法內的,屬于局部變量,局部變量在方法運行結果后,所引用的對象在gc時應該被回收啊,但是這里明顯沒有。

為了找出到底是哪些對象沒能被回收,我們加上運行參數-XX:+HeapDumpOnOutOfMemoryError  -XX:HeapDumpPath=heap.bin,意思是發生OOM時把堆內存信息dump出來。運行程序直至異常,于是得到heap.dump文件,然后我們借助eclipse的MAT插件來分析,如果沒有安裝需要先安裝。

然后File->Open Heap Dump... ,然后選擇剛才dump出來的文件,選擇Leak Suspects。

MAT會列出所有可能發生內存泄漏的對象。

可以看到居然有21260個Thread對象,3386個ThreadPoolExecutor對象,如果你去看一下java.util.concurrent.ThreadPoolExecutor的源碼,可以發現線程池為了復用線程,會不斷地等待新的任務,線程也不會回收,需要調用其shutdown方法才能讓線程池執行完任務后停止。

其實線程池定義成局部變量,好的做法是設置成單例。

上面只是其中一種處理方法

在線上的應用,內存往往會設置得很大,這樣發生OOM再把內存快照dump出來的文件就會很大,可能大到在本地的電腦中已經無法分析了(因為內存不足夠打開這個dump文件)。這里介紹另一種處理辦法:

1.用jps定位到進程號

C:\Users\binghe\IdeaProjects\maven-project\target\classes\org\example\net>jps -l
24836 org.example.net.Main
62520 org.jetbrains.jps.cmdline.Launcher
129980 sun.tools.jps.Jps
136028 org.jetbrains.jps.cmdline.Launcher

因為已經知道了是哪個應用發生了OOM,這樣可以直接用jps找到進程號135988

2.用jstat分析gc活動情況

jstat是一個統計java進程內存使用情況和gc活動的工具,參數可以有很多,可以通過jstat -help查看所有參數以及含義

C:\Users\binghe\IdeaProjects\maven-project\target\classes\org\example\net>jstat -gcutil -t -h8 24836 1000
Timestamp         S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
           29.1  32.81   0.00  23.48  85.92  92.84  84.13     14    0.339     0    0.000    0.339
           30.1  32.81   0.00  78.12  85.92  92.84  84.13     14    0.339     0    0.000    0.339
           31.1   0.00   0.00  22.70  91.74  92.72  83.71     15    0.389     1    0.233    0.622

上面是命令意思是輸出gc的情況,輸出時間,每8行輸出一個行頭信息,統計的進程號是24836,每1000毫秒輸出一次信息。

輸出信息是Timestamp是距離jvm啟動的時間,S0、S1、E是新生代的兩個Survivor和Eden,O是老年代區,M是Metaspace,CCS使用壓縮比例,YGC和YGCT分別是新生代gc的次數和時間,FGC和FGCT分別是老年代gc的次數和時間,GCT是gc的總時間。

雖然發生了gc,但是老年代內存占用率根本沒下降,說明有的對象沒法被回收(當然也不排除這些對象真的是有用)。

3.用jmap工具dump出內存快照

jmap可以把指定java進程的內存快照dump出來,效果和第一種處理辦法一樣,不同的是它不用等OOM就可以做到,而且dump出來的快照也會小很多。

jmap -dump:live,format=b,file=heap.bin 24836

這時會得到heap.bin的內存快照文件,然后就可以用eclipse來分析了。

總結

以上三種嚴格地說還算不上jvm的調優,只是用了jvm工具把代碼中存在的問題找了出來。我們進行jvm的主要目的是盡量減少停頓時間,提高系統的吞吐量。

但是如果我們沒有對系統進行分析就盲目去設置其中的參數,可能會得到更壞的結果,jvm發展到今天,各種默認的參數可能是實驗室的人經過多次的測試來做平衡的,適用大多數的應用場景。

如果你認為你的jvm確實有調優的必要,也務必要取樣分析,最后還得慢慢多次調節,才有可能得到更優的效果。

責任編輯:姜華 來源: 冰河技術
相關推薦

2010-09-27 09:23:42

JVM調優

2023-04-24 14:54:09

JVM性能調優

2022-09-20 14:11:37

JVM調優命令

2024-12-04 15:49:29

2021-12-06 11:03:57

JVM性能調優

2012-01-10 14:35:08

JavaJVM

2017-07-21 08:55:13

TomcatJVM容器

2023-11-11 19:07:23

JVMJava

2023-11-10 11:23:20

JVM內存

2010-09-26 13:39:46

JVM調優

2012-01-10 15:13:56

JavaJVM

2010-09-26 09:08:17

JVM調優

2010-09-25 15:52:27

JVM內存JVM

2019-12-20 14:21:26

JVM調優垃圾回收

2017-09-22 15:15:23

jvm調優命令

2021-06-03 08:32:18

JVM調優虛擬機

2017-10-17 14:02:30

jvm調優工具

2021-11-21 23:03:38

jvm調優虛擬機

2010-09-25 13:05:07

JVM參數

2010-09-26 10:53:00

JVM內存調優設置
點贊
收藏

51CTO技術棧公眾號

欧美一级电影免费在线观看| 欧美丝袜自拍制服另类| 精品福利影视| 日韩av免费播放| 亚洲综合五月| 日韩精品欧美国产精品忘忧草| 88av.com| 婷婷色在线播放| 久久综合色婷婷| 91精品视频一区| 久久精品国产成人av| 亚洲乱码电影| 亚洲天堂免费观看| 欧美高清精品一区二区| 成人免费看黄| 亚洲激情成人在线| 午夜精品一区二区在线观看| 亚洲黄色在线观看视频| 视频在线观看国产精品| 久久6免费高清热精品| 久久久久久亚洲中文字幕无码| 成人亚洲网站| 欧美日韩精品在线播放| 国产911在线观看| 国产露出视频在线观看| 99热99精品| 91在线视频免费| 天天爱天天做天天爽| 在线亚洲欧美| 久久久久久国产精品久久| 国产一区二区三区视频播放| 神马影视一区二区| 亚洲大尺度美女在线| 国产探花在线观看视频| 日韩av免费| 欧美性少妇18aaaa视频| 免费网站在线观看视频| 调教一区二区| 亚洲激情男女视频| 蜜臀在线免费观看| 免费av毛片在线看| 国产精品麻豆视频| 日韩一区免费观看| 国产高清在线看| 久久久精品黄色| 久久亚洲一区二区| 亚洲色偷精品一区二区三区| www.亚洲免费av| 国产专区一区二区三区| 欧美熟女一区二区| 波多野结衣精品在线| 国产精品国产精品| 国产成人三级在线观看视频| 国产91丝袜在线观看| 国产99在线免费| 亚洲精品字幕在线| 成人午夜激情片| 国产精品一区二区三区观看| 性色av蜜臀av| 成人黄色av电影| 精品日本一区二区三区在线观看| 黄色av网址在线| 99这里只有久久精品视频| 精品日本一区二区三区| 国自产拍在线网站网址视频| 中文字幕免费一区| 中日韩在线视频| 一区二区三区伦理| 无码av免费一区二区三区试看 | 亚洲黄色性网站| 欧美精品在欧美一区二区| av影视在线看| 色噜噜久久综合| 中文字幕中文在线| 亚洲精品在线播放| 日韩精品在线影院| 天堂av网手机版| 欧美韩国一区| 2023亚洲男人天堂| 中国老头性行为xxxx| 韩国v欧美v亚洲v日本v| 国产精品一区二区欧美| 成人性生交大片免费看午夜| ...xxx性欧美| 青青草视频在线免费播放| 成人亚洲欧美| 91麻豆精品国产91久久久久久| 任你躁av一区二区三区| 女人av一区| 欧美麻豆久久久久久中文| 国产又色又爽又黄的| 免费高清不卡av| 国产福利久久精品| a中文在线播放| 亚洲一区二区黄色| 邪恶网站在线观看| 嫩草国产精品入口| 精品国偷自产在线视频| 久久一级黄色片| 蜜臀av性久久久久蜜臀aⅴ流畅| 成人91免费视频| av在线电影网| 香港成人在线视频| 污污视频网站在线| 国产一区二区三区91| 久久久久久久久中文字幕| 中文字幕免费高清在线观看| 成人黄色国产精品网站大全在线免费观看 | jlzzjlzz亚洲日本少妇| 一区二区不卡在线| 亚洲天堂免费电影| 日韩免费一区二区三区在线播放| 中文字幕免费高清| 亚洲高清不卡| 亚洲一区亚洲二区| 91视频在线观看| 欧美日韩精品在线观看| 美女流白浆视频| 久久中文字幕av一区二区不卡| 91精品国产乱码久久久久久蜜臀 | 色网在线免费观看| 日韩欧美国产一二三区| 91无套直看片红桃在线观看| 国产精品嫩草99av在线| 动漫精品视频| 在线欧美三级| 欧美日韩国产中文| 日本成人免费视频| 欧美亚洲视频| 国产欧美一区二区在线播放| 五月花成人网| 制服.丝袜.亚洲.另类.中文| 四虎影视1304t| 久久中文精品| 欧美日韩精品免费观看视一区二区| 人妖欧美1区| 精品久久一区二区| 久久综合激情网| 国产成人小视频| 久久综合亚洲精品| 我要色综合中文字幕| 欧美精品制服第一页| 国产乱子伦精品无码码专区| 亚洲天天做日日做天天谢日日欢| 亚洲36d大奶网| 日本久久精品| 91精品久久久久久久久不口人| wwwww在线观看免费视频| 在线观看不卡视频| 久久久视频6r| 免费在线成人网| 自拍另类欧美| 欧洲精品99毛片免费高清观看| 久久九九有精品国产23| 国产模特av私拍大尺度| 亚洲资源在线观看| 野战少妇38p| 国产亚洲在线观看| 欧美国产二区| 精品自拍视频| 欧美精品日韩三级| 欧美亚洲精品在线观看| 午夜影视日本亚洲欧洲精品| 美女脱光内衣内裤| 久久99久久精品| 经典三级在线视频| 国产精品黄网站| 国产成人拍精品视频午夜网站| 成人p站proumb入口| 欧美美女网站色| 精品少妇久久久| 91免费观看视频在线| 国产wwwxx| 真实国产乱子伦精品一区二区三区| 爱情岛论坛亚洲入口| 小早川怜子影音先锋在线观看| 伊人伊人伊人久久| 精品人妻无码一区二区三区蜜桃一 | 日韩福利影院| 国产一区二区三区免费观看在线| 欧美激情亚洲激情| 国产日本在线视频| 欧美成人a在线| 区一区二在线观看| 亚洲人成7777| 中文字幕高清视频| 国产乱人伦偷精品视频免下载| 黄页网站大全在线观看| 清纯唯美亚洲综合一区| 99蜜桃在线观看免费视频网站| 香蕉久久免费电影| 九九久久国产精品| 国产乱理伦片a级在线观看| 欧美草草影院在线视频| 国产成人精品亚洲| 亚洲国产精品一区二区久久恐怖片| 成年人网站免费在线观看| 国产综合久久久久影院| 欧美牲交a欧美牲交aⅴ免费下载| 亚洲成人tv| 欧美亚洲另类久久综合| 亚洲综合网站| 91精品国产综合久久香蕉922| 九色porny丨入口在线| 美女扒开尿口让男人操亚洲视频网站| 欧美牲交a欧美牲交aⅴ免费真| 日本在线观看www| 亚洲成人激情在线| 国产精品国产三级国产aⅴ| 精品久久久久久久久久久| 亚洲一区电影在线观看| 久久亚洲免费视频| 女女调教被c哭捆绑喷水百合| 蜜臀av性久久久久蜜臀aⅴ流畅| 青青艹视频在线| 国产精品av久久久久久麻豆网| 亚洲精品电影在线一区| 青青视频一区二区| 国产精品国产三级欧美二区| 国产一区二区三区视频在线| 国产精品人成电影| 伊人久久综合一区二区| 国内精品久久久久久久| 黄色小网站在线观看| 在线日韩中文字幕| 国产裸舞福利在线视频合集| 亚洲欧美国产一区二区三区| 高清毛片aaaaaaaaa片| 日韩精品在线看片z| 国产精品一区二区黑人巨大| 精品视频在线免费| 日韩欧美国产另类| 日本高清不卡在线观看| 国产午夜免费福利| 天天综合日日夜夜精品| 日本网站在线免费观看| 亚洲成a天堂v人片| 国产在线成人精品午夜| 一区二区三区精品视频| 黄页网站免费观看| 亚洲精品免费在线播放| 国产精品成人免费观看| 亚洲精品中文在线| 青娱乐91视频| 亚洲一区免费观看| 成年人午夜视频| 欧美日韩国产在线看| 免费观看一区二区三区毛片| 欧美日韩国产精品一区二区不卡中文 | 亚洲 欧美 激情 小说 另类| 日韩不卡在线观看| 欧美拍拍视频| 伊人激情综合网| 幼a在线观看| 美日韩在线视频| jizz一区二区三区| 欧美在线国产精品| 成人自拍av| 成人a级免费视频| 日韩一区二区三区色| 97人人做人人人难人人做| 99精品中文字幕在线不卡 | 欧美r级电影| 一道本在线观看视频| 黄色av一区| 成人黄色片视频| 久久国产综合精品| 欧美69精品久久久久久不卡| 波多野结衣在线一区| 先锋影音av在线| 成人欧美一区二区三区1314| 久一区二区三区| 在线精品视频免费播放| 91国偷自产中文字幕久久| 精品国产乱码久久久久久浪潮| 四虎国产精品永远| 中文字幕综合一区| 免费污视频在线| 国产精品你懂得| 999久久精品| 污视频在线免费观看一区二区三区| 国产精品久久久久久麻豆一区软件 | 国产三级在线| 欧美大片第1页| 日韩精品一区二区三区| 99国产在线视频| 精品理论电影| 超碰成人免费在线| 免费成人性网站| 精品无码人妻少妇久久久久久| 国产亚洲一区二区三区在线观看 | 亚洲综合最新在线| 久操成人av| 人妻无码一区二区三区四区| 久久一综合视频| 国产原创剧情av| 国产精品久久久久久户外露出 | 国产美女高潮在线| 国产区精品在线观看| 久久porn| 老司机午夜网站| 青青草国产成人99久久| av在线播放网址| 亚洲视频精选在线| 这里只有精品免费视频| 日韩av在线网| 在线观看av免费| 国产日韩精品一区二区| 亚洲区小说区图片区qvod按摩| 国产日韩第一页| 美国三级日本三级久久99 | 亚洲丝袜制服诱惑| 成人一二三四区| 精品视频—区二区三区免费| 国精一区二区三区| 成人国产精品av| 成人精品天堂一区二区三区| 91国视频在线| 成人免费观看av| 玖玖爱免费视频| 3atv一区二区三区| 日韩三级影院| 国产欧美一区二区三区久久人妖 | 免费国产成人看片在线| 捆绑变态av一区二区三区| 中文字幕一区二区三区人妻| 香蕉成人啪国产精品视频综合网 | 中文字幕精品久久| 51一区二区三区| 水蜜桃亚洲精品| 日韩高清一区在线| 欧美成人国产精品一区二区| 欧美日韩精品二区| 日韩有码电影| 欧美中文字幕视频在线观看| 天海翼精品一区二区三区| 人妻熟妇乱又伦精品视频| 99国产精品一区| 好看的av在线| 亚洲男女性事视频| 日韩中文影院| 五月天婷亚洲天综合网鲁鲁鲁| 日韩av成人高清| 久久久久99精品成人| 欧美日韩国产精选| 黄黄的网站在线观看| 91久久精品www人人做人人爽 | 久久久久久成人精品| 久久动漫网址| 国产欧美在线一区| 国产婷婷一区二区| 中文字幕第31页| 久久夜精品va视频免费观看| 免费精品一区二区三区在线观看| 日本道在线视频| va亚洲va日韩不卡在线观看| 国产精品人人人人| 中文字幕欧美日韩| 9999精品视频| 日韩日韩日韩日韩日韩| 久久综合狠狠综合久久综合88| 久久人妻免费视频| 日韩中文视频免费在线观看| 日韩一区二区三区色| 91免费视频网站在线观看| 欧美国产精品一区二区| 国产精品永久久久久久久久久| 欧美极品少妇全裸体| 亚洲警察之高压线| 中文字幕丰满乱码| 亚洲国产综合在线| 国产永久免费高清在线观看| 国产一区二中文字幕在线看 | 中文字幕一区在线观看| 风流老熟女一区二区三区| 青青青国产精品一区二区| 97精品中文字幕| 国产精品无码专区| 欧美日韩电影一区| av中文字幕在线观看第一页| 日韩动漫在线观看| 福利一区在线观看| 波多野结衣人妻| 久久6精品影院| 精品国产一区探花在线观看 | 久久久综合九色合综国产精品| 亚洲在线精品视频| 午夜精品一区二区三区在线视频| 欧美一区电影| 一边摸一边做爽的视频17国产| 欧洲日韩一区二区三区| 久久电影网站| 亚洲一区二区三区精品在线观看 | 久久国产精品久久精品国产| 精品一区二区三区在线观看| 欧美日韩一二三四区| 久久综合久久美利坚合众国| 久操国产精品| 日韩免费高清一区二区| 7777精品伊人久久久大香线蕉超级流畅|