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

六款JVM神級工具!

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

你可能一開始會比較畏懼使用復雜的工具去排查問題,又或者是打開了工具感覺無從下手,但是隨著實踐越來越多,對 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-03-31 00:00:02

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工具

2010-11-11 09:54:31

2015-08-06 09:22:19

開源持續集成服務器工具

2020-11-09 06:22:53

MacWindows 10Windows

2012-01-11 13:04:40

JavaJVM

2014-03-03 10:26:17

PowerShell

2019-10-29 09:14:52

ETL架構DataPipelin

2019-01-04 07:48:02

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

2025-06-23 08:10:00

前端開發開發工具

2015-05-20 10:17:06

程序員
點贊
收藏

51CTO技術棧公眾號

欧美日韩国内自拍| 国产一区二区伦理| 亚洲人成电影网站色xx| 不卡av免费在线| 黄色网页在线免费看| 国产成人综合精品三级| 97成人在线视频| 免费观看特级毛片| 久本草在线中文字幕亚洲| 欧美自拍偷拍一区| 欧美狂野激情性xxxx在线观| 五月婷婷综合久久| 久久91精品国产91久久小草| 欧美精品videossex88| 大又大又粗又硬又爽少妇毛片| 日本午夜精品久久久久| 午夜国产精品影院在线观看| 亚洲精品一区二区毛豆| 黄色aaa大片| 久久99精品久久久| 青草热久免费精品视频| 欧美偷拍第一页| 国产一区99| 精品久久久三级丝袜| 亚洲色图 在线视频| 国产激情视频在线看| 亚洲色图视频网| 日韩.欧美.亚洲| 丁香花免费高清完整在线播放 | 人人妻人人澡人人爽欧美一区| 青青久草在线| 不卡视频一二三| 147欧美人体大胆444| 欧美激情一区二区三区免费观看| 亚洲每日在线| 精品自在线视频| 极品美妇后花庭翘臀娇吟小说| 欧美日韩播放| 精品一区二区三区三区| 野战少妇38p| 欧美三级一区| 欧美精品黑人性xxxx| 成人性生生活性生交12| 欧美大片免费| 色综合视频在线观看| www.99热这里只有精品| av人人综合网| 一区二区三区.www| 在线亚洲美日韩| 97在线观看免费观看高清 | 国产免费美女视频| 欧美日韩中文一区二区| 亚洲人成电影网站色…| 欧美黄色激情视频| 国产精品欧美在线观看| 亚洲精品一二区| 性欧美成人播放77777| 久久悠悠精品综合网| 精品久久久久久久久久久院品网| 91福利视频免费观看| 日本高清精品| 精品国一区二区三区| 在线观看免费视频国产| 中文字幕一区二区三区中文字幕| 欧美成人官网二区| 无码人妻一区二区三区精品视频| 视频二区欧美| 精品精品国产高清a毛片牛牛| 国产白袜脚足j棉袜在线观看| 国产精品17p| 日韩风俗一区 二区| 香蕉视频黄色在线观看| 国产一区二区三区站长工具| 在线视频日本亚洲性| 国产aaaaaaaaa| 亚洲va在线| 久久久久久国产精品| 日韩少妇高潮抽搐| 日韩专区欧美专区| 91久久嫩草影院一区二区| 国产成人精品一区二区无码呦| 粉嫩av一区二区三区粉嫩| 久久久综合香蕉尹人综合网| 国产一级片在线播放| 国产精品大尺度| 国产精品自拍合集| 在线毛片观看| 欧美精品在线观看一区二区| 国产51自产区| 日本一区二区高清不卡| 欧美xxxx做受欧美| 日韩在线观看第一页| 免费成人av资源网| 国产伦精品一区二区三区四区视频 | 久久久天堂国产精品| 美女网站在线看| 欧美午夜精品久久久久久超碰| 三级黄色片免费看| 蜜桃精品噜噜噜成人av| 久久亚洲精品小早川怜子66| 日本熟妇毛茸茸丰满| 美女视频网站黄色亚洲| 国产日本一区二区三区| 三区四区在线视频| 午夜久久久久久久久| 久热在线视频观看| 欧美三级午夜理伦三级小说| 色婷婷**av毛片一区| 日操夜操天天操| 精品系列免费在线观看| 久久er99热精品一区二区三区 | 欧美精品一区二区免费| 欧美日韩a v| 成人丝袜18视频在线观看| 亚洲成人自拍| 老司机深夜福利在线观看| 7777女厕盗摄久久久| 亚洲a v网站| 伊人影院久久| 91丨九色丨国产| 91精品大全| 一本大道综合伊人精品热热| 99久久久无码国产精品性波多 | 精品国产欧美一区二区三区成人| 亚洲天堂视频网站| 成人丝袜高跟foot| 99热都是精品| 欧美日韩免费电影| 国产亚洲a∨片在线观看| 中文字幕第28页| 国产美女精品在线| 中文字幕第一页亚洲| 影音成人av| 亚洲欧美日韩精品久久奇米色影视| 动漫精品一区一码二码三码四码| 国产一区二区三区在线观看免费| 日本一区二区三区视频免费看| 亚洲福利影院| 欧美tickling网站挠脚心| 日韩欧美国产成人精品免费| 麻豆91小视频| 一级特黄录像免费播放全99| 在线成人视屏| 综合136福利视频在线| 在线免费观看国产精品| 久久久亚洲高清| 青青在线视频观看| 久久av影视| 国产精品极品在线| jizz亚洲| 欧美精品久久久久久久多人混战 | 91在线视频免费看| 色爱区综合激月婷婷| 我和岳m愉情xxxⅹ视频| 久久看片网站| 少妇精品久久久久久久久久| 国产成+人+综合+亚洲欧美| 中文字幕久精品免费视频| 亚洲天堂视频网| 亚洲免费看黄网站| 国产精品99久久久精品无码| 亚洲午夜在线| 国产一区二区三区黄| 欧美激情网站| 亚洲天堂av在线播放| 中文字幕 欧美激情| 中文字幕一区二区三区视频| 黑人巨大猛交丰满少妇| 国产精品国码视频| 免费精品视频一区| 91福利精品在线观看| 中文字幕在线国产精品| 99草在线视频| 午夜精品久久久久影视| 国产 欧美 在线| 国产呦精品一区二区三区网站| 日韩a级黄色片| 日韩av午夜| 成人国产精品一区二区| 免费在线观看av电影| 国产午夜精品麻豆| 国产又粗又大又爽| 亚洲一二三区在线观看| www在线观看免费视频| 久久99精品久久久久久久久久久久| 高清无码视频直接看| 你懂的视频欧美| 成人有码在线播放| 免费在线小视频| 丝袜美腿亚洲一区二区| 亚洲精品国产手机| 欧洲精品视频在线观看| 麻豆影视在线播放| 久久九九久久九九| 日韩黄色一区二区| 日韩av电影天堂| 国产欧美日韩小视频| 欧美色就是色| 国产精品一区二区三区免费观看 | 精品伦精品一区二区三区视频| 裤袜国产欧美精品一区| 久久国产精品99国产精| 青青青手机在线视频观看| 欧美精品亚洲二区| 国产美女激情视频| 亚洲专区一二三| 超碰人人人人人人人| 26uuu亚洲综合色| 伊人五月天婷婷| 男女男精品视频| 国产黄视频在线| 欧美国产专区| 亚洲一区二区自拍偷拍| 亚洲激情播播| 国产精品传媒毛片三区| 日韩一区二区三区四区五区| 秋霞成人午夜鲁丝一区二区三区| 狂野欧美激情性xxxx欧美| 中文字幕亚洲欧美日韩在线不卡| 亚洲AV成人无码一二三区在线| 日韩一卡二卡三卡| 怡春院在线视频| 91福利资源站| 黄瓜视频在线免费观看| 亚洲二区在线观看| 黄色一级片在线| 亚洲精品乱码久久久久久黑人 | 精品国产91乱高清在线观看 | 欧美日韩激情视频8区| 久久久久久久黄色| 亚洲欧美另类小说视频| 精品人体无码一区二区三区| 国产欧美视频在线观看| 亚洲码无人客一区二区三区| 99re热这里只有精品视频| 东京热av一区| 国产91丝袜在线播放| 韩国三级与黑人| 国产乱一区二区| 中文字幕第三区| 国产一区二区三区在线观看免费 | jlzzjlzz亚洲女人18| 欧美妇女性影城| jizz国产视频| 精品国产凹凸成av人网站| 午夜精品久久久久久久99热黄桃| 日韩一区二区免费视频| 动漫av一区二区三区| 精品久久久久一区二区国产| 殴美一级特黄aaaaaa| 欧美精品一区二区三区一线天视频 | 第四色男人最爱上成人网| 国产成人久久久| 欧美大片1688网站| 成人欧美一区二区三区黑人孕妇 | 深夜在线视频| 茄子视频成人在线| 日韩中文视频| 亚洲影院色无极综合| 综合激情五月婷婷| 久久99精品久久久久久水蜜桃| 久久99国内| 在线成人性视频| 午夜日韩视频| 男人天堂1024| 男人的天堂亚洲一区| 久久久久久久久久久久久久久国产| 激情伊人五月天久久综合| 人妻换人妻仑乱| 99这里只有久久精品视频| 亚洲精品午夜视频| 亚洲欧美日本韩国| 久久夜色精品亚洲| 欧美性极品少妇| a级片在线免费看| 精品中文视频在线| www在线免费观看| 美女999久久久精品视频| а√天堂8资源在线| 国产成人综合精品在线| www.久久草.com| 国产亚洲欧美一区二区| 精品国产一区一区二区三亚瑟| 91制片厂免费观看| 国产精品久久久久9999高清| 亚洲综合日韩欧美| 成a人片亚洲日本久久| 日韩人妻无码精品综合区| 亚洲激情中文1区| 69xxxx国产| 精品少妇一区二区三区免费观看| 精品推荐蜜桃传媒| 欧美日韩国产123| 一二区成人影院电影网| 成人蜜桃视频| 成人在线免费观看91| 亚洲人成无码网站久久99热国产 | 国产精品网站视频| 国产另类在线| 2021狠狠干| 日韩影院在线观看| 国产日韩视频一区| 综合电影一区二区三区 | 国产精品成人久久| 欧美群妇大交群的观看方式| 视频二区在线观看| 欧美xxxx18性欧美| 成人做爰免费视频免费看| 国产在线精品一区二区中文| 伊人久久大香线蕉综合四虎小说| 高清在线观看免费| 国产凹凸在线观看一区二区| 青青青视频在线播放| 欧美性xxxxxx| 东京干手机福利视频| 久久亚洲精品小早川怜子66| 国产精品xxx| 欧美精品人人做人人爱视频| 亚洲大胆av| 在线观看免费看片| 中文字幕在线不卡视频| 乱子伦一区二区三区| 亚洲精品98久久久久久中文字幕| 色帝国亚洲欧美在线| 成人久久一区二区| 成人亚洲一区二区| 男人搞女人网站| 国产视频一区二区在线观看| 国产成人无码一区二区在线播放| 亚洲国产精品久久久久秋霞蜜臀| 香蕉成人app免费看片| 亚洲一区二区三区视频播放| 日本一区二区在线看| 欧美日韩在线观看不卡| 国产无遮挡一区二区三区毛片日本| 国产精品777777| 亚洲激情在线观看视频免费| 爱情岛亚洲播放路线| 国产富婆一区二区三区| 韩国精品一区二区三区| 日本泡妞xxxx免费视频软件| 一区二区国产视频| 成人午夜精品福利免费| 午夜精品在线观看| 日韩成人午夜| 虎白女粉嫩尤物福利视频| 2020国产精品久久精品美国| 成人毛片在线播放| 亚洲欧美成人网| 日本一区免费网站| 在线成人av电影| 国产成人午夜精品影院观看视频 | 日韩精品视频网站| 国产又黄又粗的视频| 欧美人妇做爰xxxⅹ性高电影| 国产黄a三级三级三级av在线看| 91精品视频在线播放| 欧美激情在线| aa一级黄色片| 欧美性受极品xxxx喷水| 麻豆av在线导航| www国产亚洲精品| 一本综合精品| 中文字幕第24页| 9191久久久久久久久久久| 怡红院av在线| 久久riav二区三区| 日韩制服丝袜av| 亚洲综合网在线| 日韩大陆毛片av| 成人精品动漫| 日本中文字幕一级片| 99久久婷婷国产| 欧美一级做a爰片免费视频| 久久久www成人免费精品| 国产成人一二片| 国产一二三区av| 亚洲亚洲精品在线观看| 国产一区二区三区不卡在线| 亚洲一区二区久久久久久久| 亚洲精选国产| 狂野欧美性猛交| 亚洲第一男人av| h1515四虎成人| 日韩美女爱爱视频| 亚洲国产经典视频| 亚洲精品国产片| 国产精品自产拍在线观看| 在线欧美视频| 北条麻妃在线观看视频| 亚洲精品美女视频| 91国产一区| www.日本xxxx| 亚洲高清免费观看 | 亚洲你懂的在线视频| 免费观看成年在线视频网站| 亚洲最大成人免费视频| 日韩电影在线观看电影| 日本中文字幕免费观看| 久热精品视频在线观看一区|