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

從一起GC血案談到反射原理

開發(fā) 開發(fā)工具
這篇文章相對來說比較長,涉及到的知識點比較多,如果實在忍不住看下去,可以跳到最后看下我對這個問題的描述再反過來看這篇文章或許讓你有更清晰的認識。

 概述

公司之前有個大內(nèi)存系統(tǒng)(70G以上)一直使用CMS GC,不過因為該系統(tǒng)對時間很敏感,偶爾會因為gclocker導致remark特別長(雖然加了-XX:+CMSScavReengeBeforeRemark參數(shù),但是gclocker會導致remark前的YGC被delay),無法忍受這么長的暫停就只好遷移到了G1,經(jīng)過一系列的調(diào)優(yōu)之后算比較穩(wěn)定了,這套參數(shù)便推到了全部機器上

可是就在上周突然有機器出現(xiàn)了Full GC,本來G1設計出來就是希望Full GC不在出現(xiàn),出現(xiàn)Full GC一般是不正常,GC日志如下:

從上面日志不難發(fā)現(xiàn)是因為Perm觸發(fā)的Full GC,并且Full GC之后Perm就降下去了,不過需要提一下的是JDK7下正常的G1 GC是不會做類卸載的,只有Full GC的時候才會卸載,但JDK8下是提供了相關參數(shù)的可以在G1 GC某些階段做類卸載

于是要業(yè)務方先做了coredump,保存好現(xiàn)場再重啟系統(tǒng),然后再針對coredump做了heap dump,不過heapdump有40G這么大,可以通過jmap -permstat <executable java> core.xxx來看看究竟perm里有什么東西

這篇文章相對來說比較長,涉及到的知識點比較多,如果實在忍不住看下去,可以跳到最后看下我對這個問題的描述再反過來看這篇文章或許讓你有更清晰的認識

Perm里究竟塞了什么

既然是Perm滿了,那我們得看Perm里究竟放了什么,我們知道Perm里主要存的是類的原始數(shù)據(jù),比如我們加載了一個類,那這個類的信息會在Perm里分配內(nèi)存來存儲它的一些數(shù)據(jù)結(jié)構,所以大部分情況下,Perm的使用量和加載的類個數(shù)是關系很大的,當然Perm里在低版本的時候還會存一些其他的數(shù)據(jù),比如String(String.intern()的情況)。

另外經(jīng)驗告訴我們?nèi)绻娴氖荘erm溢出,那有地方動態(tài)構建一個類加載器加載一個類的可能性會很大,通過上面的jmap命令,我們可以統(tǒng)計下sun.reflect.DelegatingClassLoader的個數(shù)居然達到了415737個

那基本可以鎖定是反射類加載器導致Perm溢出的原因了,那究竟為什么會有這么多反射類加載器呢,反射類加載器又是什么,接下來先簡單說下反射的原理

反射的原理

反射大家用起來很方便,由于性能其實也比較不錯了,因此用得挺廣的,我們通常這么用反射

Method method = XXX.class.getDeclaredMethod(xx,xx);

method.invoke(target,params)

不過這里我不準備用大量的代碼來描述其原理,而是講幾個關鍵的東西,然后將他們串起來

獲取Method

要調(diào)用首先要獲取Method,而獲取Method的邏輯是通過Class這個類來的,而關鍵的幾個方法和屬性如下:

在Class里有個關鍵的屬性叫做reflectionData,這里主要存的是每次從jvm里獲取到的一些類屬性,比如方法,字段等,大概長這樣

這個屬性主要是SoftReference的,也就是在某些內(nèi)存比較苛刻的情況下是可能被回收的,不過正常情況下可以通過-XX:SoftRefLRUPolicyMSPerMB這個參數(shù)來控制回收的時機,一旦時機到了,只要GC發(fā)生就會將其回收,那回收之后意味著再有需求的時候要重新創(chuàng)建一個這樣的對象,同時也需要從JVM里重新拿一份數(shù)據(jù),那這個數(shù)據(jù)結(jié)構關聯(lián)的Method,F(xiàn)ield字段等都是重新生成的對象。如果是重新生成的對象那可能有什么麻煩?講到后面就明白了

