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

六款JVM神級工具

開發 開發工具
你可能一開始會比較畏懼使用復雜的工具去排查問題,又或者是打開了工具感覺無從下手,但是隨著實踐越來越多,對 Java 程序和各種框架的運作越來越熟悉,你會發現使用這些工具越來越順手。

你可能一開始會比較畏懼使用復雜的工具去排查問題,又或者是打開了工具感覺無從下手,但是隨著實踐越來越多,對 Java 程序和各種框架的運作越來越熟悉,你會發現使用這些工具越來越順手。

這篇文章中介紹下如何使用 JDK 自帶工具來分析和定位 Java 程序的問題。

使用 JDK 自帶工具查看 JVM 情況

JDK 自帶了很多命令行甚至是圖形界面工具,幫助我們查看 JVM 的一些信息。比如,在我的機器上運行 ls 命令,可以看到 JDK 8 提供了非常多的工具或程序:

圖片圖片

接下來,我會與你介紹些常用的監控工具。你也可以先通過下面這張圖了解下各種工具的基本作用:

圖片圖片

為了測試這些工具,我們先來寫一段代碼:啟動 10 個死循環的線程,每個線程分配一個 10MB 左右的字符串,然后休眠 10 秒。可以想象到,這個程序會對 GC 造成壓力:

//啟動10個線程
IntStream.rangeClosed(1, 10).mapToObj(i -> new Thread(() -> {
    while (true) {
        //每一個線程都是一個死循環,休眠10秒,打印10M數據
        String payload = IntStream.rangeClosed(1, 10000000)
                .mapToObj(__ -> "a")
                .collect(Collectors.joining("")) + UUID.randomUUID().toString();
        try {
            TimeUnit.SECONDS.sleep(10);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(payload.length());
    }
})).forEach(Thread::start);


TimeUnit.HOURS.sleep(1);

修改 pom.xml,配置 spring-boot-maven-plugin 插件打包的 Java 程序的 main 方法類:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <mainClass>org.geekbang.time.commonmistakes.troubleshootingtools.jdktool.CommonMistakesApplication
        </mainClass>
    </configuration>
</plugin>

然后使用 java -jar 啟動進程,設置 JVM 參數,讓堆最小最大都是 1GB:

java -jar common-mistakes-0.0.1-SNAPSHOT.jar -Xms1g -Xmx1g

完成這些準備工作后,我們就可以使用 JDK 提供的工具,來觀察分析這個測試程序了。

jps

首先,使用 jps 得到 Java 進程列表,這會比使用 ps 來的方便:

?  ~ jps
12707
22261 Launcher
23864 common-mistakes-0.0.1-SNAPSHOT.jar
15608 RemoteMavenServer36
23243 Main
23868 Jps
22893 KotlinCompileDaemon

jinfo

然后,可以使用 jinfo 打印 JVM 的各種參數:

?  ~ jinfo 23864
Java System Properties:
#Wed Jan 29 12:49:47 CST 2020
...
user.name=zhuye
path.separator=\:
os.versinotallow=10.15.2
java.runtime.name=Java(TM) SE Runtime Environment
file.encoding=UTF-8
java.vm.name=Java HotSpot(TM) 64-Bit Server VM
...


VM Flags:
-XX:CICompilerCount=4 -XX:Cnotallow=2 -XX:G1Cnotallow=8 -XX:G1HeapReginotallow=1048576 -XX:GCDrainStackTargetSize=64 -XX:InitialHeapSize=268435456 -XX:MarkStackSize=4194304 -XX:MaxHeapSize=4294967296 -XX:MaxNewSize=2576351232 -XX:MinHeapDeltaBytes=1048576 -XX:Nnotallow=5835340 -XX:Nnotallow=122911450 -XX:ProfiledCodeHeapSize=122911450 -XX:ReservedCodeCacheSize=251658240 -XX:+SegmentedCodeCache -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseG1GC


VM Arguments:
java_command: common-mistakes-0.0.1-SNAPSHOT.jar -Xms1g -Xmx1g
java_class_path (initial): common-mistakes-0.0.1-SNAPSHOT.jar
Launcher Type: SUN_STANDARD

查看第 15 行和 19 行可以發現,我們設置 JVM 參數的方式不對,-Xms1g 和 -Xmx1g 這兩個參數被當成了 Java 程序的啟動參數,整個 JVM 目前最大內存是 4GB 左右,而不是 1GB。

因此,當我們懷疑 JVM 的配置很不正常的時候,要第一時間使用工具來確認參數。除了使用工具確認 JVM 參數外,你也可以打印 VM 參數和程序參數:

System.out.println("VM options");
System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments().stream().collect(Collectors.joining(System.lineSeparator())));
System.out.println("Program arguments");
System.out.println(Arrays.stream(args).collect(Collectors.joining(System.lineSeparator())));

