精品欧美一区二区三区在线观看 _久久久久国色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)

亚洲精品一区二区三区蜜桃下载| 国产午夜精品一区二区三区嫩草| 欧美日韩高清区| 国产精品一区二区人妻喷水| 免费电影日韩网站| 中文字幕日韩一区二区| 国产精品国产一区二区| 天堂а√在线中文在线新版| 91亚洲国产| 亚洲福利影片在线| 成人性生交免费看| 成人一级福利| 中文一区一区三区高中清不卡| 99久久精品无码一区二区毛片 | 亚洲欧美在线观看| 国产视频不卡| 免费在线不卡av| 伊人久久大香线蕉av超碰演员| 一区二区成人精品| 中文字幕乱码在线| 国产精品国产亚洲精品| 色综合天天综合色综合av| 国产免费裸体视频| av电影在线观看一区二区三区| 成人免费高清视频在线观看| 国产在线高清精品| 中文人妻av久久人妻18| 亚洲视频综合| 美女999久久久精品视频 | 亚洲色图在线看| 人禽交欧美网站免费| 蜜臀久久99精品久久久| 狠狠久久亚洲欧美| 国产精品久久久久久久电影| 日韩av男人天堂| 午夜欧美视频| 久久综合亚洲社区| 性少妇xx生活| 精品国产91乱码一区二区三区四区| 欧美精品一区二区高清在线观看| 成人性生交视频免费观看| 伊人久久高清| 在线国产电影不卡| 亚洲熟妇av一区二区三区| 久久免费电影| 一区二区三区波多野结衣在线观看| 伊人情人网综合| 97视频在线观看网站| 国产欧美一区二区精品仙草咪 | 四季av一区二区凹凸精品| 亚洲性视频网址| av中文字幕免费观看| 性欧美lx╳lx╳| 亚洲精品国偷自产在线99热| 北京富婆泄欲对白| 国产66精品| 亚洲精品久久久一区二区三区| 国产视频精品视频| www国产精品| 亚洲国产高清自拍| 欧美丰满少妇人妻精品| 婷婷亚洲精品| 亚洲欧洲偷拍精品| 亚洲日本精品视频| 成人久久电影| 成年人精品视频| 欧美成人手机视频| 国产精品videosex极品| 91精品国产沙发| 波多野结衣 久久| 日本在线播放一区二区三区| 国产精品一二三视频| 国产精品高潮呻吟AV无码| 国产原创一区二区三区| 亚洲伊人久久综合| 人妻va精品va欧美va| 久久久久9999亚洲精品| 亚洲福利av在线| 高h视频在线观看| 亚洲成人免费影院| 各处沟厕大尺度偷拍女厕嘘嘘| 婷婷激情一区| 欧美日韩视频在线观看一区二区三区 | 一区二区久久| 国产精品久久久久久久久久久新郎 | 日韩电影在线播放| 久操视频在线免费播放| 亚洲一区二区在线观看视频| 国产乱子夫妻xx黑人xyx真爽| 99久久伊人| 精品国产91九色蝌蚪| 久久久久久久久久久久| 亚洲欧美在线专区| 26uuu久久噜噜噜噜| 依依成人在线视频| 粉嫩高潮美女一区二区三区| 欧美一区二区影视| 91麻豆一二三四在线| 日韩欧美在线视频免费观看| 国产免费中文字幕| 欧美绝顶高潮抽搐喷水合集| 色偷偷888欧美精品久久久| 日本中文字幕网| 精品亚洲欧美一区| 精品一区在线播放| 国产区在线观看| 色悠悠亚洲一区二区| 亚洲午夜精品在线观看| 日韩国产一区| 7777免费精品视频| 国产精品无码在线播放| 国产亚洲综合色| 欧美,日韩,国产在线| 91丨精品丨国产| 国产亚洲xxx| www.国产成人| 国产精品66部| 一区二区三区四区五区精品 | 欧日韩精品视频| av电影在线播放| 国产精品二区不卡| 日本电影亚洲天堂| 香蕉视频成人在线| 亚洲国产日韩一级| 黑人性生活视频| 欧美电影一区| 国产成人精品免费久久久久 | 99精品视频在线观看免费| 日本一区二区免费高清视频| 欧美xnxx| 亚洲欧洲自拍偷拍| av中文在线播放| 成人深夜福利app| 日韩一级片一区二区| 综合久草视频| 久久精品91久久香蕉加勒比| 无码人妻精品一区二区三区9厂| av电影在线观看一区| 国产青草视频在线观看| 欧美国产亚洲精品| 欧美成人精品在线视频| 国产亲伦免费视频播放| 国产精品人成在线观看免费| 三级a在线观看| 国产一区二区三区四区二区| 日本亚洲欧美成人| 搞黄视频免费在线观看| 色婷婷亚洲精品| 精品无人区无码乱码毛片国产| 国产精品资源| 欧美日韩国产不卡在线看| 人人草在线视频| 日韩毛片在线观看| 丰满少妇xoxoxo视频| 久久伊99综合婷婷久久伊| 欧美 日本 亚洲| 先锋影音国产精品| 欧亚精品在线观看| yiren22综合网成人| 欧美性生活一区| 手机看片国产日韩| 极品少妇一区二区三区精品视频| 精品少妇人妻av一区二区| 韩国三级成人在线| 欧美极品美女视频网站在线观看免费| 亚洲精品成av人片天堂无码| 亚洲国产成人av| aaaaaav| 日韩高清欧美激情| 秋霞在线一区二区| caoporn成人| 欧美又大粗又爽又黄大片视频| 欧洲天堂在线观看| 欧美日本韩国一区二区三区视频| 99久久婷婷国产综合| 福利一区二区在线观看| 久久成人免费观看| 色综合五月天| 国产成人看片| 你懂得影院夜精品a| 另类图片亚洲另类| 日日夜夜精品免费| 欧美午夜视频网站| 欧美片一区二区| 久久久久久一级片| 99精品视频国产| 亚洲永久免费| 免费成人进口网站| 亚洲免费成人av在线| 91久久精品美女高潮| sqte在线播放| 少妇高潮久久久久久潘金莲| 国内爆初菊对白视频| 在线一区二区三区| 国产黄色片视频| 国产日产欧美一区| 无码人妻精品一区二区三| 日本成人在线不卡视频| 国产精品久久久久9999爆乳| 不卡一区综合视频| av成人在线电影| 天堂久久午夜av| 国内精品久久久久| 黄色网页在线看| 亚洲欧美一区二区三区四区| 俄罗斯嫩小性bbwbbw| 欧美三级乱人伦电影| 亚洲免费黄色网址| 亚洲精品乱码久久久久久久久| 级毛片内射视频| 成人av在线观| 午夜免费一级片| 日韩精品亚洲一区| 欧美成人一区二区在线观看| 欧美一区亚洲| 亚洲欧美国产精品桃花| 香蕉久久夜色精品国产使用方法| 国产高清精品一区二区三区| 日日夜夜精品| 国产精品免费观看在线| 日韩欧美一中文字暮专区| 欧美激情第99页| 黄色在线观看网站| 中文字幕在线成人| 国产永久av在线| 日韩电视剧免费观看网站| 国产高清精品软件丝瓜软件| 欧美日本在线观看| 亚洲天堂网视频| 欧美私人免费视频| 精品久久久久久久久久久久久久久久久久 | 日韩美女主播在线视频一区二区三区| 中文字幕人妻一区二区三区视频| 日韩欧美精品在线观看| 中文字幕在线字幕中文| 亚洲午夜久久久久久久久电影院 | 国产3级在线观看| 91久色porny| 无码人妻aⅴ一区二区三区| 成人免费毛片片v| www.四虎在线| 成人免费毛片嘿嘿连载视频| 美女久久久久久久久| 成人毛片在线观看| 无码人妻丰满熟妇啪啪网站| 国产成人8x视频一区二区| 久久黄色一级视频| 成人在线综合网| 国产草草浮力影院| 久久综合九色综合97_久久久| 美女伦理水蜜桃4| aaa亚洲精品| 欧美亚一区二区三区| 91视频观看免费| 在线不卡av电影| 欧美国产日韩精品免费观看| 国精产品一区一区| 亚洲人成在线观看一区二区| 午夜爽爽爽男女免费观看| 亚洲精品国产一区二区精华液| 国产精品久久久久久久精| 一区二区三区精品在线观看| 国产在线视频99| 富二代精品短视频| 天天干天天操天天操| 精品视频在线看| av在线亚洲天堂| 亚洲国产91色在线| 青青国产在线| 色综合亚洲精品激情狠狠| av在线free| 亚洲91精品在线观看| 日韩国产网站| 91久久精品美女高潮| 黄色欧美在线| 天堂社区 天堂综合网 天堂资源最新版| 欧美一区二区三| 亚洲天堂第一区| 国产日韩高清一区二区三区在线| 日韩福利视频在线| 国产精品69久久久久水密桃| 国产三级视频网站| 亚洲日本青草视频在线怡红院 | av在线免费网址| 欧美亚洲一级片| 亚洲欧美一级| 久久久久久亚洲精品不卡4k岛国 | 污污的视频网站在线观看| 亚洲天堂开心观看| 91精品久久| 国产成人精品在线播放| 精品91福利视频| 免费国产一区二区| 亚洲国产老妈| 日本男人操女人| 不卡影院免费观看| 大胸美女被爆操| 黄色一区二区在线观看| 91国内精品久久久| 日韩精品在线播放| 久久精品视频观看| 国产成人精品综合| 精品五月天堂| 91免费视频黄| 日韩高清国产一区在线| 五十路六十路七十路熟婆| 最新欧美精品一区二区三区| 日韩黄色在线播放| 精品三级在线观看| 免费**毛片在线| 欧亚精品中文字幕| 红杏视频成人| 欧美日韩午夜爽爽| 久久激五月天综合精品| 强伦人妻一区二区三区| 亚洲高清免费一级二级三级| 国产又粗又大又爽| 一色桃子一区二区| 伊人色综合一区二区三区影院视频| 999视频在线观看| 国产精品不卡| 777一区二区| 国产亚洲成aⅴ人片在线观看| 国产成人在线播放视频| 日韩欧美亚洲一区二区| 快射av在线播放一区| 国产精品美女在线| 欧美综合在线视频观看| 国产1区2区在线| 不卡的看片网站| 国产小视频在线看| 日韩欧美一区二区三区在线| 国产精品va在线观看视色| 国产日韩精品一区二区| 色综合久久一区二区三区| 手机视频在线观看| 国产精品毛片久久久久久久| 中文字幕a级片| 中文字幕日韩在线观看| 草民电影神马电影一区二区| 深夜福利成人| 日韩国产欧美在线观看| 国产熟女一区二区| 91福利国产成人精品照片| 黄色大片在线免费观看| 国产va免费精品高清在线观看| 自拍偷拍欧美一区| 色诱视频在线观看| 国产欧美日韩综合| 中文字幕在线视频第一页| 最近2019中文免费高清视频观看www99 | 福利二区91精品bt7086| 久久米奇亚洲| 国产精品视频中文字幕91| 日韩理论电影院| 91极品视频在线观看| 亚洲天天做日日做天天谢日日欢| 国产精品熟女久久久久久| 欧美美女操人视频| 国产美女撒尿一区二区| 久久久久久久激情| 国产精品无码永久免费888| 亚洲中文一区二区三区| 欧美美女15p| 色婷婷av一区二区三区丝袜美腿| 欧美精品第三页| 亚洲精品视频免费看| 后入内射欧美99二区视频| 国产91精品视频在线观看| 精品一级毛片| 久久久久久久久久久影视| 精品久久久久久亚洲国产300| 可以直接在线观看的av| 国产精品夜色7777狼人| 一区在线视频| 性の欲びの女javhd| 日韩视频一区二区| 国模冰冰炮一区二区| 伊人久久大香线蕉午夜av| 成人av片在线观看| 中文字幕日韩国产| 欧美大成色www永久网站婷| 日韩极品在线| 亚洲美女性囗交| 精品人伦一区二区三区蜜桃免费| 成人午夜影视| 国产精品免费观看高清| 免费在线观看不卡| 日本少妇久久久| 最近2019中文免费高清视频观看www99 | 无码人妻av免费一区二区三区| 日韩一区二区三区国产| 精品网站aaa| 男女视频在线观看网站| 色就色 综合激情| 色婷婷av在线| 亚洲精品电影在线一区| 99re热这里只有精品免费视频 | 日韩黄色三级| 男女超爽视频免费播放|