getDeclaredMethod方法其實很簡單,就是從privateGetDeclaredMethods返回的方法列表里復制一個Method對象返回。而這個復制的過程是通過searchMethods實現(xiàn)的

如果reflectionData這個屬性的declaredMethods非空,那privateGetDeclaredMethods就直接返回其就可以了,否則就從JVM里去撈一把出來,并賦值給reflectionData的字段,這樣下次再調(diào)用privateGetDeclaredMethods時候就可以用緩存數(shù)據(jù)了,不用每次調(diào)到JVM里去獲取數(shù)據(jù),因為reflectionData是Softreference,所以存在取不到值的風險,一旦取不到就又去JVM里撈了

searchMethods將從privateGetDeclaredMethods返回的方法列表里找到一個同名的匹配的方法,然后復制一個方法對象出來,這個復制的具體實現(xiàn),其實就是Method.copy方法:

由此可見,我們每次通過調(diào)用getDeclaredMethod方法返回的Method對象其實都是一個新的對象,所以不宜多調(diào)哦,如果調(diào)用頻繁最好緩存起來。不過這個新的方法對象都有個root屬性指向reflectionData里緩存的某個方法,同時其methodAccessor也是用的緩存里的那個Method的methodAccessor。

Method調(diào)用

有了Method之后,那就可以調(diào)用其invoke方法了,那先看看Method的幾個關鍵信息

root屬性其實上面已經(jīng)說了,主要指向緩存里的Method對象,也就是當前這個Method對象其實是根據(jù)root這個Method構建出來的,因此存在一個root Method派生出多個Method的情況。

methodAccessor這個很關鍵了,其實Method.invoke方法就是調(diào)用methodAccessor的invoke方法,methodAccessor這個屬性如果root本身已經(jīng)有了,那就直接用root的methodAccessor賦值過來,否則的話就創(chuàng)建一個

MethodAccessor的實現(xiàn)

MethodAccessor本身就是一個接口

其主要有三種實現(xiàn)

  • DelegatingMethodAccessorImpl
  • NativeMethodAccessorImpl
  • GeneratedMethodAccessorXXX

其中DelegatingMethodAccessorImpl是最終注入給Method的methodAccessor的,也就是某個Method的所有的invoke方法都會調(diào)用到這個DelegatingMethodAccessorImpl.invoke,正如其名一樣的,是做代理的,也就是真正的實現(xiàn)可以是下面的兩種

如果是NativeMethodAccessorImpl,那顧名思義,該實現(xiàn)主要是native實現(xiàn)的,而GeneratedMethodAccessorXXX是為每個需要反射調(diào)用的Method動態(tài)生成的類,后的XXX是一個數(shù)字,不斷遞增的

并且所有的方法反射都是先走NativeMethodAccessorImpl,默認調(diào)了15次之后,才生成一個GeneratedMethodAccessorXXX類,生成好之后就會走這個生成的類的invoke方法了

那如何從NativeMethodAccessorImpl過度到GeneratedMethodAccessorXXX呢,來看看NativeMethodAccessorImpl的invoke方法

其中我上面說的是15次就是Reflection Factory. inflation Threshold()這個方法返回的,這個15當然也不是一塵不變的,我們可以通過-Dsun.reflect.inflationThreshold=xxx來指定,我們還可以通過-Dsun.reflect.noInflation=true來直接繞過上面的15次Native Method AccessorImpl調(diào)用,和-Dsun.reflect.inflationThreshold=0的效果一樣的

而Generated Method AccessorXXX都是通過new MethodAccessorGenerator().generateMethod來生成的,一旦創(chuàng)建好之后就設置到Delegating Method AccessorImpl里去了,這樣下次Method.invoke就會調(diào)到這個新創(chuàng)建的Method Accessor里了。

那生成的GeneratedMethodAccessorXXX究竟長什么樣呢,大概這樣了

其實就是直接調(diào)用目標對象的具體方法了,和正常的方法調(diào)用沒什么區(qū)別