把 JVM 參數放到 -jar 之前,重新啟動程序,可以看到如下輸出,從輸出也可以確認這次 JVM 參數的配置正確了:

?  target git:(master) ? java -Xms1g -Xmx1g -jar common-mistakes-0.0.1-SNAPSHOT.jar test
VM options
-Xms1g
-Xmx1g
Program arguments
test

jvisualvm

然后,啟動另一個重量級工具 jvisualvm 觀察一下程序,可以在概述面板再次確認 JVM 參數設置成功了:

圖片圖片

繼續觀察監視面板可以看到,JVM 的 GC 活動基本是 10 秒發生一次,堆內存在 250MB 到 900MB 之間波動,活動線程數是 22。我們可以在監視面板看到 JVM 的基本情況,也可以直接在這里進行手動 GC 和堆 Dump 操作:

圖片圖片

jconsole如果希望看到各個內存區的 GC 曲線圖,可以使用 jconsole 觀察。jconsole 也是一個綜合性圖形界面監控工具,比 jvisualvm 更方便的一點是,可以用曲線的形式監控各種數據,包括 MBean 中的屬性值:

圖片圖片

jstat

同樣,如果沒有條件使用圖形界面(畢竟在 Linux 服務器上,我們主要使用命令行工具),又希望看到 GC 趨勢的話,我們可以使用 jstat 工具。

jstat 工具允許以固定的監控頻次輸出 JVM 的各種監控指標,比如使用 -gcutil 輸出 GC 和內存占用匯總信息,每隔 5 秒輸出一次,輸出 100 次,可以看到 Young GC 比較頻繁,而 Full GC 基本 10 秒一次:

?  ~ jstat -gcutil 23940 5000 100
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT    CGC    CGCT     GCT
  0.00 100.00   0.36  87.63  94.30  81.06    539   14.021    33    3.972   837    0.976   18.968
  0.00 100.00   0.60  69.51  94.30  81.06    540   14.029    33    3.972   839    0.978   18.979
  0.00   0.00   0.50  99.81  94.27  81.03    548   14.143    34    4.002   840    0.981   19.126
  0.00 100.00   0.59  70.47  94.27  81.03    549   14.177    34    4.002   844    0.985   19.164
  0.00 100.00   0.57  99.85  94.32  81.09    550   14.204    34    4.002   845    0.990   19.196
  0.00 100.00   0.65  77.69  94.32  81.09    559   14.469    36    4.198   847    0.993   19.659
  0.00 100.00   0.65  77.69  94.32  81.09    559   14.469    36    4.198   847    0.993   19.659
  0.00 100.00   0.70  35.54  94.32  81.09    567   14.763    37    4.378   853    1.001   20.142
  0.00 100.00   0.70  41.22  94.32  81.09    567   14.763    37    4.378   853    1.001   20.142
  0.00 100.00   1.89  96.76  94.32  81.09    574   14.943    38    4.487   859    1.007   20.438
  0.00 100.00   1.39  39.20  94.32  81.09    575   14.946    38    4.487   861    1.010   20.442


其中,S0 表示 Survivor0 區占用百分比,S1 表示 Survivor1 區占用百分比,E 表示 Eden 區占用百分比,O  表示老年代占用百分比,M 表示元數據區占用百分比,YGC 表示年輕代回收次數,YGCT 表示年輕代回收耗時,FGC 表示老年代回收次數,FGCT 表示老年代回收耗時。

