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

京東二面:你工作中做過(guò) JVM 調(diào)優(yōu)嗎?怎么做的?

開(kāi)發(fā) 前端
死鎖并沒(méi)有第一種場(chǎng)景那么明顯,web應(yīng)用肯定是多線程的程序,它服務(wù)于多個(gè)請(qǐng)求,程序發(fā)生死鎖后,死鎖的線程處于等待狀態(tài)(WAITING或TIMED_WAITING),等待狀態(tài)的線程不占用cpu,消耗的內(nèi)存也很有限,而表現(xiàn)上可能是請(qǐng)求沒(méi)法進(jìn)行,最后超時(shí)了。

cpu占用過(guò)高

cpu占用過(guò)高要分情況討論,是不是業(yè)務(wù)上在搞活動(dòng),突然有大批的流量進(jìn)來(lái),而且活動(dòng)結(jié)束后cpu占用率就下降了,如果是這種情況其實(shí)可以不用太關(guān)心,因?yàn)檎?qǐng)求越多,需要處理的線程數(shù)越多,這是正常的現(xiàn)象。

話說(shuō)回來(lái),如果你的服務(wù)器配置本身就差,cpu也只有一個(gè)核心,這種情況,稍微多一點(diǎn)流量就真的能夠把你的cpu資源耗盡,這時(shí)應(yīng)該考慮先把配置提升吧。

第二種情況,cpu占用率長(zhǎng)期過(guò)高,這種情況下可能是你的程序有那種循環(huán)次數(shù)超級(jí)多的代碼,甚至是出現(xiàn)死循環(huán)了。排查步驟如下:

(1)用top命令查看cpu占用情況

圖片圖片

這樣就可以定位出cpu過(guò)高的進(jìn)程。在linux下,top命令獲得的進(jìn)程號(hào)和jps工具獲得的vmid是相同的:

圖片圖片

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

圖片圖片

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

(3)把線程號(hào)轉(zhuǎn)換為16進(jìn)制

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

記下這個(gè)16進(jìn)制的數(shù)字,下面我們要用

(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.spareyaya.jvm.service.EndlessLoopService.service(EndlessLoopService.java:19)
 at com.spareyaya.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)

通過(guò)jstack工具輸出現(xiàn)在的線程棧,再通過(guò)grep命令結(jié)合上一步拿到的線程16進(jìn)制的id定位到這個(gè)線程的運(yùn)行情況,其中jstack后面的7268是第(1)步定位到的進(jìn)程號(hào),grep后面的是(2)、(3)步定位到的線程號(hào)。

從輸出結(jié)果可以看到這個(gè)線程處于運(yùn)行狀態(tài),在執(zhí)行com.spareyaya.jvm.service.EndlessLoopService.service這個(gè)方法,代碼行號(hào)是19行,這樣就可以去到代碼的19行,找到其所在的代碼塊,看看是不是處于循環(huán)中,這樣就定位到了問(wèn)題。

死鎖

死鎖并沒(méi)有第一種場(chǎng)景那么明顯,web應(yīng)用肯定是多線程的程序,它服務(wù)于多個(gè)請(qǐng)求,程序發(fā)生死鎖后,死鎖的線程處于等待狀態(tài)(WAITING或TIMED_WAITING),等待狀態(tài)的線程不占用cpu,消耗的內(nèi)存也很有限,而表現(xiàn)上可能是請(qǐng)求沒(méi)法進(jìn)行,最后超時(shí)了。

在死鎖情況不多的時(shí)候,這種情況不容易被發(fā)現(xiàn)。可以使用jstack工具來(lái)查看。

(1)jps查看java進(jìn)程

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

(2)jstack查看死鎖問(wèn)題

由于web應(yīng)用往往會(huì)有很多工作線程,特別是在高并發(fā)的情況下線程數(shù)更多,于是這個(gè)命令的輸出內(nèi)容會(huì)十分多。

jstack最大的好處就是會(huì)把產(chǎn)生死鎖的信息(包含是什么線程產(chǎn)生的)輸出到最后,所以我們只需要看最后的內(nèi)容就行了

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

