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

線上服務(wù)頻繁Full GC?鋸齒狀內(nèi)存波動(dòng)的深度排查與根治指南

開發(fā) 前端
線上服務(wù)頻繁Full GC和鋸齒狀內(nèi)存波動(dòng),是一個(gè)典型的“對(duì)象創(chuàng)建與回收節(jié)奏失衡”問題。它更像一個(gè)性能“癥狀”,而非“疾病”本身。

作為一名長(zhǎng)期與JVM打交道的開發(fā)者,最令人神經(jīng)緊繃的監(jiān)控告警之一莫過于:“您的服務(wù)正在頻繁進(jìn)行Full GC”。這不僅僅是一條告警,更是性能瓶頸、響應(yīng)延遲甚至服務(wù)宕機(jī)的前兆。當(dāng)監(jiān)控圖表上清晰地顯示出堆內(nèi)存如鋸齒般規(guī)律地起伏(例如從2G->1.8G->2G),這背后一定隱藏著某個(gè)“劇本”。今天,我們就來當(dāng)一回JVM世界的“偵探”,徹底揭開這個(gè)鋸齒狀波動(dòng)的秘密,并找到根治之法。

一、現(xiàn)象解讀:鋸齒背后的信號(hào)

首先,我們要讀懂監(jiān)控告訴我們的信息。

? 鋸齒狀波動(dòng) (2G -> 1.8G -> 2G):這是一個(gè)非常典型且重要的模式。它告訴我們:

(1)內(nèi)存被穩(wěn)定地分配和釋放:堆內(nèi)存使用量緩慢而穩(wěn)定地上升到接近最大容量(例如2G),然后被一次垃圾回收(很可能是Full GC)瞬間打回一個(gè)較低的值(例如1.8G),之后這個(gè)循環(huán)再次開始。

(2)可能不是內(nèi)存泄漏:如果是內(nèi)存泄漏,曲線應(yīng)該是“階梯式”上漲,每次GC后回收的內(nèi)存越來越少,最終耗盡。而鋸齒狀更傾向于表明有大量對(duì)象在短時(shí)間內(nèi)同時(shí)變成垃圾,GC能回收掉絕大部分,但過程很吃力。

? 頻繁Full GC:Full GC是JVM的“全局停頓”事件,會(huì)停止所有應(yīng)用線程(Stop-The-World),對(duì)整個(gè)堆(Young Gen, Old Gen)以及方法區(qū)(元空間)進(jìn)行回收。它的頻繁發(fā)生直接導(dǎo)致:

? 應(yīng)用平均響應(yīng)時(shí)間(RT)飆升。

? 吞吐量(TPS/QPS)下降。

? 用戶體驗(yàn)極差,感覺服務(wù)“一卡一卡”的。

將兩者結(jié)合,我們的核心排查思路就是:究竟是什么樣的大量對(duì)象,在以什么樣的方式創(chuàng)建,最終觸發(fā)了Full GC?

二、破案工具集:拿出你的“顯微鏡”和“聽診器”

在深入分析原因前,必須準(zhǔn)備好排查工具。盲目猜測(cè)是調(diào)優(yōu)的大忌。

1. jstat -gcutil:命令行首選,實(shí)時(shí)監(jiān)控GC狀態(tài)。

jstat -gcutil <pid> 1000  # 每1秒輸出一次當(dāng)前進(jìn)程的GC統(tǒng)計(jì)數(shù)據(jù)

重點(diǎn)關(guān)注 FGC/FGCT(Full GC次數(shù)/總耗時(shí))、OU(老年代使用容量)。

2. GC日志:這是最重要的證據(jù)! 必須在JVM啟動(dòng)參數(shù)中開啟。

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -Xloggc:/path/to/gc.log

對(duì)于Java 8及以上,推薦使用更強(qiáng)大的日志框架:

-Xlog:gc*=info:file=/path/to/gc.log:time,tags:filecount=5,filesize=10M