jstat 命令的參數眾多,包含 -class、-compiler、-gc 等。Java 8、Linux/Unix 平臺 jstat 工具的完整介紹,你可以查看這里。jstat 定時輸出的特性,可以方便我們持續觀察程序的各項指標。

繼續來到線程面板可以看到,大量以 Thread 開頭的線程基本都是有節奏的 10 秒運行一下,其他時間都在休眠,和我們的代碼邏輯匹配:

圖片圖片

點擊面板的線程 Dump 按鈕,可以查看線程瞬時的線程棧:

圖片圖片

jstack

通過命令行工具 jstack,也可以實現抓取線程棧的操作:

?  ~ jstack 23940
2020-01-29 13:08:15
Full thread dump Java HotSpot(TM) 64-Bit Server VM (11.0.3+12-LTS mixed mode):

"main"#1 prio=5 os_prio=31 cpu=440.66ms elapsed=574.86s tid=0x00007ffdd9800000 nid=0x2803 waiting on condition  [0x0000700003849000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
  at java.lang.Thread.sleep(java.base@11.0.3/Native Method)
  at java.lang.Thread.sleep(java.base@11.0.3/Thread.java:339)
  at java.util.concurrent.TimeUnit.sleep(java.base@11.0.3/TimeUnit.java:446)
  at org.geekbang.time.commonmistakes.troubleshootingtools.jdktool.CommonMistakesApplication.main(CommonMistakesApplication.java:41)
  at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base@11.0.3/Native Method)
  at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(java.base@11.0.3/NativeMethodAccessorImpl.java:62)
  at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(java.base@11.0.3/DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(java.base@11.0.3/Method.java:566)
  at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)
  at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)
  at org.springframework.boot.loader.Launcher.launch(Launcher.java:51)
  at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:52)

"Thread-1"#13 prio=5 os_prio=31 cpu=17851.77ms elapsed=574.41s tid=0x00007ffdda029000 nid=0x9803 waiting on condition  [0x000070000539d000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
  at java.lang.Thread.sleep(java.base@11.0.3/Native Method)
  at java.lang.Thread.sleep(java.base@11.0.3/Thread.java:339)
  at java.util.concurrent.TimeUnit.sleep(java.base@11.0.3/TimeUnit.java:446)
  at org.geekbang.time.commonmistakes.troubleshootingtools.jdktool.CommonMistakesApplication.lambda$null$1(CommonMistakesApplication.java:33)
  at org.geekbang.time.commonmistakes.troubleshootingtools.jdktool.CommonMistakesApplication$$Lambda$41/0x00000008000a8c40.run(Unknown Source)
  at java.lang.Thread.run(java.base@11.0.3/Thread.java:834)
...

