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

天天做天天爱天天综合网2021 | 国产91精品精华液一区二区三区| 超在线视频97| 美女扒开腿免费视频| 手机在线观看av网站| 欧美激情一区二区三区不卡| 亚洲综合社区网| 欧美国产成人精品一区二区三区| 久久一区二区三区电影| 日韩欧美激情一区| 国产欧美高清在线| 欧美日韩经典丝袜| 久久综合九色综合97婷婷女人| 国产在线视频2019最新视频| 国产成人精品亚洲男人的天堂| 国产亚洲欧美日韩在线观看一区二区 | 久久久伊人日本| 国产不卡在线观看视频| 给我免费播放日韩视频| 欧美日韩一二三区| 一区二区传媒有限公司| 国产精品刘玥久久一区| 久久久另类综合| 国产精品免费一区二区三区四区 | 免费成人美女在线观看.| 欧美丰满少妇xxxxx| gv天堂gv无码男同在线观看| 精品国产乱子伦一区二区| 欧美日韩中文精品| 97在线播放视频| 欧美人与性动交α欧美精品济南到 | 污污的视频在线免费观看| 欧美男人操女人视频| 欧美精品777| 日韩精品免费播放| 中国字幕a在线看韩国电影| 一区二区在线观看av| 亚洲精品8mav| 国产亚洲依依| 久久夜色精品国产欧美乱极品| 亚洲精品日产aⅴ| 国产影视一区二区| 捆绑紧缚一区二区三区视频| 欧美亚洲视频一区二区| 精品在线视频免费| 牛牛国产精品| 精品中文字幕视频| 男人在线观看视频| 日韩在线二区| 色噜噜久久综合伊人一本| 成人免费av片| 亚洲素人在线| 亚洲乱码一区av黑人高潮| 岛国av免费观看| 一区二区三区四区视频免费观看| 91精品国产高清一区二区三区蜜臀 | 老司机福利在线观看| 曰本一区二区三区视频| 亚洲精品视频免费在线观看| 日韩网站在线播放| 综合色就爱涩涩涩综合婷婷| 亚洲精品之草原avav久久| 久久久久麻豆v国产精华液好用吗 在线观看国产免费视频 | 国模大尺度视频| 久久综合给合| 精品久久久久久亚洲综合网| 99免费观看视频| 欧美aaaaa级| 亚洲丝袜在线视频| 貂蝉被到爽流白浆在线观看 | 成人性生活视频免费看| 91福利在线尤物| 色婷婷一区二区| www.com黄色片| 欧美日韩国产一区二区在线观看| 日韩视频免费观看高清在线视频| 三上悠亚 电影| 精品人人人人| 国产午夜精品美女视频明星a级| 国产馆在线观看| 91av精品| 2019中文字幕在线观看| 日韩黄色片网站| 韩国理伦片一区二区三区在线播放| 亚洲精品欧美极品| 五十路在线视频| 亚洲国产成人自拍| 日本福利视频在线观看| 欧美裸体视频| 欧美另类videos死尸| 亚洲av综合色区无码另类小说| 国产精品任我爽爆在线播放| 亚洲男人天堂九九视频| 一级黄色片日本| 亚洲精品黄色| 国产精品一区二区三区免费视频| av一级黄色片| 久久综合久久鬼色| 成年丰满熟妇午夜免费视频| 涩涩视频在线播放| 欧美日韩成人一区| 北京富婆泄欲对白| 欧美gvvideo网站| 午夜精品久久久久久久99热| 日韩精品在线一区二区三区| 国产99精品国产| 天天人人精品| 亚洲性色av| 日韩精品一区二区三区在线 | 91精品国产91久久久久久密臀| 久久久久久久一| 亚洲网站在线免费观看| www.亚洲精品| 99热这里只有精品免费| 成人免费毛片嘿嘿连载视频…| 欧美不卡一区二区三区四区| 免费黄色在线网址| 亚洲深爱激情| 99re在线观看视频| 欧美成人三区| 日本乱码高清不卡字幕| 国产精品扒开腿做爽爽爽a片唱戏| 精品国产乱码久久久| 国色天香2019中文字幕在线观看| 国产一区二区在线视频观看| 国产亚洲一区字幕| 内射国产内射夫妻免费频道| 天堂精品久久久久| 日韩一区二区三区xxxx| 无码人妻一区二区三区免费| 成人av网在线| 国产亚洲精品久久久久久久| 成人动漫视频在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 久久精品久久国产| 成人性生交大合| 成人一区二区av| 99久久这里有精品| 日韩中文字幕视频在线观看| 樱花视频在线免费观看| 91香蕉视频黄| 狠狠爱免费视频| 日韩精品丝袜美腿| 7777精品视频| 亚洲欧洲国产综合| 欧美日韩一区二区三区 | 欧美激情在线免费观看| 久久精品99国产| 一本色道久久综合亚洲精品酒店| 午夜免费久久久久| 视频一区二区三区在线看免费看| 天天射综合影视| 给我看免费高清在线观看| 亚洲精品四区| 欧美一级爽aaaaa大片| 日本黄色免费在线| 亚洲人成在线一二| 中文字幕一区二区人妻视频| 久久久精品免费观看| 一区二区在线播放视频| 成人vr资源| 成人免费淫片aa视频免费| av大大超碰在线| 精品日韩99亚洲| 国产精品自拍99| 久久精品亚洲一区二区三区浴池| 9久久婷婷国产综合精品性色| 成人一区而且| 亚洲v日韩v综合v精品v| 国产精品一区二区不卡视频| 国产一区二区视频免费观看 | 精品国产一区二区亚洲人成毛片| 久久精品欧美一区二区| 91在线观看污| www.色偷偷.com| 青青草成人影院| 亚洲自拍欧美色图| 男人添女人下部高潮视频在线观看| 精品国产123| 国产无套丰满白嫩对白| 国产精品久久久久永久免费观看| 波多野结衣中文字幕在线播放| 亚洲午夜黄色| 日韩尤物视频| 亚洲三级av| 欧美一区二区三区精品电影| 三区四区电影在线观看| 精品国产亚洲在线| 高潮无码精品色欲av午夜福利| 日韩毛片在线免费观看| 欧美大喷水吹潮合集在线观看| 日韩av二区在线播放| 欧美亚洲色图视频| 日韩精品久久久久久久电影99爱| eeuss一区二区三区| 亚洲高清黄色| 欧美日韩不卡合集视频| 国产永久免费高清在线观看| 精品久久国产老人久久综合| 波多野结衣影片| 一区二区不卡在线视频 午夜欧美不卡在| 久久无码人妻精品一区二区三区| 精品亚洲国内自在自线福利| 啊啊啊一区二区| 欧美88av| 天堂资源在线亚洲视频| 欧美人与动xxxxz0oz| 亚洲在线免费观看| av亚洲一区| 欧美在线中文字幕| 七七久久电影网| 色阁综合伊人av| 国产精品毛片一区二区三区四区| 亚洲а∨天堂久久精品喷水| 国产精品欧美久久久久天天影视| 日韩欧美在线视频免费观看| jizz国产免费| 一区二区三区高清不卡| 麻豆网址在线观看| 国产精品嫩草久久久久| 男人操女人动态图| 91免费国产视频网站| 国产精品偷伦视频免费观看了| 蜜臀久久99精品久久久久久9 | 91精品久久| 中文字幕av一区中文字幕天堂| 深夜福利在线看| 精品三级av在线| 国产精品自产拍| 精品久久久久久电影| 外国一级黄色片| 久久蜜桃香蕉精品一区二区三区| 黄色a级三级三级三级| 天堂蜜桃一区二区三区| 日韩一区二区高清视频| 国产区精品区| 久久久久高清| 菁菁伊人国产精品| 91网站在线看| 精品一区二区三区亚洲| 国产又爽又黄的激情精品视频| 97成人资源| 日本一区二区不卡| 丝袜诱惑一区二区| 久久久久一本一区二区青青蜜月 | 久久夜色精品国产欧美乱| 国产一级在线观看| 亚洲乱亚洲乱妇无码| 无码精品一区二区三区在线| 欧美精品tushy高清| 中文字字幕在线观看| 91久久线看在观草草青青| 豆国产97在线 | 亚洲| 婷婷综合另类小说色区| 国产网站在线看| 亚洲一级二级三级| 一区二区三区视频免费看| 午夜一区二区三区在线观看| 欧美交换国产一区内射| 图片区小说区国产精品视频| 日产电影一区二区三区| 午夜久久久久久电影| 久久免费激情视频| 色综合久久九月婷婷色综合| 天天操天天摸天天干| 欧美日韩中文在线观看| 中文字幕久久网| 欧美日韩国产美| 国产日韩欧美一区二区东京热| 精品少妇一区二区三区在线视频| 亚洲国产一二三区| 亚洲国产小视频| 欧美视频综合| 自拍偷拍免费精品| 国产在线1区| 欧美裸体xxxx极品少妇| 丰满的护士2在线观看高清| 国产综合在线视频| 青春草免费在线视频| 日本不卡视频在线播放| 91精品国产66| 99re视频在线| 欧洲福利电影| 天堂av在线中文| 在线一区免费观看| 日本美女视频一区| 成人免费高清在线| 99久久久无码国产精品衣服| 一区二区国产视频| 黄色在线视频网址| 欧美精品1区2区| 久久天堂电影| 久色乳综合思思在线视频| av毛片午夜不卡高**水| 国产剧情日韩欧美| 亚洲免费一区三区| 免费电影一区| 亚洲视频精品| 国产喷水theporn| 成人国产免费视频| 蜜臀av午夜精品久久| 天天色 色综合| 一级黄在线观看| 亚洲精品一区在线观看香蕉| 黄色网页网址在线免费| 97香蕉超级碰碰久久免费软件| 亚洲一区二区三区久久久| 国产欧美日韩综合精品二区| 欧美日韩一二三四| 国产欧美在线一区| 国产精品99久久久| 天天干天天舔天天操| 欧美色xxxx| 99久久国产热无码精品免费| 亚洲欧美日韩视频一区| free性护士videos欧美| 国产精品一区二区久久久久| 欧美午夜寂寞| 国产欧美日韩小视频| 激情深爱一区二区| 亚洲精品国产91| 黑人巨大精品欧美一区二区三区 | 欧美最新精品| 粉嫩高清一区二区三区精品视频| 欧洲福利电影| 久久精品视频91| 成人黄色a**站在线观看| 欧美另类z0zx974| 色女孩综合影院| 天天操天天射天天| 欧美精品日韩www.p站| 国产精品伦一区二区| 九九九热999| 香蕉久久夜色精品| bl动漫在线观看| 一区2区3区在线看| 亚洲乱熟女一区二区| 日韩中文字幕av| 电影亚洲一区| 一本一道久久a久久精品综合 | www.丝袜精品| 糖心vlog在线免费观看| 国产精品996| 污污的视频在线免费观看| 欧美日韩国产欧美日美国产精品| 天堂中文а√在线| 国产九九精品视频| 日本久久一二三四| 成年网站免费在线观看| 国产精品免费视频一区| 国产精品久久久免费视频| 日韩国产欧美精品一区二区三区| 日本天码aⅴ片在线电影网站| 国产91色在线| 久久五月天小说| 九九九九九国产| 亚洲精品国产无套在线观| 国产精品久久久久久久免费看| 伊人伊成久久人综合网小说| 国产精品99久久久久久董美香| 日韩中文字幕一区| 日韩va亚洲va欧美va久久| 国产又粗又长又黄的视频| 欧美人与性动xxxx| 日本精品一区二区三区在线播放| 国产精品女人久久久久久| 欧美激情在线精品一区二区三区| 黄色av网址在线播放| 懂色av一区二区夜夜嗨| 久久久精品国产sm调教网站| 精品国产乱子伦一区| 英国三级经典在线观看| 日韩一区二区三区资源| 蜜臀av性久久久久蜜臀aⅴ| 18岁成人毛片| 亚洲精品一区二区三区在线观看| 小草在线视频免费播放| 日本精品一区二区三区视频| 另类调教123区 | 欧美肉大捧一进一出免费视频| 精品国产精品三级精品av网址| 国产永久免费高清在线观看| 国产日韩欧美中文| 亚洲综合色站| 熟女少妇一区二区三区| 欧美视频中文一区二区三区在线观看 | 青娱乐精品视频在线| 波多野结衣不卡视频| 精品国产成人在线影院| 国产精品美女午夜爽爽| 亚洲天堂第一区| 99久久精品国产毛片| 在线视频1卡二卡三卡| 欧美精品久久久久| 成人午夜国产| 香蕉久久久久久av成人| 色欧美片视频在线观看| www欧美xxxx| 色乱码一区二区三在线看| 成人激情视频网站|