GC日志會(huì)詳細(xì)記錄每次GC的類型、時(shí)間、內(nèi)存回收前后大小、耗時(shí)等。

3. 堆轉(zhuǎn)儲(chǔ)(Heap Dump):當(dāng)懷疑某些對(duì)象過多時(shí),可以生成堆內(nèi)存的快照進(jìn)行分析。

jmap -dump:live,format=b,file=heap_dump.hprof <pid>  # 觸發(fā)一次Full GC后轉(zhuǎn)儲(chǔ),影響較大
# 或者使用工具動(dòng)態(tài)分析(如Arthas的`heapdump`命令)

使用MAT(Eclipse Memory Analyzer Tool)或JProfiler等工具分析dump文件。

4. APM工具(Arthas, SkyWalking, Pinpoint):這些應(yīng)用性能管理工具可以幫我們快速定位到慢查詢、熱點(diǎn)方法,甚至關(guān)聯(lián)出具體的代碼行。

強(qiáng)烈建議: 立即在測(cè)試或預(yù)發(fā)環(huán)境復(fù)現(xiàn)問題,并加上上述監(jiān)控和日志參數(shù)。線上環(huán)境如果條件允許,也應(yīng)在業(yè)務(wù)低峰期盡快添加。

三、深度排查:揪出“元兇”的四種常見場(chǎng)景

鋸齒狀波動(dòng)和頻繁Full GC,根源通常不在老年代本身,而在于對(duì)象如何從年輕代晉升到老年代。以下是四大常見“元兇”及其排查手法。

場(chǎng)景一:短命的大對(duì)象——直接進(jìn)入老年代的“巨無霸”

JVM有一個(gè)參數(shù):-XX:PretenureSizeThreshold。它的作用是,如果創(chuàng)建一個(gè)對(duì)象的大小超過這個(gè)閾值,為了避免在年輕代的Survivor區(qū)之間來回復(fù)制,這個(gè)對(duì)象會(huì)直接分配在老年代。

? 推理過程:
如果你的代碼中頻繁創(chuàng)建了略大于這個(gè)閾值(默認(rèn)可能是0,意味著默認(rèn)不啟用,但有些框架或容器可能會(huì)設(shè)置)的大對(duì)象(比如大數(shù)組、大的字符串緩存等),它們會(huì)跳過年輕代,直接占據(jù)老年代的空間。老年代的空間通常是被緩慢填充的,當(dāng)這些“巨無霸”對(duì)象突然變成垃圾時(shí),就會(huì)觸發(fā)一次Full GC來回收它們,從而形成鋸齒圖。

? 如何驗(yàn)證:

(1)檢查JVM參數(shù),看是否設(shè)置了 PretenureSizeThreshold。

(2)在GC日志中搜索 PSYoungGen(Parallel Scavenge收集器的年輕代GC),觀察每次Young GC后老年代使用量(ParOldGen)的漲幅。如果Young GC很平靜,但老年代使用量卻莫名其妙地快速增長(zhǎng),很可能就是大對(duì)象直接分配。

(3)使用jmap -histo <pid> 或分析堆轉(zhuǎn)儲(chǔ),查看數(shù)量眾多的、體積龐大的對(duì)象是哪些。

? 代碼示例:

// 假設(shè) PretenureSizeThreshold 被設(shè)置為3MB
public class BigObjectCreator {
    public void processRequest() {
        // 每次請(qǐng)求都創(chuàng)建一個(gè)2MB的數(shù)組,這會(huì)在年輕代正常分配和回收
        byte[] smallObj = new byte[2 * 1024 * 1024];

        // 但如果是創(chuàng)建一個(gè)4MB的數(shù)組,就會(huì)直接進(jìn)入老年代!
        byte[] bigObj = new byte[4 * 1024 * 1024]; // 元兇!
        // ... 使用bigObj
        // 方法結(jié)束,bigObj在老年代成為垃圾,等待Full GC回收
    }
}
場(chǎng)景二:過早晉升(Premature Promotion)——Survivor區(qū)的“叛徒”