抓取后可以使用類似fastthread(https://fastthread.io/)這樣的在線分析工具來分析線程棧。

jcmd

最后,我們來看一下 Java HotSpot 虛擬機的 NMT 功能。

通過 NMT,我們可以觀察細粒度內存使用情況,設置 -XX:NativeMemoryTracking=summary/detail 可以開啟 NMT 功能,開啟后可以使用 jcmd 工具查看 NMT 數據。

我們重新啟動一次程序,這次加上 JVM 參數以 detail 方式開啟 NMT:

-Xms1g -Xmx1g -XX:ThreadStackSize=256k -XX:NativeMemoryTracking=detail

在這里,我們還增加了 -XX:ThreadStackSize 參數,并將其值設置為 256k,也就是期望把線程棧設置為 256KB。我們通過 NMT 觀察一下設置是否成功。

啟動程序后執行如下 jcmd 命令,以概要形式輸出 NMT 結果。可以看到,當前有 32 個線程,線程棧總共保留了差不多 4GB 左右的內存。我們明明配置線程棧最大 256KB 啊,為什么會出現 4GB 這么夸張的數字呢,到底哪里出了問題呢?

?  ~ jcmd 24404 VM.native_memory summary
24404:

Native Memory Tracking:

Total: reserved=6635310KB, committed=5337110KB
-                 Java Heap (reserved=1048576KB, committed=1048576KB)
                            (mmap: reserved=1048576KB, committed=1048576KB)


-                     Class (reserved=1066233KB, committed=15097KB)
                            (classes #902)
                            (malloc=9465KB #908)
                            (mmap: reserved=1056768KB, committed=5632KB)


-                    Thread (reserved=4209797KB, committed=4209797KB)
                            (thread #32)
                            (stack: reserved=4209664KB, committed=4209664KB)
                            (malloc=96KB #165)
                            (arena=37KB #59)


-                      Code (reserved=249823KB, committed=2759KB)
                            (malloc=223KB #730)
                            (mmap: reserved=249600KB, committed=2536KB)


-                        GC (reserved=48700KB, committed=48700KB)
                            (malloc=10384KB #135)
                            (mmap: reserved=38316KB, committed=38316KB)


-                  Compiler (reserved=186KB, committed=186KB)
                            (malloc=56KB #105)
                            (arena=131KB #7)


-                  Internal (reserved=9693KB, committed=9693KB)
                            (malloc=9661KB #2585)
                            (mmap: reserved=32KB, committed=32KB)


-                    Symbol (reserved=2021KB, committed=2021KB)
                            (malloc=1182KB #334)
                            (arena=839KB #1)


-    Native Memory Tracking (reserved=85KB, committed=85KB)
                            (malloc=5KB #53)
                            (tracking overhead=80KB)


-               Arena Chunk (reserved=196KB, committed=196KB)
                            (malloc=196KB)

重新以 VM.native_memory detail 參數運行 jcmd:

jcmd 24404 VM.native_memory detail

可以看到,有 16 個可疑線程,每一個線程保留了 262144KB 內存,也就是 256MB(通過下圖紅框可以看到,使用關鍵字 262144KB for Thread Stack from 搜索到了 16 個結果):

圖片圖片

其實,ThreadStackSize 參數的單位是 KB,所以我們如果要設置線程棧 256KB,那么應該設置 256 而不是 256k。重新設置正確的參數后,使用 jcmd 再次驗證下:

圖片圖片

除了用于查看 NMT 外,jcmd 還有許多功能。我們可以通過 help,看到它的所有功能:

jcmd 24781 help

除了 jps、jinfo、jcmd、jstack、jstat、jconsole、jvisualvm 外,JDK 中還有一些工具,你可以通過官方文檔查看完整介紹。

官方文檔:https://docs.oracle.com/javase/8/docs/technotes/tools/

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2025-09-08 00:12:27

2025-05-06 02:20:00

2021-04-12 11:05:09

Windows微軟軟件

2024-01-05 18:04:59

人工智能Tabnine插件

2024-01-15 13:29:00

IDEA插件POJO

2020-05-11 08:00:00

監控工具加密開源

2024-02-21 23:40:56

2023-11-06 08:15:42

遍歷列表Python

2021-12-24 11:50:57

滲透測試工具安全工具 防御系統

2017-03-09 18:00:30

JavaScript代碼

2023-09-20 13:59:44

AI工具

2012-01-11 13:04:40

JavaJVM

2010-11-11 09:54:31

2020-11-09 06:22:53

MacWindows 10Windows

2015-08-06 09:22:19

開源持續集成服務器工具

2025-06-23 08:10:00

前端開發開發工具

2019-10-29 09:14:52

ETL架構DataPipelin

2019-01-04 07:48:02

網絡延遲測試工具網絡交付

2014-03-03 10:26:17

PowerShell

2017-12-04 12:12:35

點贊
收藏

51CTO技術棧公眾號

国产精品一级片| 亚洲第一论坛sis| 亚洲精选在线视频| 国内精品久久国产| 国产成人精品777777| 狠狠色丁香婷婷综合影院| 欧美另类久久久品| 国产高清av在线播放| 国产裸舞福利在线视频合集| 国产真实乱对白精彩久久| 欧美精品久久久久久久久久| 成人h动漫精品一区| 成人看片毛片免费播放器| 亚洲人成网站在线| 六十路精品视频| 99视频国产精品免费观看a| 一区二区高清| 久久99热这里只有精品国产| 亚洲一区二区三区日韩| 成人午夜网址| 欧美日韩国产小视频| 国产二区视频在线播放| h网站久久久| 欧美高清在线一区二区| 国产亚洲精品美女久久久m| 一区二区不卡视频在线观看| 中文亚洲字幕| 欧美激情按摩在线| 成人午夜免费影院| 免费毛片在线不卡| 亚洲国产成人精品久久久国产成人一区 | 亚洲欧洲99久久| 蜜桃999成人看片在线观看| www.色视频| 九九久久精品视频 | a一区二区三区亚洲| 色婷婷综合久久久中文一区二区| 欧美性潮喷xxxxx免费视频看| 精品176二区| 国产精品女主播av| 日本一区免费在线观看| 国产在线观看免费| 91久色porny| 久久久久九九九| 亚洲日本在线播放| 99精品视频在线观看免费| www.久久久| 国产黄色一级大片| 国产精品主播直播| 成人激情视频小说免费下载| 日韩久久久久久久久久| 日韩电影一二三区| 国产精品h在线观看| 久久久精品视频网站| 国产精品毛片一区二区三区| 97免费中文视频在线观看| 国产一级特黄视频| 亚洲日本视频| 97免费在线视频| 蜜臀精品一区二区三区| 久久激情中文| 国产精品久久久久久搜索| 中文字幕av第一页| 麻豆视频一区二区| 91九色国产视频| a在线观看视频| 丁香婷婷综合色啪| 精品九九九九| 国产视频第一区| 中文欧美字幕免费| 女女同性女同一区二区三区按摩| 97超碰资源站在线观看| 一区二区三区中文在线| 日本精品久久久久久久久久| sqte在线播放| 在线观看亚洲成人| 图片区乱熟图片区亚洲| 清纯唯美激情亚洲| 日韩av在线免费观看| 色欲狠狠躁天天躁无码中文字幕| 成人vr资源| 九九热精品视频| 黄色大片网站在线观看| 美女一区二区三区| 999视频在线免费观看| 天堂在线资源8| 国产精品亲子伦对白| 免费cad大片在线观看| 国产精品蜜芽在线观看| 欧美日韩精品一区二区三区| 中文字幕乱妇无码av在线| 日本国产精品| 中文字幕亚洲欧美日韩在线不卡| 91视频综合网| 久久九九电影| av蓝导航精品导航| 国产在线三区| 亚洲国产一区二区在线播放| 欧美日韩在线成人| 综合激情网...| 一本大道久久加勒比香蕉| 九九久久免费视频| 天堂av在线一区| 91免费看网站| 99免在线观看免费视频高清| 一卡二卡欧美日韩| 久热精品在线观看视频| 日本成人中文| 欧美精品午夜视频| 高潮毛片又色又爽免费| 粉嫩一区二区三区在线看| 日韩精品久久久毛片一区二区| 一色桃子av在线| 欧美色男人天堂| 欧美高清性xxxx| 亚洲欧美综合| 91精品国产综合久久香蕉的用户体验| 亚洲欧美综合在线观看| 亚洲九九爱视频| www.精品在线| 久久超碰99| 久久久久久久国产精品视频| 一区二区久久精品66国产精品| 91亚洲国产成人精品一区二三 | 精品视频一区二区不卡| 亚洲第九十七页| 欧美日韩精品| 91网免费观看| 成人三级网址| 欧美高清你懂得| 国产黄色录像视频| 日韩在线观看一区二区| 鲁丝片一区二区三区| 91高清视频在线观看| 日韩欧美二区三区| 国产黄色的视频| 国产一区二区久久| 欧美三级午夜理伦三级老人| 99久久亚洲国产日韩美女| 亚洲欧美制服丝袜| 在线观看免费av片| 91美女福利视频| 久久久亚洲精品无码| 国产成人澳门| 国产做受高潮69| 高清毛片aaaaaaaaa片| 亚洲一区二区不卡免费| 91人妻一区二区三区| 欧美激情一区| 国产超碰91| 三级福利片在线观看| 日韩区在线观看| 国产性猛交普通话对白| 成人美女视频在线观看18| 国产欧美久久久久| 国产极品模特精品一二| 97香蕉超级碰碰久久免费的优势| 欧美一级性视频| 疯狂欧美牲乱大交777| 一女三黑人理论片在线| 久久人人精品| 亚洲国产精品久久久久久女王| 成人做爰视频www| 日韩中文av在线| 国内老熟妇对白hdxxxx| 亚洲6080在线| 97人妻精品一区二区免费| 日本va欧美va欧美va精品| 亚洲免费在线精品一区| 成人网av.com/| 欧美精品久久久久久久久| 天堂av在线7| 欧美日韩一区二区三区 | 亚洲欧美一区二区三区国产精品| 色婷婷一区二区三区在线观看| 欧美激情综合| 欧美一区二区三区在线播放| 91av一区| 欧美黑人xxxⅹ高潮交| 亚洲色欧美另类| 欧美丝袜自拍制服另类| 2018天天弄| www国产精品av| 日本人69视频| 伊人久久综合| 亚洲欧洲一区二区在线观看| 日韩在线视频一区二区三区| 欧美一级黑人aaaaaaa做受| www免费网站在线观看| 精品美女在线观看| 国产亚洲欧美日韩高清| 亚洲精品成人少妇| 天天躁日日躁aaaxxⅹ| 国产一区在线精品| 国产成人久久婷婷精品流白浆| 97人人精品| 久久青青草综合| av一级久久| 国产精品88a∨| 欧美精品videosex| 中文字幕精品久久| 手机看片福利在线观看| 91精品国产综合久久久蜜臀粉嫩| 日产精品久久久| 亚洲欧美视频一区| 国产高清一区二区三区四区| 国产成人综合在线| 欧美黄色性生活| 国产欧美69| 成人免费在线视频播放| 日韩精品欧美| 欧美精品久久| 97久久综合精品久久久综合| 国产精品羞羞答答| 韩国美女久久| 91av免费观看91av精品在线| 成人影欧美片| 色偷偷av亚洲男人的天堂| 九九在线视频| 日韩成人在线观看| 黄色成人一级片| 欧美一级生活片| 一本色道久久综合无码人妻| 色婷婷av一区| 中文字幕第15页| 午夜电影网亚洲视频| 免费中文字幕在线观看| 日韩码欧中文字| 婷婷国产成人精品视频| 久久精品亚洲国产奇米99| 亚洲综合自拍网| 成人午夜电影小说| 少妇搡bbbb搡bbb搡打电话| 久久 天天综合| 色天使在线观看| 麻豆国产精品视频| 污版视频在线观看| 麻豆成人综合网| 黄大色黄女片18第一次| 美女国产一区二区三区| 日韩一级理论片| 奇米影视在线99精品| 青青在线视频免费| 日韩精品欧美精品| 91最新在线观看| 蜜桃一区二区三区四区| 日韩精品视频一二三| 麻豆国产精品官网| 欧美日韩久久婷婷| 国产精品99久久不卡二区| 国产伦精品一区二区三区妓女下载 | 一区二区三区视频在线观看视频| 最新91在线视频| 日本精品在线| 不卡av日日日| 俄罗斯一级**毛片在线播放| 97精品伊人久久久大香线蕉| 欧美男男tv网站在线播放| 日本精品久久久久影院| yiren22亚洲综合| 成人网在线免费看| 中文无码日韩欧| 久久久久久艹| 成人久久久久| 日本a在线天堂| 亚洲一区二区毛片| 日本不卡一区在线| 国产高清不卡一区二区| 亚洲国产综合视频| 国产拍揄自揄精品视频麻豆 | 亚洲444eee在线观看| 91九色丨porny丨肉丝| 91成人国产精品| 国产精品午夜福利| 亚洲国产精久久久久久| 国产中文字幕在线看| 不卡av电影在线观看| 极品美鲍一区| 成人在线一区二区| 狼人精品一区二区三区在线 | 蜜桃传媒一区二区亚洲av| 国产女主播在线一区二区| 久久久精品视频免费观看| 午夜精品影院在线观看| 一区二区视频网| 亚洲成年人在线| 在线看黄色av| 久久久在线免费观看| 福利一区在线| 国产精品久久久一区二区三区| 欧美热在线视频精品999| 日韩一级片一区二区| 老司机午夜免费精品视频 | 26uuu久久天堂性欧美| 国产又粗又长免费视频| 亚洲高清免费一级二级三级| 中文无码精品一区二区三区| 欧美精品一区二区三区在线播放| 欧美日本网站| 久久久久久久久电影| 97久久网站| 国产一区精品视频| 一本到12不卡视频在线dvd| 成年人黄色片视频| 粉嫩在线一区二区三区视频| 国精产品视频一二二区| 欧美性xxxxx| 丰满肥臀噗嗤啊x99av| 俺去了亚洲欧美日韩| 欧美无毛视频| 国产一区二区黄色| 这里只有精品在线| 久久99999| 久久夜色精品国产噜噜av| 久久黄色小视频| 欧美精品在线一区二区| 户外极限露出调教在线视频| 97国产一区二区精品久久呦| 久久久久久久久成人| 一本一道久久a久久精品综合| 99国内精品| 97中文字幕在线观看| 亚洲女女做受ⅹxx高潮| 最近中文字幕在线视频| 亚洲人a成www在线影院| 两个人看的在线视频www| 国产成人成网站在线播放青青| 亚洲一区 二区 三区| 在线不卡一区二区三区| 亚洲国产精品传媒在线观看| 欧美a视频在线观看| 亚洲老头老太hd| 在线人成日本视频| 好吊色欧美一区二区三区| 亚洲激情偷拍| www.啪啪.com| 偷拍一区二区三区| 无码精品一区二区三区在线| 久久久亚洲精选| 国产精品xxx在线观看| 2019日韩中文字幕mv| 成人综合婷婷国产精品久久蜜臀 | 黄视频在线免费看| 不卡视频一区二区| 国一区二区在线观看| 久久无码专区国产精品s| 一区二区国产盗摄色噜噜| 丰满熟女一区二区三区| 国自产精品手机在线观看视频| 中文字幕av一区二区三区四区| 精品丰满人妻无套内射| 不卡av在线免费观看| 国产精品suv一区二区| 亚洲国产91色在线| 亚洲www.| 一本一道久久a久久精品综合| 国产一区二区三区在线看麻豆| 美女毛片在线观看| 亚洲精品久久久久久下一站 | 亚洲bt欧美bt日本bt| 午夜视频一区| 无码一区二区精品| 欧美在线视频全部完| 麻豆传媒在线完整视频| 成人黄色片视频网站| 亚洲一区日韩在线| jizz18女人高潮| 欧美一区二区在线看| 成人bbav| 色狠狠久久av五月综合| 韩国欧美国产1区| 日韩欧美不卡视频| 国产一区二区三区在线免费观看 | 成人免费毛片东京热| 亚洲国产精品久久91精品| 欧美不卡高清一区二区三区| 伊人久久大香线蕉成人综合网| 高清成人在线观看| 懂色av蜜臀av粉嫩av分享吧最新章节| 最近2019中文字幕一页二页 | 亚洲国产精品系列| a成人v在线| 国产精品无码免费专区午夜| 久久综合成人精品亚洲另类欧美 | 亚洲一二三区精品| 成人国产在线观看| 日韩xxx视频| 久久久久久综合网天天| 国产尤物久久久| 国产精品91av| 欧美吻胸吃奶大尺度电影| 精品一性一色一乱农村| 日韩高清国产精品| 成人蜜臀av电影| 91麻豆国产在线| 91成人福利在线| 欧美精品日韩| 精品熟妇无码av免费久久| 亚洲国产成人爱av在线播放| 亚洲免费资源|