GeneratedMethodAccessorXXX的類加載器

那加載GeneratedMethodAccessorXXX的類加載器是什么呢,在生成好了字節(jié)碼之后會調(diào)用下面的方法做類定義

所以GeneratedMethodAccessorXXX的類加載器其實是一個DelegatingClassLoader類加載器

之所以搞一個新的類加載器,是為了性能考慮,在某些情況下可以卸載這些生成的類,因為類的卸載是只有在類加載器可以被回收的情況下才會被回收的,如果用了原來的類加載器,那可能導致這些新創(chuàng)建的類一直無法被卸載,從其設計來看本身就不希望他們一直存在內(nèi)存里的,在需要的時候有就行了,在內(nèi)存緊俏的時候可以釋放掉內(nèi)存

并發(fā)導致垃圾類創(chuàng)建

看到這里不知道大家是否發(fā)現(xiàn)了一個問題,上面的NativeMethodAccessorImpl.invoke其實都是不加鎖的,那意味著什么?如果并發(fā)很高的時候,是不是意味著可能同時有很多線程進入到創(chuàng)建GeneratedMethodAccessorXXX類的邏輯里,雖然說最終使用的其實只會有一個,但是這些開銷是不是已然存在了,假如有1000個線程都進入到創(chuàng)建GeneratedMethodAccessorXXX的邏輯里,那意味著多創(chuàng)建了999個無用的類,這些類會一直占著內(nèi)存,直到能回收Perm的GC發(fā)生才會回收

那究竟是什么方法在不斷反射呢

有了上面對反射原理的了解之后,我們知道了在反射執(zhí)行到一定次數(shù)之后,其實會動態(tài)構建一個類,在這個類里會直接調(diào)用目標對象的對應的方法,我們從heap dump里看到了有大量的DelegatingClassLoader類加載器加載了GeneratedMethodAccessorXXX類,那這些類到底是調(diào)用了什么方法呢,于是我們不得不做一件事,那就是將內(nèi)存里的這些類都dump下來,然后對字節(jié)碼做一個統(tǒng)計分析一下

運行時Dump類字節(jié)碼

我們可以利用SA的接口從coredump里或者live進程里將對應的類dump下來,為了dump下來我們特定的類,首先我們寫一個Filter類

使用SA的jar($JAVA_HOME/lib/sa-jdi.jar)編譯好類之后,然后我們在編譯好的類目錄下調(diào)用下面的命令進行dump

這樣我們就可以將所有的GeneratedMethodAccessor給dump下來了,這個時候我們再通過javap -verbose GeneratedMethodAccessor9隨便看一個類的字節(jié)碼

看到上面關鍵的bci為36的那行,這里的方法便是我們反射調(diào)用的方法了,比如上面的那個反射調(diào)用的方法就是org/codehaus/xfire/util/ParamReader.readCode

定位到具體的反射類及方法

dump出這些字節(jié)碼之后,我們對這些所有的類的字節(jié)碼做一個統(tǒng)計,就找出了所有的反射調(diào)用方法,然后發(fā)現(xiàn)某些model類(package都是相同的)居然產(chǎn)生了20多萬個類,這意味著有非常多的這些model類做反射

有了這個線索之后就去看代碼究竟哪里會有調(diào)用這些model方法的反射邏輯,但是可惜沒有找到,但是這種model對象極有可能在某種情況下出現(xiàn),那就是rpc反序列化的時候,最終詢問業(yè)務方是使用的Xfire的服務,而憑借我多年框架開發(fā)積累的經(jīng)驗,確定Xfire就是通過反射的方式來反序列化對象的,具體代碼如下(org.codehaus.xfire.aegis.type.basic.BeanType.writeProperty):

 

而javabean的PropertyDescriptor里的get/set方法,其實本身就是SoftReference包裝的

看到這里或許大家都明白了吧,前面也已經(jīng)說了SoftReference是可能被GC回收掉的,時間一到在下次GC里就會被回收,如果被回收了,那就要重新獲取,然后相當于是調(diào)用的新的Method對象的invoke方法,那調(diào)用次數(shù)一多,就會產(chǎn)生新的動態(tài)構建的類,而這份類會一直存到直到可以回收Perm的GC。