這是最常見的原因。對(duì)象本該在年輕代被回收,卻意外地進(jìn)入了老年代,撐爆了老年代。
年輕代的GC(Minor GC)規(guī)則是:對(duì)象在Eden區(qū)出生,經(jīng)過一次Minor GC后如果還存活,會(huì)進(jìn)入Survivor區(qū)(S0或S1)。每經(jīng)歷一次Minor GC且存活,年齡就+1。當(dāng)年齡達(dá)到一定閾值(-XX:MaxTenuringThreshold,默認(rèn)15),才會(huì)晉升到老年代。

? 推理過程:
如果Survivor區(qū)的空間太小,或者短時(shí)間內(nèi)產(chǎn)生的大量存活對(duì)象在一次Minor GC后,Survivor區(qū)完全放不下,那么多出的存活對(duì)象就會(huì)被迫提前晉升到老年代,無論它們的年齡是多少。這些本應(yīng)短壽的對(duì)象占據(jù)了老年代,很快又集體變成垃圾,從而頻繁觸發(fā)Full GC。

? 如何驗(yàn)證:

(1)查看GC日志:這是關(guān)鍵。關(guān)注每次Minor GC的日志:

[PSYoungGen: 524800K->8156K(611840K)]  -> 年輕代回收了大部分空間
654321K->143765K(2023424K)] -> 但堆內(nèi)存總量只下降了一點(diǎn)點(diǎn)
0.0212345 secs]

關(guān)鍵點(diǎn):年輕代回收效果很好(從524800K到8156K),但整個(gè)堆的內(nèi)存回收效果很差(從654321K到143765K)。這中間巨大的差值,就是被迫晉升到老年代的對(duì)象大小。

(2)使用jstat:觀察 S0CS1C(Survivor區(qū)容量)和 S0US1U(使用量)。如果它們的使用率長(zhǎng)期100%或者頻繁為0,說明Survivor區(qū)分配/交換激烈,可能太小。

? 解決方案思路:

(1)增大年輕代,特別是Survivor區(qū):-Xmn 參數(shù)設(shè)置整個(gè)年輕代大小。Survivor區(qū)占比由 -XX:SurvivorRatio=8(表示Eden:S0:S1=8:1:1)控制。如果Survivor區(qū)太小,可以適當(dāng)減小這個(gè)比值,比如設(shè)置為 -XX:SurvivorRatio=6(Eden:S0:S1=6:1:1)。

(2)優(yōu)化程序:減少不必要的對(duì)象創(chuàng)建,尤其是循環(huán)中和高頻方法中的對(duì)象創(chuàng)建。例如,避免在日志打印中拼接大字符串(使用占位符log.debug("User id is {}", userId)而不是"User id is " + userId)。

場(chǎng)景三:緩存失控——“永不消失”的臨時(shí)工

很多框架(如Spring, MyBatis, Hibernate)或自實(shí)現(xiàn)代碼中,會(huì)使用緩存來提升性能。但如果緩存沒有合適的淘汰策略(如LRU、LFU),或者緩存的生命周期與請(qǐng)求綁定而不是與會(huì)話綁定,就可能導(dǎo)致大量本該回收的對(duì)象被緩存引用而無法釋放。

? 推理過程:
緩存對(duì)象通常具有中等生命周期,容易被放入老年代。如果緩存不斷增長(zhǎng)且沒有有效的淘汰機(jī)制,老年代最終會(huì)被填滿,觸發(fā)Full GC。但Full GC也無法回收這些被強(qiáng)引用緩存的對(duì)象,導(dǎo)致GC效果差,很快又會(huì)再次觸發(fā)Full GC,形成惡性循環(huán)。鋸齒圖可能不那么“完美”,但頻繁Full GC是肯定的。

? 如何驗(yàn)證:

(1)生成堆轉(zhuǎn)儲(chǔ),使用MAT分析:這是最直接的方法。在MAT中查看 Dominator Tree 或 Histogram,找到占用內(nèi)存最大的對(duì)象。查看其GC Root路徑,很容易就能發(fā)現(xiàn)是不是被某個(gè) HashMap 或 ConcurrentHashMap 所引用。

(2)檢查代碼中所有使用 Map 作為緩存的地方。

? 解決方案:

// 不良緩存示例
public class BadCache {
    private static final Map<String, Object> CACHE = new ConcurrentHashMap<>(); // 強(qiáng)引用,GC無法回收

    public void addToCache(String key, Object value) {
        CACHE.put(key, value);
    }
}

// 改進(jìn):使用Caffeine with max size and expire time
public class GoodCache {
    private static final Cache<String, Object> CACHE = Caffeine.newBuilder()
            .maximumSize(10000)
            .expireAfterWrite(10, TimeUnit.MINUTES)
            .build();

    public void addToCache(String key, Object value) {
        CACHE.put(key, value);
    }
}

(1)使用弱引用(WeakHashMap)或軟引用(SoftReference)來實(shí)現(xiàn)緩存,讓GC在內(nèi)存緊張時(shí)可以回收這些對(duì)象。

(2)使用專業(yè)的緩存庫(如Caffeine, Guava Cache),并設(shè)置合理的最大容量和過期時(shí)間。

場(chǎng)景四:API響應(yīng)數(shù)據(jù)過大或循環(huán)調(diào)用

這種情況在外接接口或RPC調(diào)用中常見。

? 推理過程:
某個(gè)API接口或遠(yuǎn)程方法調(diào)用,返回了一個(gè)非常大的JSON/XML響應(yīng)或數(shù)據(jù)對(duì)象。在解析這個(gè)響應(yīng)時(shí)(例如使用Jackson/Gson反序列化),會(huì)創(chuàng)建大量的臨時(shí)對(duì)象。如果這個(gè)調(diào)用發(fā)生在一個(gè)循環(huán)或高頻請(qǐng)求中,就會(huì)在極短時(shí)間內(nèi)產(chǎn)生海量對(duì)象,迅速撐爆年輕代,并導(dǎo)致大量對(duì)象提前晉升到老年代。

? 如何驗(yàn)證:

(1)結(jié)合APM工具(如Arthas)的 trace 或 monitor 命令,定位到耗時(shí)較長(zhǎng)、調(diào)用次數(shù)多的方法。

(2)在GC日志中,可以看到兩次GC的間隔時(shí)間非常短,并且每次回收后老年代使用率都有顯著上升。

(3)檢查代碼中的外部調(diào)用和循環(huán)邏輯。

四、解決方案與調(diào)優(yōu)實(shí)踐

排查到根本原因后,解決方案就水到渠成了。

1. 首要任務(wù):優(yōu)化代碼

? 減少不必要的對(duì)象創(chuàng)建:審視代碼中的循環(huán)、高頻方法、日志打印。

? 避免大對(duì)象:拆分大數(shù)組、大集合。

? 設(shè)計(jì)合理的緩存:使用帶容量和過期時(shí)間的緩存框架。

2. 合理設(shè)置JVM參數(shù)(基于監(jiān)控?cái)?shù)據(jù))

? 不要盲目調(diào)大堆內(nèi)存:-Xmx4g 可能會(huì)讓鋸齒的周期變長(zhǎng),但停頓時(shí)間可能更長(zhǎng),只是“掩耳盜鈴”。

? 調(diào)整新生代與老年代的比例:如果確實(shí)存在大量朝生夕死的對(duì)象,可以適當(dāng)增大新生代比例 -XX:NewRatio=2(表示老年代:年輕代=2:1,即年輕代占整個(gè)堆的1/3)。

? 調(diào)整Survivor區(qū)比例:如果發(fā)現(xiàn)過早晉升,嘗試調(diào)小 -XX:SurvivorRatio

? 選擇更適合的GC器:對(duì)于響應(yīng)時(shí)間敏感的應(yīng)用,可以嘗試使用低停頓的G1GC或ZGC。