Found 1 deadlock.

發(fā)現(xiàn)了一個(gè)死鎖,原因也一目了然。

內(nèi)存泄漏

我們都知道,java和c++的最大區(qū)別是前者會(huì)自動(dòng)收回不再使用的內(nèi)存,后者需要程序員手動(dòng)釋放。

在c++中,如果我們忘記釋放內(nèi)存就會(huì)發(fā)生內(nèi)存泄漏。

但是,不要以為jvm幫我們回收了內(nèi)存就不會(huì)出現(xiàn)內(nèi)存泄漏。

程序發(fā)生內(nèi)存泄漏后,進(jìn)程的可用內(nèi)存會(huì)慢慢變少,最后的結(jié)果就是拋出OOM錯(cuò)誤。

發(fā)生OOM錯(cuò)誤后可能會(huì)想到是內(nèi)存不夠大,于是把-Xmx參數(shù)調(diào)大,然后重啟應(yīng)用。

這么做的結(jié)果就是,過(guò)了一段時(shí)間后,OOM依然會(huì)出現(xiàn)。最后無(wú)法再調(diào)大最大堆內(nèi)存了,結(jié)果就是只能每隔一段時(shí)間重啟一下應(yīng)用。

內(nèi)存泄漏的另一個(gè)可能的表現(xiàn)是請(qǐng)求的響應(yīng)時(shí)間變長(zhǎng)了。

這是因?yàn)轭l繁發(fā)生的GC會(huì)暫停其它所有線程(Stop The World)造成的。為了模擬這個(gè)場(chǎng)景,使用了以下的程序。

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...
            });
        }
    }
}

運(yùn)行參數(shù)是-Xms20m -Xmx20m -XX:+PrintGC,把可用內(nèi)存調(diào)小一點(diǎn),并且在發(fā)生gc時(shí)輸出信息,運(yùn)行結(jié)果如下。

...
[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,占用的內(nèi)存卻越來(lái)越多,說(shuō)明程序有的對(duì)象無(wú)法被回收。

但是上面的程序?qū)ο蠖际嵌x在方法內(nèi)的,屬于局部變量,局部變量在方法運(yùn)行結(jié)果后,所引用的對(duì)象在gc時(shí)應(yīng)該被回收啊,但是這里明顯沒(méi)有。

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

然后File->Open Heap Dump... ,然后選擇剛才dump出來(lái)的文件,選擇Leak Suspects

圖片圖片

MAT會(huì)列出所有可能發(fā)生內(nèi)存泄漏的對(duì)象。

圖片圖片

可以看到居然有21260個(gè)Thread對(duì)象,3386個(gè)ThreadPoolExecutor對(duì)象,如果你去看一下java.util.concurrent.ThreadPoolExecutor的源碼,可以發(fā)現(xiàn)線程池為了復(fù)用線程,會(huì)不斷地等待新的任務(wù),線程也不會(huì)回收,需要調(diào)用其shutdown()方法才能讓線程池執(zhí)行完任務(wù)后停止。

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

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

在線上的應(yīng)用,內(nèi)存往往會(huì)設(shè)置得很大,這樣發(fā)生OOM再把內(nèi)存快照dump出來(lái)的文件就會(huì)很大,可能大到在本地的電腦中已經(jīng)無(wú)法分析了(因?yàn)閮?nèi)存不足夠打開(kāi)這個(gè)dump文件)。這里介紹另一種處理辦法:

(1)用jps定位到進(jìn)程號(hào)

C:\Users\spareyaya\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

因?yàn)橐呀?jīng)知道了是哪個(gè)應(yīng)用發(fā)生了OOM,這樣可以直接用jps找到進(jìn)程號(hào)135988

(2)用jstat分析gc活動(dòng)情況

jstat是一個(gè)統(tǒng)計(jì)java進(jìn)程內(nèi)存使用情況和gc活動(dòng)的工具,參數(shù)可以有很多,可以通過(guò)jstat -help查看所有參數(shù)以及含義