G1回收Perm

注意下業(yè)務系統(tǒng)使用的是JDK7的G1,而JDK7的G1對perm其實正常情況下是不會回收的,只有在Full GC的時候才會回收Perm,這就解釋了經(jīng)過了多次G1 GC之后,那些Softreference的對象會被回收,但是新產(chǎn)生的類其實并不會被回收,所以G1 GC越頻繁,那意味著SoftReference的對象越容易被回收(雖然正常情況下是時間到了,但是如果gc不頻繁,即使時間到了,也會留在內(nèi)存里的),越容易被回收那就越容易產(chǎn)生新的類,直到Full GC發(fā)生。

解決方案

  • 升級到jdk8,可以在G1 GC過程中對類做卸載
  • 換一個序列化協(xié)議,不走方法反射的,比如hessian
  • 調(diào)整SoftRefLRUPolicyMSPerMB這個參數(shù)變大,不過這個不能治本

總結(jié)

上面涉及的內(nèi)容非常多,如果不多讀幾遍可能難以串起來,我這里將這個問題發(fā)生的情況大致描述一下:

這個系統(tǒng)在JDK7下使用G1,而這個版本的G1只有在Full GC的時候才會對Perm里的類做卸載,該系統(tǒng)因為大量的請求導致G1 GC發(fā)生很頻繁,同時該系統(tǒng)還設置了-XX:SoftRefLRUPolicyMSPerMB=0,那意味著SoftReference的生命周期不會跨GC周期,能很快被回收掉,這個系統(tǒng)存在大量的RPC調(diào)用,走的Xfire協(xié)議,對返回結(jié)果做反序列化的時候是走的Method.invoke的邏輯,而相關的method因此被SoftReference引用,因此很容易被回收,一旦被回收,那就創(chuàng)建一個新的Method對象,再調(diào)用其invoke方法,在調(diào)用到一定次數(shù)(15次)之后,就構建一個新的字節(jié)碼類,伴隨著GC的進行,同一個方法的字節(jié)碼類不斷構建,直到將Perm充滿觸發(fā)一次Full GC才得以釋放。

【本文是51CTO專欄作者李嘉鵬的原創(chuàng)文章,轉(zhuǎn)載請通過微信公眾號(你假笨,id:lovestblog)聯(lián)系作者本人獲取授權】

 

戳這里,看該作者更多好文

責任編輯:武曉燕 來源: 你假笨
相關推薦

2019-09-09 08:30:57

MYSQL代碼數(shù)據(jù)庫

2023-08-14 08:38:26

反射reflect結(jié)構體

2025-06-18 08:00:56

2023-06-20 06:44:14

Node.jsCPU 負載

2025-04-11 00:05:49

RPC底層分布式

2025-01-07 09:07:36

接口屬性路徑

2022-06-15 08:00:50

磁盤RedisRocketMQ

2022-11-29 16:35:02

Tetris鴻蒙

2022-12-02 14:20:09

Tetris鴻蒙

2023-11-07 08:13:53

分布式網(wǎng)絡

2014-10-21 15:07:04

2023-03-30 09:32:27

2022-11-14 17:01:34

游戲開發(fā)畫布功能

2022-03-31 18:59:43

數(shù)據(jù)庫InnoDBMySQL

2023-06-30 08:18:51

敏捷開發(fā)模式

2024-02-28 12:12:20

Pipeline數(shù)據(jù)機制

2023-08-10 08:28:46

網(wǎng)絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2022-10-18 07:33:57

Maven構建工具
點贊
收藏

51CTO技術棧公眾號