# 使用G1GC的示例參數(shù)
-XX:+UseG1GC
-Xmx4g
-Xms4g
-XX:MaxGCPauseMillis=200  # 設(shè)置目標(biāo)停頓時(shí)間

調(diào)優(yōu)是一個(gè)迭代和驗(yàn)證的過程。 每次只調(diào)整一個(gè)參數(shù),然后持續(xù)觀察監(jiān)控和GC日志,看性能指標(biāo)(RT, TPS, FGC頻率)是否向好的方向發(fā)展。

五、總結(jié)

線上服務(wù)頻繁Full GC和鋸齒狀內(nèi)存波動(dòng),是一個(gè)典型的“對(duì)象創(chuàng)建與回收節(jié)奏失衡”問題。它更像一個(gè)性能“癥狀”,而非“疾病”本身。我們的排查思路就像一個(gè)偵探故事:

1. 勘察現(xiàn)場(chǎng):看懂監(jiān)控圖表和GC日志。

2. 尋找線索:利用jstat、堆轉(zhuǎn)儲(chǔ)、APM工具收集證據(jù)。

3. 推理審訊:圍繞“對(duì)象如何晉升到老年代”這一核心,對(duì)“短命大對(duì)象”、“過早晉升”、“緩存失控”、“API數(shù)據(jù)過大”四大常見嫌犯逐一審問排查。

4. 定罪懲處:要么修改代碼從根源上減少對(duì)象創(chuàng)建,要么調(diào)整JVM參數(shù)為對(duì)象提供更順暢的“生命周期通道”。

記住,沒有一勞永逸的萬能參數(shù),只有對(duì)自身應(yīng)用特性和代碼行為的深刻理解,才是解決JVM性能問題的最強(qiáng)武器。希望這篇指南能幫你下次在遇到Full GC告警時(shí),能夠從容不迫,精準(zhǔn)地定位并解決問題。

責(zé)任編輯:武曉燕 來源: 程序員秋天
相關(guān)推薦

2025-08-11 02:00:52

2024-08-14 14:20:00

2023-01-04 18:32:31

線上服務(wù)代碼

2018-08-10 15:00:42

服務(wù)器內(nèi)存排查

2023-04-30 12:44:28

GC應(yīng)用性能

2025-03-31 04:25:00

2025-06-16 07:40:00

2022-12-17 19:49:37

GCJVM故障

2017-08-18 22:40:33

線上線程備份

2025-04-24 09:01:37

2025-01-23 08:38:46

2024-03-11 08:51:08

JVMSWAP內(nèi)存

2021-04-14 10:14:34

JVM生產(chǎn)問題定位內(nèi)存泄露

2021-04-12 09:36:14

JVM生產(chǎn)問題JVM FULL GC

2018-08-17 08:44:37

服務(wù)器內(nèi)存排查

2020-03-03 17:35:09

Full GCMinor

2021-08-02 15:06:46

vim服務(wù)Java

2019-06-24 08:17:55

CPUFullGCJava

2010-10-12 10:04:30

無法無線上網(wǎng)

2011-03-28 10:03:46

Btrace
點(diǎn)贊
收藏

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