C:\Users\spareyaya\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的情況,輸出時(shí)間,每8行輸出一個(gè)行頭信息,統(tǒng)計(jì)的進(jìn)程號(hào)是24836,每1000毫秒輸出一次信息。

輸出信息是Timestamp是距離jvm啟動(dòng)的時(shí)間,S0、S1、E是新生代的兩個(gè)Survivor和Eden,O是老年代區(qū),M是Metaspace,CCS使用壓縮比例,YGC和YGCT分別是新生代gc的次數(shù)和時(shí)間,F(xiàn)GC和FGCT分別是老年代gc的次數(shù)和時(shí)間,GCT是gc的總時(shí)間。雖然發(fā)生了gc,但是老年代內(nèi)存占用率根本沒(méi)下降,說(shuō)明有的對(duì)象沒(méi)法被回收(當(dāng)然也不排除這些對(duì)象真的是有用)。

(3)用jmap工具dump出內(nèi)存快照

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

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

這時(shí)會(huì)得到heap.bin的內(nèi)存快照文件,然后就可以用eclipse來(lái)分析了。

總結(jié)

以上三種嚴(yán)格地說(shuō)還算不上jvm的調(diào)優(yōu),只是用了jvm工具把代碼中存在的問(wèn)題找了出來(lái)。我們進(jìn)行jvm的主要目的是盡量減少停頓時(shí)間,提高系統(tǒng)的吞吐量。

但是如果我們沒(méi)有對(duì)系統(tǒng)進(jìn)行分析就盲目去設(shè)置其中的參數(shù),可能會(huì)得到更壞的結(jié)果,jvm發(fā)展到今天,各種默認(rèn)的參數(shù)可能是實(shí)驗(yàn)室的人經(jīng)過(guò)多次的測(cè)試來(lái)做平衡的,適用大多數(shù)的應(yīng)用場(chǎng)景。

如果你認(rèn)為你的jvm確實(shí)有調(diào)優(yōu)的必要,也務(wù)必要取樣分析,最后還得慢慢多次調(diào)節(jié),才有可能得到更優(yōu)的效果。


責(zé)任編輯:武曉燕 來(lái)源: 碼哥跳動(dòng)
相關(guān)推薦

2024-10-29 09:42:50

2024-04-24 08:35:52

性能調(diào)優(yōu)APP

2021-06-15 06:04:42

MySQL數(shù)據(jù)庫(kù)索引

2024-05-21 09:08:57

JVM調(diào)優(yōu)面試

2022-09-20 14:11:37

JVM調(diào)優(yōu)命令

2012-01-10 14:35:08

JavaJVM

2023-05-29 07:43:32

JVM內(nèi)存調(diào)優(yōu)

2020-11-09 07:34:49

JVM性能監(jiān)控

2017-07-21 08:55:13

TomcatJVM容器

2023-11-11 19:07:23

JVMJava

2023-06-13 08:25:14

注冊(cè)中心Nacos上線

2023-07-18 08:28:58

注冊(cè)中心下線Nacos

2024-11-01 12:45:28

2023-07-31 07:33:05

JVM調(diào)優(yōu)Full GC

2010-09-27 09:23:42

JVM調(diào)優(yōu)

2023-11-10 11:23:20

JVM內(nèi)存

2020-11-03 07:00:15

性能優(yōu)化程序員

2019-07-17 15:45:24

Spark內(nèi)存Java

2010-09-26 13:39:46

JVM調(diào)優(yōu)

2012-01-10 15:13:56

JavaJVM
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