亚洲成人激情在线| 中文字幕一区二区三区在线不卡 | 亚洲精品在线视频| 欧美交换配乱吟粗大25p| 天堂а√在线中文在线新版| 亚洲图色一区二区三区| 亚洲午夜在线视频| 国产一区二区三区色淫影院| 91视频免费在线看| 日韩超碰人人爽人人做人人添| 夜夜精品浪潮av一区二区三区| 亚洲一区二区在线| 国产67194| 亚洲美女久久| 日韩精品专区在线影院观看| 国产在线视频综合| 国内精品一区视频| 国产在线观看免费一区| 7777精品视频| 小泽玛利亚一区二区免费| 性人久久久久| 日韩精品专区在线影院重磅| 欧美深夜福利视频| 亚洲色图 校园春色| 蜜臀av一区二区在线免费观看| 深夜精品寂寞黄网站在线观看| 日日干夜夜操s8| 黄色羞羞视频在线观看| 国产精品久久久久久久久晋中 | 国产91综合一区在线观看| 欧美一级片一区| 色在线观看视频| 欧美亚洲高清| 亚洲女人天堂成人av在线| 少妇高潮一69aⅹ| 四虎永久精品在线| 欧美综合久久久| 久久精品.com| 麻豆免费版在线观看| 亚洲精品美国一| 中国成人在线视频| 开心激情综合网| 国产美女精品人人做人人爽| 国产精品美女网站| 天天操天天干天天摸| 午夜在线视频观看日韩17c| 在线看日韩av| 国产123在线| 精品在线99| 亚洲欧美精品一区二区| 福利视频999| 欧美成人免费全部网站| 欧美三区在线视频| 亚洲色成人www永久在线观看| 视频一区二区三区在线看免费看| 日韩专区在线视频| 日本精品视频在线| 天码人妻一区二区三区在线看| 色综合天天爱| 日韩在线视频免费观看| 99自拍偷拍视频| 999国产精品| 日韩精品中文在线观看| 99re久久精品国产| 亚洲精品合集| 亚洲一区二区福利| jizzjizz日本少妇| 99视频精品全国免费| 亚洲美女又黄又爽在线观看| 亚洲精品成人无码熟妇在线| 天堂俺去俺来也www久久婷婷| 欧美精品视频www在线观看| 亚洲免费av一区| 日本高清精品| 亚洲国产成人av在线| 亚洲欧美一区二区三区不卡| 免费观看性欧美大片无片| 欧美不卡在线视频| 亚洲自拍第三页| 亚洲国产尤物| 欧美一区二区三区免费大片| 色诱av手机版| 久久wwww| 日韩精品在线视频| 国产免费嫩草影院| 在线日韩中文| 国产成人综合一区二区三区| 国产精品羞羞答答在线| av成人免费在线| 日本精品一区二区三区不卡无字幕| 日日躁夜夜躁白天躁晚上躁91| 国产一区二区三区不卡在线观看| 国产精品欧美亚洲777777| 国产麻豆免费观看| heyzo一本久久综合| 日韩欧美一区二区三区四区五区| 国产在线一二三| 日韩毛片精品高清免费| 欧美午夜小视频| 国产福利91精品一区二区| 日韩精品一区国产麻豆| 女女互磨互喷水高潮les呻吟| 免费视频亚洲| 欧美精品在线播放| 国产成人无码专区| 成人免费视频网站在线观看| 日韩一本精品| av在线资源| 7777精品伊人久久久大香线蕉 | 欧美色图亚洲天堂| 亚洲欧美大片| 亚洲精品欧美日韩专区| 狠狠狠综合7777久夜色撩人| 一级精品视频在线观看宜春院| 一本大道东京热无码aⅴ| 免费观看亚洲| 精品盗摄一区二区三区| fc2ppv在线播放| 久久久精品网| 国产精品一区二区三区在线| 国产不卡在线| 欧美在线视频日韩| a视频免费观看| 欧美日本精品| 国产精品第七十二页| 午夜性色福利视频| 亚洲一区在线观看视频| 僵尸世界大战2 在线播放| 北岛玲精品视频在线观看| 亚洲最大在线视频| 国产成人无码精品亚洲| 国产成人综合精品三级| 久久久久久国产精品免费免费| 成a人片在线观看www视频| 天涯成人国产亚洲精品一区av| 欧美日韩在线免费播放| 日本精品影院| 亚州国产精品久久久| 性中国古装videossex| 亚洲免费色视频| 人人妻人人添人人爽欧美一区| 桃花岛tv亚洲品质| 日韩精品在线私人| 天天操天天操天天操天天| caoporm超碰国产精品| 亚洲国产婷婷香蕉久久久久久99 | 偷拍一区二区| 色偷偷av一区二区三区| 中文字幕理论片| 国产偷国产偷亚洲高清人白洁| 九一免费在线观看| 欧美不卡在线观看| 久久99视频免费| 精品人妻一区二区三区换脸明星 | 久久精品盗摄| 欧美日韩一区二区视频在线| 九七久久人人| 欧美一区二区免费| 精品一级少妇久久久久久久| 免费xxxx性欧美18vr| 精品视频一区在线| 国产人成网在线播放va免费| 欧美精品久久久久久久久老牛影院| 久久精品国产亚洲av麻豆| 鲁大师影院一区二区三区| 日产中文字幕在线精品一区 | 欧美在线一区二区三区四| 97人妻精品一区二区三区视频| 91麻豆文化传媒在线观看| 黄色免费观看视频网站| 极品美女一区二区三区| 国产女人精品视频| av中文字幕在线观看| 精品国产乱码久久久久久牛牛| 国产性生活大片| 国产a精品视频| 亚洲精品偷拍视频| 国产一区二区三区不卡av| www国产精品com| 亚洲第一大网站| 色综合欧美在线| 色偷偷www8888| 丁香天五香天堂综合| 超碰超碰超碰超碰超碰| 久久久久97| 午夜精品一区二区三区在线 | 精品亚洲一区二区三区| japanese国产在线观看| 曰韩精品一区二区| 欧美熟妇一区二区| 日韩精品一区第一页| 国产成人精品免费看在线播放| 在线日韩三级| 97av在线影院| 成人在线播放免费观看| 国产网站欧美日韩免费精品在线观看 | 91麻豆精品国产91久久久久推荐资源| www.日韩.com| 天堂а√在线8种子蜜桃视频| 午夜视频在线观看一区| 阿v天堂2014| 成人免费看视频| 黄色片视频在线| 99日韩精品| 免费看成人片| 欧美午夜网站| 国产精品视频精品| 欧美亚洲日本精品| 欧美成人一区二区三区电影| 国产高清视频在线| 亚洲国产另类久久精品| 一级片中文字幕| 亚洲免费观看视频| 久久无码专区国产精品s| 丝瓜av网站精品一区二区| 秋霞在线观看一区二区三区| 亚洲综合影院| 欧美性一区二区三区| 午夜小视频福利在线观看| 亚洲国产精品国自产拍av秋霞| 久久久久99精品成人片三人毛片| 国产视频一区不卡| 亚洲精品中文字幕在线播放| 国产成人午夜视频| 亚洲天堂网一区| 久久久久久穴| 欧美日韩一区二区三区电影| 成人亚洲一区二区| 欧美一区少妇| 亚洲品质自拍| 久久草.com| 精品综合久久88少妇激情| 国产精品99久久久久久白浆小说| 男人天堂久久久| 日韩精品视频三区| 韩国av电影在线观看| 日韩三级免费观看| 国产美女永久免费| 69成人精品免费视频| 亚洲综合精品国产一区二区三区 | 日韩福利片在线观看| 亚洲激情男女视频| 小泽玛利亚一区二区免费| 日韩一区日韩二区| 美女福利视频网| 国产精品久久久久久久裸模 | 国产香蕉精品| 国产欧美亚洲日本| 国产精品chinese在线观看| 国产高清一区视频| 国产成人精选| 成人在线视频网站| 91精品国产自产观看在线| 成人亚洲激情网| 日韩欧美高清一区二区三区| 99一区二区三区| 美女网站色精品尤物极品姐弟| 国产自产女人91一区在线观看| 美女高潮在线观看| 91福利视频网| 欧美hdxxx| 97avcom| 成人国产精选| 91九色综合久久| 色妞ww精品视频7777| 国产欧美日韩在线播放| 亚洲三级性片| 亚洲在线色站| 欧美日韩午夜| 国产免费毛卡片| 日本aⅴ亚洲精品中文乱码| 国产婷婷一区二区三区| 亚洲欧美成人综合| 色婷婷狠狠18| 懂色av噜噜一区二区三区av| 久久久久麻豆v国产精华液好用吗| 成人在线视频一区| 色婷婷av777| 国产精品久久久久一区二区三区共| 在哪里可以看毛片| 自拍av一区二区三区| 日韩av在线电影| 欧美在线一区二区三区| www.av网站| 亚洲女人天堂色在线7777| 超碰在线无需免费| 欧美最猛性xxxx| 999精品视频在线观看| 国产伦精品一区二区三区照片| caoporn成人| 亚洲一区二区三区777| 成人资源在线| 亚洲一区三区视频在线观看| 悠悠资源网久久精品| 国内自拍视频网| 成人午夜精品一区二区三区| 极品久久久久久久| 亚洲成人资源在线| 国产又黄又粗又猛又爽| 亚洲激情视频在线播放| 午夜在线观看视频| 久久人人爽国产| 欧美国产日韩电影| 国产在线不卡精品| 网红女主播少妇精品视频| 麻豆91蜜桃| 欧美深夜福利| 色戒在线免费观看| 菠萝蜜视频在线观看一区| 波多野结衣喷潮| 色老综合老女人久久久| 高潮毛片7777777毛片| 色偷偷88888欧美精品久久久| 精品孕妇一区二区三区| 热99在线视频| 精品福利一区| 国产美女作爱全过程免费视频| 9国产精品视频| 日本中文字幕有码| 国产精品欧美精品| 久久久精品91| 欧美精品123区| 337p日本欧洲亚洲大胆鲁鲁| 欧美一级片在线播放| 老司机精品在线| 人妻av无码专区| 国产一区二区三区av电影| 奇米网一区二区| 欧美亚洲国产一区二区三区| 男人天堂综合| 91产国在线观看动作片喷水| 国产成人一二片| 日本男女交配视频| 国产精品18久久久久| 国产高潮流白浆| 狠狠躁夜夜躁人人躁婷婷91| 亚洲男人第一天堂| 欧美日本亚洲视频| 一区二区三区四区高清视频| 影音先锋成人资源网站| 国产最新精品免费| www.5588.com毛片| 3751色影院一区二区三区| 精品欧美色视频网站在线观看| 55夜色66夜色国产精品视频| 欧美亚洲综合视频| 亚洲欧洲国产日韩精品| 免费国产亚洲视频| 久久久久人妻一区精品色| 欧美美女直播网站| 成人日韩欧美| 99视频在线| 国产日韩一区二区三区在线| 亚洲观看黄色网| 日韩欧美中文在线| 国产高清视频在线播放| 成人黄色短视频在线观看| 中文字幕一区二区精品区| 性猛交╳xxx乱大交| 五月天久久比比资源色| 男人的天堂在线| 国产精品免费网站| 91精品高清| 69亚洲乱人伦| 日韩欧美精品免费在线| 丰满熟女一区二区三区| 国内精品国产三级国产在线专| 97久久精品一区二区三区的观看方式| 欧美专区一二三| 久久66热re国产| 欧美成人精品激情在线视频| 亚洲国产成人在线播放| 欧美理论影院| 色呦呦网站入口| 99久免费精品视频在线观看| 波多野结衣高清视频| 日韩成人中文电影| 91天天综合| 日本一本中文字幕| 久久免费午夜影院| 国产乱国产乱老熟| 日韩在线视频网站| 久久久久久久久久久久久久久久久久久久| 久久久久久av无码免费网站下载| 国内精品国产三级国产a久久| 亚洲天堂精品一区| 亚洲第一偷拍网| 国产福利亚洲| 中文字幕99| av电影一区二区| 国产精品久久久久久69| 久久精品久久久久久| 亚洲日本在线观看视频| 日韩国产在线一区| 国产不卡在线一区| 成人av网站在线播放| 欧美激情综合色综合啪啪五月| 97久久精品| 中文字幕天天干| 午夜电影一区二区三区|