av在线日韩| 日韩在线观看视频网站| 精品日本12videosex| 欧美私人免费视频| 中文字幕欧美日韩一区二区三区| 136福利视频导航| 欧美激情四色| 国产亚洲欧洲高清一区| 亚洲一二区在线观看| 日本色护士高潮视频在线观看| 97se狠狠狠综合亚洲狠狠| 国产精品欧美风情| 日韩激情一区二区三区| 精品国产精品久久一区免费式| 91精品国产乱码久久蜜臀| 无码人妻丰满熟妇区96| av天在线观看| a级高清视频欧美日韩| 国产男女猛烈无遮挡91| 圆产精品久久久久久久久久久 | 成人在线视频电影| 天码人妻一区二区三区在线看| 亚洲有吗中文字幕| 国产一区二区三区精品久久久 | 免费拍拍拍网站| 一级毛片视频在线观看| 久久先锋资源网| 99在线看视频| 国产精品无码AV| 日韩国产精品91| 久久久最新网址| 久艹在线观看视频| 欧美伦理在线视频| 精品偷拍一区二区三区在线看| 欧美国产日韩在线视频| 亚洲电影有码| 色综合久久中文字幕综合网| 国产精品8888| 秋霞午夜理伦电影在线观看| 久久久久99精品一区| 国产亚洲一区二区三区在线播放 | 狠狠色伊人亚洲综合成人| 7777精品视频| 日韩免费一二三区| 狠狠综合久久| 欧美激情二区三区| 2021亚洲天堂| 欧美激情综合| 精品综合久久久久久97| 欧美第一页在线观看| 久久亚洲国产| 精品国产美女在线| 美女三级黄色片| 99国内精品久久久久久久| 在线观看国产欧美| 黄色片在线观看免费| 红桃成人av在线播放| 国产一区二区三区在线观看网站| 精品人妻一区二区三区视频| 成人在线超碰| 亚洲精品成人av| 无码一区二区精品| 亚洲+变态+欧美+另类+精品| 日韩精品一区二区视频| 人妻熟女aⅴ一区二区三区汇编| 久草精品视频| 亚洲精品在线视频| 波多野在线播放| 日韩片欧美片| 久久亚洲私人国产精品va| 色婷婷在线视频观看| 欧美欧美全黄| 91极品女神在线| 亚洲精选视频在线| 加勒比成人在线| 91九色国产在线播放| 欧美日韩激情小视频| 日韩在线xxx| 亚洲女色av| 欧美午夜精品一区二区三区| 日韩精品aaa| 六月丁香久久丫| 亚洲女人天堂成人av在线| 成人在线手机视频| 亚洲欧洲日韩| 91高潮在线观看| 中日韩在线观看视频| 狠狠色2019综合网| 国产在线精品一区二区中文| 精品三级久久久久久久电影聊斋| 国产精品久久久久久一区二区三区 | 国产人妖一区二区三区| 成人污污视频在线观看| 欧美日韩在线精品| 免费av在线网址| 亚洲无人区一区| 天天碰免费视频| 136导航精品福利| 亚洲三级av在线| 欧美人妻精品一区二区三区| 久久综合激情| 成人免费视频网站| 成人动漫在线播放| 亚洲国产裸拍裸体视频在线观看乱了 | 波多野结衣成人在线| 欧洲免费在线视频| 亚洲久草在线视频| 国产自偷自偷免费一区| 亚洲精品在线播放| 中文字幕日本精品| 日韩美女一级片| 激情成人综合网| av蓝导航精品导航| 高清毛片在线看| 五月激情六月综合| 欧美精品色视频| 日韩伦理一区| 欧美专区在线观看| 亚洲国产精品欧美久久| 国产精品三级av在线播放| www.国产在线视频| 亚洲欧洲一二区| 尤物99国产成人精品视频| 日韩av在线电影| 国产在线视频一区二区三区| 欧美激情第六页| 草草视频在线| 精品久久久久久久人人人人传媒 | 97人人香蕉| 最新97超碰在线| 色婷婷综合久久久中文一区二区| 中国男女全黄大片| 中文字幕一区二区av| 国产精品久久久久久五月尺| 日韩在线免费看| 亚洲国产日韩av| 日本黄色大片在线观看| 亚洲无中文字幕| 91久久国产婷婷一区二区| 国产高清一级毛片在线不卡| 欧美性xxxxxx| 插吧插吧综合网| 亚洲欧美大片| 国内精品国语自产拍在线观看| 欧美伦理免费在线| 精品久久久网站| 国产一级片久久| 成人av网站免费| 日本午夜激情视频| 国产精品18hdxxxⅹ在线| 欧美极品欧美精品欧美视频| 亚洲福利在线观看视频| 亚洲综合成人在线视频| 91精品人妻一区二区三区蜜桃2| 亚洲综合色网| 国产99午夜精品一区二区三区| 在线播放免费av| 精品美女在线播放| 日韩女同强女同hd| 91亚洲精品久久久蜜桃网站| 男人操女人逼免费视频| 尤物tv在线精品| 国产精品久久久久久av下载红粉 | 亚洲日本中文字幕区| 日韩欧美色视频| 亚洲高清网站| 欧美精品亚洲| 欧美高清影院| 欧美高清视频在线观看| 人妻精品一区二区三区| 日韩欧美国产中文字幕| www.99热| 精品一区二区在线看| 欧美日韩激情四射| 少妇一区二区三区| 国产精品丝袜一区二区三区| a级网站在线播放| 亚洲国产精品福利| 久久久999久久久| 亚洲靠逼com| 国产黄色网址在线观看| 激情另类小说区图片区视频区| 高清无码一区二区在线观看吞精| 久久男人av| 国产精品亚洲一区二区三区| 中文字幕中文字幕在线中高清免费版 | 亚洲摸摸操操av| aaaaaav| 国精产品一区一区三区mba视频| 97视频在线免费| 精品国产成人| 国产精品18毛片一区二区| 桃子视频成人app| 色综合色综合网色综合| 精品乱码一区二区三四区视频| 欧美久久久久久久久久| 欧美亚洲精品天堂| 亚洲私人黄色宅男| 女人被狂躁c到高潮| 久久成人免费日本黄色| 青青草视频在线免费播放| 成人亚洲一区二区| 精品国产一区二区三区久久久久久 | 日本成人一区二区三区| 51精品秘密在线观看| 国产高潮久久久| 亚洲免费资源在线播放| 亚洲区自拍偷拍| 国产成人免费网站| 蜜臀av免费观看| 亚洲尤物影院| 国产爆乳无码一区二区麻豆| 成人网18免费网站| 久久免费看av| baoyu135国产精品免费| 成人激情在线播放| 精品三区视频| 日本在线精品视频| 国产精品高颜值在线观看| 久久综合色88| 1769在线观看| 亚洲性视频网址| 青青草在线免费视频| 亚洲成人网久久久| 国产高清视频免费观看| 欧美日韩精品一区二区三区蜜桃| 五月天婷婷久久| 午夜久久久久久| 妺妺窝人体色www在线下载| 国产精品国产三级国产| 国产精品成人无码免费| 久久影音资源网| 国产三级视频网站| www.日韩精品| 亚洲欧美高清在线| 国产suv精品一区二区883| 中文字幕在线视频一区二区| 精品综合免费视频观看| av免费一区二区| 激情综合色播五月| 91插插插影院| 激情综合色综合久久综合| 国产乱女淫av麻豆国产| 另类成人小视频在线| 亚洲成人福利在线| 久久精品免费观看| 成人不卡免费视频| 狠狠色狠狠色综合日日91app| 成人av毛片在线观看| 激情欧美日韩一区二区| 日本一区二区三区在线免费观看| 国产在线精品视频| 美女又黄又免费的视频| 国产精品亚洲一区二区三区妖精 | 免费一级特黄特色毛片久久看| 在线欧美亚洲| 欧美激情国产精品日韩| 日韩高清在线不卡| 奇米视频888| 国产精品一区二区黑丝| 亚洲av无码一区东京热久久| 99视频在线精品| 久久美女免费视频| 国产精品乱人伦一区二区| 久久国产高清视频| 亚洲综合一区在线| 国产精品suv一区二区三区| 色综合久久久久综合体| 伊人免费在线观看高清版| 3atv在线一区二区三区| 亚洲黄色小说网址| 亚洲免费一在线| 欧洲日本在线| 欧美精品久久久久久久久| av日韩电影| 成人免费在线视频网站| 国产精品丝袜在线播放| 欧美日韩在线高清| 在线观看日韩| 精品中文字幕av| 久久99国产精品麻豆| 中文在线字幕观看| 久久精品免视看| 亚洲精品成人av久久| 亚洲乱码一区二区三区在线观看| 六月丁香在线视频| 精品视频色一区| 人妻精品一区一区三区蜜桃91| 亚洲人成欧美中文字幕| 中文字幕在线播放网址| 日本成人黄色片| 久久一级大片| 欧美日韩大片一区二区三区 | 久久亚洲影视婷婷| 国产又色又爽又高潮免费| 亚洲网友自拍偷拍| 中文字幕人成人乱码亚洲电影| 欧美大黄免费观看| av在线播放av| 91精品国产91久久| 成人国产精品久久| 欧美18视频| 国产一区久久| 中文av一区二区三区| 91丨porny丨户外露出| 人妻人人澡人人添人人爽| 色94色欧美sute亚洲线路一久 | 一区二区三区在线播放欧美| 男女在线观看视频| 国产精品自拍偷拍视频| 日日天天久久| 国产精品久久国产| 捆绑紧缚一区二区三区视频| 手机在线看片日韩| 亚洲最快最全在线视频| 中文字幕一区二区三区四区视频| 精品粉嫩超白一线天av| 麻豆tv免费在线观看| 国产精品成熟老女人| 日韩极品在线| 国产精品www在线观看| 国产乱理伦片在线观看夜一区| 国产免费嫩草影院| 91国偷自产一区二区三区成为亚洲经典| 人妻夜夜爽天天爽| 超碰91人人草人人干| 欧美亚洲人成在线| 日韩电影免费观看在| 久久久久久色| 丰满少妇一区二区三区| 亚洲尤物在线视频观看| 中文字幕欧美在线观看| 国产午夜精品一区二区三区| 国产精品扒开腿做爽爽爽视频软件| 国产日韩欧美精品| 1024成人| 四虎永久免费观看| 亚洲一区二区三区四区在线免费观看| 一炮成瘾1v1高h| xxav国产精品美女主播| 日本国产一区| 在线视频亚洲自拍| 精品一区二区成人精品| 91香蕉一区二区三区在线观看| 欧美三级三级三级| 日本在线观看免费| 91久久久精品| 中文字幕一区二区三区久久网站| 亚洲一区二区中文字幕在线观看| 亚洲视频 欧洲视频| av网站在线观看免费| 久久国产视频网站| 日韩中文字幕一区二区高清99| 免费极品av一视觉盛宴| 成+人+亚洲+综合天堂| 中文字幕第15页| 亚洲午夜未满十八勿入免费观看全集 | 国产精品美女久久久久av超清| 国产一区二区三区日韩精品 | www亚洲一区| 亚洲 日本 欧美 中文幕| 中文字幕精品一区久久久久| 欧美成人家庭影院| 国产免费裸体视频| ww久久中文字幕| 伊人免费在线观看| 色综合久久88| 伊甸园亚洲一区| 老司机久久精品| 亚洲国产综合视频在线观看| 三级在线观看| 国产精品网红福利| 欧美视频导航| 在线免费观看麻豆| 欧美精品高清视频| xxxcom在线观看| 日韩福利视频| 国产精品18久久久久| 亚洲黄色小说图片| 久久久成人的性感天堂| 久久99国产精品久久99大师| 看欧美ab黄色大片视频免费| 一区二区三区日韩欧美| 青青青草网站免费视频在线观看| 国产欧美精品一区二区三区-老狼| 欧美激情一级片一区二区| 香蕉视频久久久| 日韩欧美色综合| 日韩精品三区| 无码日本精品xxxxxxxxx| 久久久精品国产免大香伊| 国产欧美一级片| 欧洲一区二区视频| 欧美va亚洲va日韩∨a综合色| 插吧插吧综合网| 欧美成人国产一区二区| 成人免费毛片嘿嘿连载视频…| 大西瓜av在线| 中文字幕日韩欧美一区二区三区| 五月婷婷深深爱|