av成人天堂| 青青草视频一区| 国产肉丝袜一区二区| 麻豆一区二区在线观看| 久久99久久99精品蜜柚传媒| 欧美88888| av黄色在线观看| 经典一区二区| 国产精品福利影院| 国产精品第三页| 欧美一区二区免费在线观看| 污网站在线免费看| 国产麻豆91精品| 日韩亚洲一区二区| 在线观看国产一级片| 国产精品一区在线看| 久久精品导航| 亚洲美女激情视频| 亚洲国产精久久久久久| 99影视tv| 精品一区在线观看视频| 亚洲欧洲一二区| 国产精品午夜春色av| 国产精品美女午夜av| av网在线播放| 日韩欧美2区| 欧美激情在线看| 国产成人免费av| 真实乱视频国产免费观看 | 午夜精品一区二区三区在线视频| www.日本久久| 91官网在线| 99精品视频在线观看| 欧美一区在线直播| japanese中文字幕| 国产毛片精品| 欧美视频不卡中文| 日本一区二区三不卡| 中文字幕在线播出| 欧美99久久| 亚洲国产美女久久久久| 黄色片视频在线免费观看| 都市激情一区| 久久亚洲影视婷婷| 国产欧美va欧美va香蕉在| 亚洲 欧美 变态 另类 综合| 日韩在线视频一区二区三区| 亚洲国产一区二区视频| 开心色怡人综合网站| 中文字幕一区二区三区四区视频 | 久久久无码人妻精品无码| 少女频道在线观看高清| 亚洲欧洲三级电影| 粉嫩精品一区二区三区在线观看| 日韩美女视频网站| 日本不卡电影| 精品久久国产97色综合| 无码aⅴ精品一区二区三区浪潮| 成人在线播放视频| 国产福利精品一区| 日本精品久久久久久久| 搜索黄色一级片| 欧美岛国激情| 日韩高清人体午夜| 污污网站在线观看视频| 爱福利在线视频| 中文欧美字幕免费| 天堂av一区二区| 欧洲成人一区二区三区| 青青草一区二区三区| 国产精品免费久久久久久| 做爰无遮挡三级| 亚洲国产精品一区制服丝袜| 在线观看精品国产视频| 国产精品九九视频| 日韩在线黄色| 精品日韩在线观看| 中文视频在线观看| 国产精品久久免费视频| 日韩精品一卡二卡三卡四卡无卡| 一本色道久久88综合亚洲精品ⅰ| 成人黄色免费网址| 羞羞色午夜精品一区二区三区| 亚洲激情视频在线观看| 免费看黄色aaaaaa 片| 韩国一区二区三区视频| 色噜噜偷拍精品综合在线| www国产免费| 在线日本视频| 亚洲精品国产高清久久伦理二区| 欧美日韩国产精品一区二区| 黑人精品一区二区三区| 国产一区二区福利视频| 国产精品日韩欧美综合| 国产一区二区在线不卡| 久久看人人摘| 日本天码aⅴ片在线电影网站| 深夜福利亚洲| 国产精品狼人久久影院观看方式| 精品国产乱码久久久久软件| 国产视频在线一区| 日本中文字幕一区二区有限公司| 91精品免费久久久久久久久| 中文字幕免费高| 国产精品999在线观看| 欧美成人tv| 欧美在线观看网址综合| 91精品国自产| 99精品国产99久久久久久白柏| 亚洲欧洲久久| 在线免费观看黄| 亚洲午夜三级在线| av网站在线不卡| 欧美色片在线观看| 欧美成人伊人久久综合网| 青青草原播放器| 亚洲精品国产动漫| 亚洲欧美另类中文字幕| 国产av 一区二区三区| 亚洲欧美清纯在线制服| 欧美影院久久久| 不卡的日韩av| 成人在线综合网| 国产亚洲二区| 无码精品在线观看| 久久影视一区二区| 国产精品视频一二三四区| 美足av综合网| 香港成人在线视频| 亚洲欧洲日产国码无码久久99 | 国产成人精品免费视频| 男人天堂一区二区| 亚洲男女一区二区三区| 大片在线观看网站免费收看| 怡红院成人在线| 欧美色中文字幕| 欧洲在线免费视频| 日本一区二区在线看| 久久亚洲一区二区三区四区五区高 | 国产男女无遮挡| 国产精品网站在线看| 蜜臀久久99精品久久久久久宅男| 紧身裙女教师波多野结衣| 久久黄色网页| 蜜桃999成人看片在线观看| 1024在线看片你懂得| 一道本成人在线| 午夜剧场高清版免费观看| 国产尤物久久久| 国产成人黄色av| 精品av中文字幕在线毛片| 中文字幕一区二区三区蜜月| 亚洲人辣妹窥探嘘嘘| 国产午夜一区| 国产福利精品av综合导导航| 精品欧美不卡一区二区在线观看| 欧美视频裸体精品| 亚洲天堂久久新| 欧美激情视频一区二区三区在线播放| 欧美床上激情在线观看| 96亚洲精品久久久蜜桃| 亚洲日本中文字幕区| 1024精品视频| 偷拍精品福利视频导航| 国产精品高潮在线| 免费大片在线观看www| 午夜精品久久久久久久99樱桃| 美女扒开腿免费视频| 亚洲美女少妇无套啪啪呻吟| 蜜桃传媒视频麻豆一区| 色8久久影院午夜场| 色哟哟入口国产精品| 黄色片视频网站| 国产一区二区精品久久| 91黄色在线看| 超碰国产精品一区二页| 欧美成人激情视频免费观看| 亚洲乱码精品久久久久..| 欧美国产精品v| 午夜国产福利在线观看| 精品视频免费| 成人两性免费视频| 国内在线视频| 亚洲视频网站在线观看| 日韩人妻无码一区二区三区99| 97久久久精品综合88久久| 国产免费人做人爱午夜视频| 懂色av色香蕉一区二区蜜桃| 欧美激情三级免费| 国产伦理吴梦梦伦理| 久久精品免费在线观看| 久久久久久久久久一区二区| 欧洲美女精品免费观看视频| 日本亚洲欧洲无免费码在线| 欧美丝袜足交| 日本午夜免费一区二区| 成人做爰视频www| 在线一区视频观看| 欧美一区二区啪啪| 欧美xxxxxxxx| 国产99久久久欧美黑人| 亚洲伦理在线观看| 色一区在线观看| 三级影片在线看| 久久免费视频色| 一级在线免费视频| 99av国产精品欲麻豆| 亚洲一区二区精品在线| 日本不卡一区二区三区在线观看| 欧洲伦理片一区 二区 三区| 亚洲一区二区视频| 老熟妇一区二区| 白白色 亚洲乱淫| 无码专区aaaaaa免费视频| 中文字幕一区二区三区中文字幕 | 好吊操视频这里只有精品| 肉肉av福利一精品导航| 日本香蕉视频在线观看| 亚洲精品一区二区三区中文字幕| 日本欧美在线视频| 超免费在线视频| 久久亚洲春色中文字幕| 91免费在线| 亚洲欧美另类自拍| 少妇无码一区二区三区| 午夜不卡在线视频| 成年人一级黄色片| 中文字幕第一区第二区| 日本黄色网址大全| 亚洲午夜电影| 亚洲一区国产视频| 中文字幕国产综合| 99re6这里只有精品视频在线观看| 午夜视频在线观| 日本 国产 欧美色综合| 黄色片一级视频| 国产精品美女久久久| 欧美日韩高清免费| 日韩中出av| 久久久一本精品99久久精品| 国产精品极品| 国产精品一区二区你懂得| 天堂电影一区| 影音先锋日韩有码| 极品美乳网红视频免费在线观看| 亚洲国产高清福利视频| ,亚洲人成毛片在线播放| 欧美日本中文| 一本久道久久综合| 日韩黄色大片| 制服诱惑一区| 成人春色在线观看免费网站| 51视频国产精品一区二区| 国产高清中文字幕在线| 一本色道久久综合狠狠躁篇的优点 | 亚洲激情国产| 伊人成色综合网| 成人国产精品一级毛片视频| 污视频在线免费观看一区二区三区| 国产一区二区三区四区大秀| 日韩av高清在线播放| 91亚洲无吗| 国产日本一区二区三区| 青青草这里只有精品| 蜜桃视频成人| 成人高清av| wwwjizzjizzcom| 欧美人成网站| 一区二区传媒有限公司| 日韩中文字幕不卡| 91日韩精品视频| 国产91精品久久久久久久网曝门| 能看的毛片网站| 免费成人av在线播放| 福利视频一二区| 免费一级欧美片在线观看网站| 好看的日韩av电影| 制服丝袜亚洲网站| 风间由美一二三区av片| 91一区一区三区| 91在线无精精品白丝| 成人午夜激情片| www.超碰97| 国产精品丝袜久久久久久app| 午夜精品一区二区三级视频| 久久久久九九视频| 日本性生活一级片| 久久久影院官网| 2014亚洲天堂| 亚洲成年人网站在线观看| 成人在线观看小视频| 亚洲国产精品精华液网站| 亚洲欧美日韩激情| 午夜电影网一区| 中文字幕理论片| 日韩精品最新网址| 二区在线观看| 91极品女神在线| 麻豆国产在线| 久久久免费观看视频| 日本三级韩国三级欧美三级| 欧美在线视频一二三| 爱福利在线视频| 国产日韩精品电影| 日本一区二区中文字幕| 国产亚洲福利社区| 飘雪影院手机免费高清版在线观看| 欧美高清你懂得| 最近中文字幕在线视频| 精品99一区二区三区| 高潮毛片7777777毛片| 国产亚洲视频中文字幕视频| 九色在线播放| 欧美激情xxxxx| 亚洲欧洲一二区| 日本高清久久一区二区三区| 一区在线播放| 91视频最新入口| 国产精品自拍av| 韩国一级黄色录像| 色94色欧美sute亚洲线路一久| 高h震动喷水双性1v1| 美女久久久久久久| 四虎精品一区二区免费| 日日夜夜精品网站| 免费日韩视频| 亚洲激情 欧美| 亚洲一区二区三区激情| 国产精品爽爽久久久久久| 中文字幕一区日韩电影| 久草中文在线| 欧美激情视频一区二区三区不卡| 日韩在线你懂得| 日本亚洲导航| 三级在线观看一区二区| 欧美女同在线观看| 国产亚洲美州欧州综合国| 亚洲午夜18毛片在线看| 欧美三片在线视频观看 | 欧美大片一区二区| 草莓福利社区在线| 韩国19禁主播vip福利视频| 国产色99精品9i| 视频一区二区视频| 精品制服美女久久| 怡红院一区二区| 一卡二卡三卡日韩欧美| 日韩欧美在线观看免费| 在线综合亚洲欧美在线视频| 北岛玲一区二区三区| 国产精品88a∨| 精品久久成人| 国产嫩草在线观看| 成人妖精视频yjsp地址| 国产真实夫妇交换视频| 欧美吻胸吃奶大尺度电影| 丰满人妻一区二区三区免费视频 | 国产免费久久久久| 欧美一区二区免费| 青青在线视频| 精品国产综合久久| 亚洲主播在线| 免费一级黄色录像| 亚洲成av人片在线| 婷婷在线免费观看| 日本欧美一级片| 国产精品88久久久久久| 欧美日韩在线中文| 国产调教视频一区| 在线观看免费高清视频| 精品视频久久久| 最新黄网在线观看| 国产精品视频免费在线| 久久香蕉国产| 小日子的在线观看免费第8集| 99久久久久久99| 日本韩国欧美中文字幕| 影音先锋日韩有码| 在这里有精品| 国产女女做受ⅹxx高潮| 国产精品传媒入口麻豆| 亚洲国产精彩视频| 欧日韩不卡在线视频| 99热国内精品永久免费观看| 97免费公开视频| 色婷婷亚洲精品| 成人国产免费电影| 蜜桃网站成人| 国内外成人在线| 黄色片网站在线播放| 日韩精品一区二区三区老鸭窝 | 中文字幕永久免费| 在线一区二区三区做爰视频网站| 免费国产黄色片| 国产精品久久综合av爱欲tv| 欧美激情在线| 在线观看日本黄色| 欧美色涩在线第一页| 国内在线视频| 在线播放 亚洲|