黄a在线观看-黄a在线-黄a大片-黄色片在线看-黄色毛片免费-黄色大片网站

您的位置:首頁技術文章
文章詳情頁

全面解析Android之ANR日志

瀏覽:138日期:2022-09-18 08:01:40
目錄一、概述二、ANR產生機制2.1 輸入事件超時(5s)2.2 廣播類型超時(前臺15s,后臺60s)2.3 服務超時(前臺20s,后臺200s)2.4 ContentProvider 類型三、導致ANR的原因3.1 應用層導致ANR(耗時操作)3.2 系統導致ANR四、分析日志4.1 CPU 負載4.2 內存信息4.3 堆棧消息五、典型案例分析5.1 主線程無卡頓,處于正常狀態堆棧5.2 主線程執行耗時操作5.3 主線程被鎖阻塞5.4 CPU被搶占5.5內存緊張導致ANR5.6 系統服務超時導致ANR一、概述

解決ANR一直是Android 開發者需要掌握的重要技巧,一般從三個方面著手。

開發階段:通過工具檢查各個方法的耗時,卡頓情況,發現一處修改一處。 線上階段:這個階段主要依靠監控工具發現ANR并上報,比如matrix。 分析階段:如果線上用戶發生ANR,并且你獲取了一份日志,這就涉及了本文要分享的內容——ANR日志分析技巧。二、ANR產生機制

網上通俗的一段面試答題

ANR——應用無響應,Activity是5秒,BroadCastReceiver是10秒,Service是20秒。

這句話說的很籠統,要想深入分析定位ANR,需要知道更多知識點,一般來說,ANR按產生機制,分為4類:

2.1 輸入事件超時(5s)

InputEvent Timeout

a.InputDispatcher發送key事件給 對應的進程的 Focused Window ,對應的window不存在、處于暫停態、或通道(input channel)占滿、通道未注冊、通道異常、或5s內沒有處理完一個事件,就會發生ANR

b.InputDispatcher發送MotionEvent事件有個例外之處:當對應Touched Window的 input waitQueue中有超過0.5s的事件,inputDispatcher會暫停該事件,并等待5s,如果仍舊沒有收到window的‘finish’事件,則觸發ANR

c.下一個事件到達,發現有一個超時事件才會觸發ANR

2.2 廣播類型超時(前臺15s,后臺60s)

BroadcastReceiver Timeout

a.靜態注冊的廣播和有序廣播會ANR,動態注冊的非有序廣播并不會ANR

b.廣播發送時,會判斷該進程是否存在,不存在則創建,創建進程的耗時也算在超時時間里

c.只有當進程存在前臺顯示的Activity才會彈出ANR對話框,否則會直接殺掉當前進程

d.當onReceive執行超過閾值(前臺15s,后臺60s),將產生ANR

e.如何發送前臺廣播:Intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)

2.3 服務超時(前臺20s,后臺200s)

Service Timeout

a.Service的以下方法都會觸發ANR:onCreate(),onStartCommand(), onStart(), onBind(), onRebind(), onTaskRemoved(), onUnbind(),

onDestroy().

b.前臺Service超時時間為20s,后臺Service超時時間為200s

c.如何區分前臺、后臺執行————當前APP處于用戶態,此時執行的Service則為前臺執行。

d.用戶態:有前臺activity、有前臺廣播在執行、有foreground service執行

2.4 ContentProvider 類型

a.ContentProvider創建發布超時并不會ANR

b.使用ContentProviderclient來訪問ContentProverder可以自主選擇觸發ANR,超時時間自己定

client.setDetectNotResponding(PROVIDER_ANR_TIMEOUT);

ps:Activity生命周期超時會不會ANR?——經測試并不會。

override fun onCreate(savedInstanceState: Bundle?) { Thread.sleep(60000) super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)}三、導致ANR的原因

很多開發者認為,那就是耗時操作導致ANR,全部是app應用層的問題。實際上,線上環境大部分ANR由系統原因導致。

3.1 應用層導致ANR(耗時操作)

a. 函數阻塞:如死循環、主線程IO、處理大數據

b. 鎖出錯:主線程等待子線程的鎖

c. 內存緊張:系統分配給一個應用的內存是有上限的,長期處于內存緊張,會導致頻繁內存交換,進而導致應用的一些操作超時

3.2 系統導致ANR

a. CPU被搶占:一般來說,前臺在玩游戲,可能會導致你的后臺廣播被搶占CPU

b. 系統服務無法及時響應:比如獲取系統聯系人等,系統的服務都是Binder機制,服務能力也是有限的,有可能系統服務長時間不響應導致ANR

c. 其他應用占用的大量內存

四、分析日志

發生ANR的時候,系統會產生一份anr日志文件(手機的/data/anr 目錄下,文件名稱可能各廠商不一樣,業內大多稱呼為trace文件),內含如下幾項重要信息。

4.1 CPU 負載

Load: 2.62 / 2.55 / 2.25

CPU usage from 0ms to 1987ms later (2020-03-10 08:31:55.169 to 2020-03-10 08:32:17.156):

  41% 2080/system_server: 28% user + 12% kernel / faults: 76445 minor 180 major

  26% 9378/com.xiaomi.store: 20% user + 6.8% kernel / faults: 68408 minor 68 major

........省略N行.....

66% TOTAL: 20% user + 15% kernel + 28% iowait + 0.7% irq + 0.7% softirq

如上所示:

第一行:1、5、15 分鐘內正在使用和等待使用CPU 的活動進程的平均數 第二行:表明負載信息抓取在ANR發生之后的0~1987ms。同時也指明了ANR的時間點:2020-03-10 08:31:55.169 中間部分:各個進程占用的CPU的詳細情況 最后一行:各個進程合計占用的CPU信息。

名詞解釋:

a. user:用戶態,kernel:內核態

b. faults:內存缺頁,minor——輕微的,major——重度,需要從磁盤拿數據

c. iowait:IO使用(等待)占比

d. irq:硬中斷,softirq:軟中斷

注意:

iowait占比很高,意味著有很大可能,是io耗時導致ANR,具體進一步查看有沒有進程faults major比較多。 單進程CPU的負載并不是以100%為上限,而是有幾個核,就有百分之幾百,如4核上限為400%。4.2 內存信息

Total number of allocations 476778進程創建到現在一共創建了多少對象

Total bytes allocated 52MB 進程創建到現在一共申請了多少內存

Total bytes freed 52MB 進程創建到現在一共釋放了多少內存

Free memory 777KB  不擴展堆的情況下可用的內存

Free memory until GC 777KBGC前的可用內存

Free memory until OOME 383MBOOM之前的可用內存

Total memory 當前總內存(已用+可用)

Max memory 384MB  進程最多能申請的內存

從含義可以得出結論:**Free memory until OOME**的值很小的時候,已經處于內存緊張狀態。應用可能是占用了過多內存。

另外,除了trace文件中有內存信息,普通的eventlog日志中,也有內存信息(不一定打印)

04-02 22:00:08.195  1531  1544 I am_meminfo: [350937088,41086976,492830720,427937792,291887104]

以上四個值分別指的是:

Cached Free, Zram, Kernel,Native

Cached+Free的內存代表著當前整個手機的可用內存,如果值很小,意味著處于內存緊張狀態。一般低內存的判定閾值為:4G 內存手機以下閥值:350MB,以上閥值則為:450MB

ps:如果ANR時間點前后,日志里有打印onTrimMemory,也可以作為內存緊張的一個參考判斷

4.3 堆棧消息

堆棧信息是最重要的一個信息,展示了ANR發生的進程當前所有線程的狀態。

suspend all histogram:  Sum: 2.834s 99% C.I. 5.738us-7145.919us Avg: 607.155us Max: 41543us

DALVIK THREADS (248):

'main' prio=5 tid=1 Native

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x74b17080 self=0x7bb7a14c00

  | sysTid=2080 nice=-2 cgrp=default sched=0/0 handle=0x7c3e82b548

  | state=S schedstat=( 757205342094 583547320723 2145008 ) utm=52002 stm=23718 core=5 HZ=100

  | stack=0x7fdc995000-0x7fdc997000 stackSize=8MB

  | held mutexes=

  kernel: __switch_to+0xb0/0xbc

  kernel: SyS_epoll_wait+0x288/0x364

  kernel: SyS_epoll_pwait+0xb0/0x124

  kernel: cpu_switch_to+0x38c/0x2258

  native: #00 pc 000000000007cd8c  /system/lib64/libc.so (__epoll_pwait+8)

  native: #01 pc 0000000000014d48  /system/lib64/libutils.so (android::Looper::pollInner(int)+148)

  native: #02 pc 0000000000014c18  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)

  native: #03 pc 0000000000127474  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)

  at android.os.MessageQueue.nativePollOnce(Native method)

  at android.os.MessageQueue.next(MessageQueue.java:330)

  at android.os.Looper.loop(Looper.java:169)

  at com.android.server.SystemServer.run(SystemServer.java:508)

  at com.android.server.SystemServer.main(SystemServer.java:340)

  at java.lang.reflect.Method.invoke(Native method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)

  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:856)

  ........省略N行.....

  'OkHttp ConnectionPool' daemon prio=5 tid=251 TimedWaiting

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x13daea90 self=0x7bad32b400

  | sysTid=29998 nice=0 cgrp=default sched=0/0 handle=0x7b7d2614f0

  | state=S schedstat=( 951407 137448 11 ) utm=0 stm=0 core=3 HZ=100

  | stack=0x7b7d15e000-0x7b7d160000 stackSize=1041KB

  | held mutexes=

  at java.lang.Object.wait(Native method)

  - waiting on <0x05e5732e> (a com.android.okhttp.ConnectionPool)

  at com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:103)

  - locked <0x05e5732e> (a com.android.okhttp.ConnectionPool)

  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)

  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)

  at java.lang.Thread.run(Thread.java:764)

如上日志所示,本文截圖了兩個線程信息,一個是主線程main,它的狀態是native。

另一個是OkHttp ConnectionPool,它的狀態是TimeWaiting。眾所周知,教科書上說線程狀態有5種:新建、就緒、執行、阻塞、死亡。而Java中的線程狀態有6種,6種狀態都定義在:java.lang.Thread.State中

全面解析Android之ANR日志

問題來了,上述main線程的native是什么狀態,哪來的?其實trace文件中的狀態是是CPP代碼中定義的狀態,下面是一張對應關系表。

全面解析Android之ANR日志

由此可知,main函數的native狀態是正在執行JNI函數。堆棧信息是我們分析ANR的第一個重要的信息,一般來說:

main線程處于 BLOCK、WAITING、TIMEWAITING狀態,那基本上是函數阻塞導致ANR;

如果main線程無異常,則應該排查CPU負載和內存環境。

五、典型案例分析5.1 主線程無卡頓,處于正常狀態堆棧

'main' prio=5 tid=1 Native

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x74b38080 self=0x7ad9014c00

  | sysTid=23081 nice=0 cgrp=default sched=0/0 handle=0x7b5fdc5548

  | state=S schedstat=( 284838633 166738594 505 ) utm=21 stm=7 core=1 HZ=100

  | stack=0x7fc95da000-0x7fc95dc000 stackSize=8MB

  | held mutexes=

  kernel: __switch_to+0xb0/0xbc

  kernel: SyS_epoll_wait+0x288/0x364

  kernel: SyS_epoll_pwait+0xb0/0x124

  kernel: cpu_switch_to+0x38c/0x2258

  native: #00 pc 000000000007cd8c  /system/lib64/libc.so (__epoll_pwait+8)

  native: #01 pc 0000000000014d48  /system/lib64/libutils.so (android::Looper::pollInner(int)+148)

  native: #02 pc 0000000000014c18  /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+60)

  native: #03 pc 00000000001275f4  /system/lib64/libandroid_runtime.so (android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)+44)

  at android.os.MessageQueue.nativePollOnce(Native method)

  at android.os.MessageQueue.next(MessageQueue.java:330)

  at android.os.Looper.loop(Looper.java:169)

  at android.app.ActivityThread.main(ActivityThread.java:7073)

  at java.lang.reflect.Method.invoke(Native method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:536)

  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:876)

上述主線程堆棧就是一個很正常的空閑堆棧,表明主線程正在等待新的消息。

如果ANR日志里主線程是這樣一個狀態,那可能有兩個原因:

該ANR是CPU搶占或內存緊張等其他因素引起 這份ANR日志抓取的時候,主線程已經恢復正常

遇到這種空閑堆棧,可以按照第3節的方法去分析CPU、內存的情況。其次可以關注抓取日志的時間和ANR發生的時間是否相隔過久,時間過久這個堆棧就沒有分析意義了。

5.2 主線程執行耗時操作

'main' prio=5 tid=1 Runnable

  | group='main' sCount=0 dsCount=0 flags=0 obj=0x72deb848 self=0x7748c10800

  | sysTid=8968 nice=-10 cgrp=default sched=0/0 handle=0x77cfa75ed0

  | state=R schedstat=( 24783612979 48520902 756 ) utm=2473 stm=5 core=5 HZ=100

  | stack=0x7fce68b000-0x7fce68d000 stackSize=8192KB

  | held mutexes= 'mutator lock'(shared held)

  at com.example.test.MainActivity$onCreate$2.onClick(MainActivity.kt:20)——關鍵行!!!

  at android.view.View.performClick(View.java:7187)

  at android.view.View.performClickInternal(View.java:7164)

  at android.view.View.access$3500(View.java:813)

  at android.view.View$PerformClick.run(View.java:27640)

  at android.os.Handler.handleCallback(Handler.java:883)

  at android.os.Handler.dispatchMessage(Handler.java:100)

  at android.os.Looper.loop(Looper.java:230)

  at android.app.ActivityThread.main(ActivityThread.java:7725)

  at java.lang.reflect.Method.invoke(Native method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:526)

  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)

上述日志表明,主線程正處于執行狀態,看堆棧信息可知不是處于空閑狀態,發生ANR是因為一處click監聽函數里執行了耗時操作。

5.3 主線程被鎖阻塞

'main' prio=5 tid=1 Blocked

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x72deb848 self=0x7748c10800

  | sysTid=22838 nice=-10 cgrp=default sched=0/0 handle=0x77cfa75ed0

  | state=S schedstat=( 390366023 28399376 279 ) utm=34 stm=5 core=1 HZ=100

  | stack=0x7fce68b000-0x7fce68d000 stackSize=8192KB

  | held mutexes=

  at com.example.test.MainActivity$onCreate$1.onClick(MainActivity.kt:15)

  - waiting to lock <0x01aed1da> (a java.lang.Object) held by thread 3 ——————關鍵行!!!

  at android.view.View.performClick(View.java:7187)

  at android.view.View.performClickInternal(View.java:7164)

  at android.view.View.access$3500(View.java:813)

  at android.view.View$PerformClick.run(View.java:27640)

  at android.os.Handler.handleCallback(Handler.java:883)

  at android.os.Handler.dispatchMessage(Handler.java:100)

  at android.os.Looper.loop(Looper.java:230)

  at android.app.ActivityThread.main(ActivityThread.java:7725)

  at java.lang.reflect.Method.invoke(Native method)

  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:526)

  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1034)

  ........省略N行.....

  'WQW TEST' prio=5 tid=3 TimeWating

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x12c44230 self=0x772f0ec000

  | sysTid=22938 nice=0 cgrp=default sched=0/0 handle=0x77391fbd50

  | state=S schedstat=( 274896 0 1 ) utm=0 stm=0 core=1 HZ=100

  | stack=0x77390f9000-0x77390fb000 stackSize=1039KB

  | held mutexes=

  at java.lang.Thread.sleep(Native method)

  - sleeping on <0x043831a6> (a java.lang.Object)

  at java.lang.Thread.sleep(Thread.java:440)

  - locked <0x043831a6> (a java.lang.Object)

  at java.lang.Thread.sleep(Thread.java:356)

  at com.example.test.MainActivity$onCreate$2$thread$1.run(MainActivity.kt:22)

  - locked <0x01aed1da> (a java.lang.Object)————————————————————關鍵行!!!

  at java.lang.Thread.run(Thread.java:919)

這是一個典型的主線程被鎖阻塞的例子;

waiting to lock <0x01aed1da> (a java.lang.Object) held by thread 3

其中等待的鎖是<0x01aed1da>,這個鎖的持有者是線程 3。進一步搜索 “tid=3” 找到線程3, 發現它正在TimeWating。

那么ANR的原因找到了:線程3持有了一把鎖,并且自身長時間不釋放,主線程等待這把鎖發生超時。在線上環境中,常見因鎖而ANR的場景是SharePreference寫入。

5.4 CPU被搶占

CPU usage from 0ms to 10625ms later (2020-03-09 14:38:31.633 to 2020-03-09 14:38:42.257):

  543% 2045/com.alibaba.android.rimet: 54% user + 89% kernel / faults: 4608 minor 1 major ————關鍵行!!!

  99% 674/android.hardware.camera.provider@2.4-service: 81% user + 18% kernel / faults: 403 minor

  24% 32589/com.wang.test: 22% user + 1.4% kernel / faults: 7432 minor 1 major

  ........省略N行.....

如上日志,第二行是釘釘的進程,占據CPU高達543%,搶占了大部分CPU資源,因而導致發生ANR。

5.5內存緊張導致ANR

如果有一份日志,CPU和堆棧都很正常(不貼出來了),仍舊發生ANR,考慮是內存緊張。

從CPU第一行信息可以發現,ANR的時間點是2020-10-31 22:38:58.468—CPU usage from 0ms to 21752ms later (2020-10-31 22:38:58.468 to 2020-10-31 22:39:20.220)

接著去系統日志里搜索am_meminfo, 這個沒有搜索到。再次搜索onTrimMemory,果然發現了很多條記錄;

10-31 22:37:19.749 20733 20733 E Runtime : onTrimMemory level:80,pid:com.xxx.xxx:Launcher0

10-31 22:37:33.458 20733 20733 E Runtime : onTrimMemory level:80,pid:com.xxx.xxx:Launcher0

10-31 22:38:00.153 20733 20733 E Runtime : onTrimMemory level:80,pid:com.xxx.xxx:Launcher0

10-31 22:38:58.731 20733 20733 E Runtime : onTrimMemory level:80,pid:com.xxx.xxx:Launcher0

10-31 22:39:02.816 20733 20733 E Runtime : onTrimMemory level:80,pid:com.xxx.xxx:Launcher0

可以看出,在發生ANR的時間點前后,內存都處于緊張狀態,level等級是80,查看Android API 文檔;

/** * Level for {@link #onTrimMemory(int)}: the process is nearing the end * of the background LRU list, and if more memory isn’t found soon it will * be killed. */ static final int TRIM_MEMORY_COMPLETE = 80;

可知80這個等級是很嚴重的,應用馬上就要被殺死,被殺死的這個應用從名字可以看出來是桌面,連桌面都快要被殺死,那普通應用能好到哪里去呢?

一般來說,發生內存緊張,會導致多個應用發生ANR,所以在日志中如果發現有多個應用一起ANR了,可以初步判定,此ANR與你的應用無關。

5.6 系統服務超時導致ANR

系統服務超時一般會包含BinderProxy.transactNative關鍵字,請看如下日志:

'main' prio=5 tid=1 Native

  | group='main' sCount=1 dsCount=0 flags=1 obj=0x727851e8 self=0x78d7060e00

  | sysTid=4894 nice=0 cgrp=default sched=0/0 handle=0x795cc1e9a8

  | state=S schedstat=( 8292806752 1621087524 7167 ) utm=707 stm=122 core=5 HZ=100

  | stack=0x7febb64000-0x7febb66000 stackSize=8MB

  | held mutexes=

  kernel: __switch_to+0x90/0xc4

  kernel: binder_thread_read+0xbd8/0x144c

  kernel: binder_ioctl_write_read.constprop.58+0x20c/0x348

  kernel: binder_ioctl+0x5d4/0x88c

  kernel: do_vfs_ioctl+0xb8/0xb1c

  kernel: SyS_ioctl+0x84/0x98

  kernel: cpu_switch_to+0x34c/0x22c0

  native: #00 pc 000000000007a2ac  /system/lib64/libc.so (__ioctl+4)

  native: #01 pc 00000000000276ec  /system/lib64/libc.so (ioctl+132)

  native: #02 pc 00000000000557d4  /system/lib64/libbinder.so (android::IPCThreadState::talkWithDriver(bool)+252)

  native: #03 pc 0000000000056494  /system/lib64/libbinder.so (android::IPCThreadState::waitForResponse(android::Parcel*, int*)+60)

  native: #04 pc 00000000000562d0  /system/lib64/libbinder.so (android::IPCThreadState::transact(int, unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+216)

  native: #05 pc 000000000004ce1c  /system/lib64/libbinder.so (android::BpBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+72)

  native: #06 pc 00000000001281c8  /system/lib64/libandroid_runtime.so (???)

  native: #07 pc 0000000000947ed4  /system/framework/arm64/boot-framework.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+196)

  at android.os.BinderProxy.transactNative(Native method) ————————————————關鍵行!!!

  at android.os.BinderProxy.transact(Binder.java:804)

  at android.net.IConnectivityManager$Stub$Proxy.getActiveNetworkInfo(IConnectivityManager.java:1204)—關鍵行!

  at android.net.ConnectivityManager.getActiveNetworkInfo(ConnectivityManager.java:800)

  at com.xiaomi.NetworkUtils.getNetworkInfo(NetworkUtils.java:2)

  at com.xiaomi.frameworkbase.utils.NetworkUtils.getNetWorkType(NetworkUtils.java:1)

  at com.xiaomi.frameworkbase.utils.NetworkUtils.isWifiConnected(NetworkUtils.java:1)

從堆棧可以看出獲取網絡信息發生了ANR:getActiveNetworkInfo。

系統的服務都是Binder機制(16個線程),服務能力也是有限的,有可能系統服務長時間不響應導致ANR。如果其他應用占用了所有Binder線程,那么當前應用只能等待。

可進一步搜索:blockUntilThreadAvailable關鍵字:

at android.os.Binder.blockUntilThreadAvailable(Native method)

如果有發現某個線程的堆棧,包含此字樣,可進一步看其堆棧,確定是調用了什么系統服務。此類ANR也是屬于系統環境的問題,如果某類型機器上頻繁發生此問題,應用層可以考慮規避策略。

以上就是全面解析Android之ANR日志的詳細內容,更多關于Android ANR日志的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
主站蜘蛛池模板: 国产精品1024| 公妇乱淫视频 | 99视频精品 | 青青草免费公开视频 | 国产aa| 干日韩美女| 麻豆chinese| 精品热久久 | 爱久久视频| 国产www在线 | 丰满放荡岳乱妇91ww | 极品少妇在线观看 | 久久成人a毛片免费观看网站 | 亚洲天堂av片 | 欧美多人片高潮野外做片黑人 | 性色高清xxxxx厕所偷窥 | 干美女少妇 | 亚洲国产精品无码观看久久 | 国产成人午夜福利在线播放 | jizz少妇 | 亚洲激情在线观看视频 | 国产乱来 | 五月婷六月丁香狠狠躁狠狠爱 | 日本久久久久久久久 | youjizz.com国产 | 91原创视频 | 青草福利在线 | 日本不卡高清一区二区三区 | 美女被张开双腿日出白浆 | 久久久久久9 | 亚洲区第一页 | 青青青草视频 | 日韩夜夜高潮夜夜爽无码 | 美女露出给别人摸图片 | 精品免费国产一区二区三区四区介绍 | 中文字幕一区二区在线播放 | 美女拉屎视频pooping | 日本在线国产 | 丝袜 亚洲 另类 国产 制服 | 欧美精品一区二区在线播放 | 日本一道在线 | 国产农村妇女aaaaa视频 | 亚洲自拍中文字幕 | 天天插日日插 | 欧美性猛交ⅹxx | 免费在线播放黄色片 | 伊人狠狠色丁香婷婷综合 | 欧美猛男性猛交视频 | 免费视频亚洲 | 国産精品久久久久久久 | 国产乱对白刺激在线视频 | 人人射人人干 | 久久精国| 久久艹伊人 | 性猛交ⅹxxx富婆video | 免费久草视频 | 玩弄放荡人妻少妇系列视频 | 在线高清av| 18禁黄网站男男禁片免费观看 | 91精品一区二区三区在线观看 | 熟妇人妻无乱码中文字幕真矢织江 | 91天天色| 日韩欧美三级视频 | 欧美午夜性春猛交xxxx按摩师 | 成人高清视频在线观看 | 人人鲁人人莫一区二区三区 | 成人久久av | 欧美精品久久久久久久久老牛影院 | 黄色av片三级三级三级免费看 | 三级视频在线播放 | 久久夜色精品亚洲噜噜国产mv | 久久久久久久久成人 | 真人黄色毛片 | 国产福利免费观看 | 妖精视频在线观看免费 | 成人啪啪免费网站 | 亚洲日本影院 | 一进一出一爽又粗又大 | 精品久久久无码人妻字幂 | 伊人亚洲| 亚洲最大色大成人av | 国产在线伊人 | 天天综合网天天综合色 | 少妇人妻偷人精品一区二区 | 国产精品人人爽人人做我的可爱 | aaa级吃奶摸下免费视频 | 一级生活毛片 | 国产成人欧美一区二区三区八 | 精品少妇一区二区30p | 红桃色av| 国产又爽又黄又无遮挡的激情视频 | 91看片免费看 | 久久久精品中文字幕 | 国产裸体瑜伽xxx在线 | 国产亚洲精品码 | 日日爽日日操 | 日韩精品久久久久久久白丝 | 国产精品免费一区二区三区四区 | 波多野结衣在线观看一区 | 中文字幕第一页永久有效 | 久久免费少妇高潮99精品 | 久久久久久久国产精品毛片 | 中文字幕亚洲日韩无线码 | 日批视频免费在线观看 | 中文字幕手机在线视频 | 国产乱子伦农村叉叉叉 | 精彩视频一区二区三区 | 天天舔天天射天天干 | 日本精品免费视频 | 中文精品久久久久人妻不卡 | 亚洲ww中文在线 | 精品在线看 | av在线你懂的 | 久久久亚洲国产精品麻豆综合天堂 | 日本19禁啪啪无遮挡网站 | 免费的黄网站在线观看 | 亚洲 激情 小说 另类 欧美 | 日本肉体xxxⅹ裸体交 | 国产精品久久久久777777 | 男女做爰全过程69视频 | 亚洲中文字幕无码久久 | 国色天香社区在线视频 | 综合人妻久久一区二区精品 | 中文 在线 日韩 亚洲 欧美 | 人人妻人人爽人人做夜欢视频九色 | www黄色在线观看 | 91禁在线看 | 国产对白叫床清晰在线播放 | 中文字幕一路线二路线三路线 | 欧美v成 人在线观看 | 天堂√在线中文官网在线 | 成人在线免费视频 | 国产在线麻豆精品入口 | 亚欧精品在线 | 国产精品女人精品久久久天天 | 台湾午夜a级理论片在线播放 | 精品成人av | 台湾综合色 | 国产精品久久久久久久免费观看 | 99精品国产一区二区 | 狠狠色噜噜狠狠狠合久 | 国产精品扒开腿做爽爽爽a片唱戏 | 伊人热热| 97精品久久久 | 亚洲www天堂com| 国偷自产一区二区三区蜜臀 | 国产在线午夜卡精品影院 | 青娱乐超碰在线 | 中文字幕日本免费毛片全过程 | 理论片87福利理论电影 | 成人a网 | 免费国产黄网站在线观看可以下载 | 中文字幕久久熟女人妻av免费 | 99国产精品无码 | 欧美黑人性暴力猛交喷水 | 风间由美在线观看 | 激情噜噜| 黄色毛片看看 | 高清国产午夜精品久久久久久 | 天堂一区二区mv在线观看 | 亚洲精品456在线播放第一页 | 亚洲成人av在线 | 中文字幕大全 | 久久av中文字幕 | 黄大色黄大片女爽一次 | 40岁成熟女人牲交片20分钟 | 免费无码成人av在线播放不卡 | 亚洲中文字幕无码一区 | 色干综合| 尤物av午夜精品一区二区入口 | 蜜臀久久99精品久久久久久宅男 | 丰满亚洲大尺度无码无码专线 | 国产精品久久麻豆 | 欧美毛片免费看 | heyzo综合国产精品216 | 久久精品无码专区免费 | 精品人妻av一区二区三区 | 毛片一区 | 极品丰满少妇 | 久久精品无码精品免费专区 | 天天爽夜夜爽一区二区三区 | 琪琪午夜伦理 | 蜜桃av鲁一鲁一鲁一鲁俄罗斯的 | 日韩a无v码在线播放 | 国产在线播放网站 | 国产黄色一级片视频 | 伊人天天操 | 337p日本欧洲亚洲大胆张筱雨 | 日韩资源在线 | 少妇性荡欲午夜性开放视频剧场 | 精品久久久久久亚洲精品 | 国产精品国产三级国产aⅴ原创 | 最新国产精品视频 | 在线观看黄色免费网站 | 婷婷天堂网 | 华人av在线| 亚洲一区av无码专区在线观看 | 波多野结衣 久久 | 国产片av国语在线观看 | 免费国产在线一区二区 | 毛片小视频 | 西野翔中文久久精品国产 | 一区二区三区在线 | 网站 | 一二三四视频社区在线 | 亚洲精品欧美一区二区三区 | 欧美黑人又粗又大的性格特点 | 久草这里只有精品 | 巨胸美女爆视频网站 | 国产女18毛片多18精品 | 色小姐综合 | 午夜福利影院私人爽爽 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲精品乱码久久久久久按摩观 | 强行18分钟处破痛哭av | 91激情在线视频 | 综合久久影院 | 四虎永久在线精品免费网址 | 国产乱人伦偷精品视频不卡 | 四虎最新站名点击进入 | 国产性一乱一性一伧的解决方法 | 国产无线乱码一区二三区 | 久久中文字幕网 | 经典三级在线视频 | 露脸叫床粗话东北少妇 | 午夜视频在线 | 欧美8888| 夜先锋av资源网站 | 日产欧产美韩系列在线播放 | 91资源新版在线天堂成人 | 国产精品久久久久久久久久久久午夜片 | 欧美日韩八区 | 91超碰免费在线 | 性一交一伦一理一色一情 | 亚洲国产精品久久久久久 | 久久久精品国产免大香伊 | 久久五月天婷婷 | 久久国内免费视频 | 国内露脸少妇精品视频 | 国产人成视频在线视频 | 亚洲黄色影院 | 欧美熟妇色ⅹxxx欧美妇 | 国产精品videossex国产高清 | 国产精品偷伦视频免费观看了 | 外国a级片 | 91精品久久久久久粉嫩 | 日本妈妈9 | 性福利视频 | 丝袜诱惑一区二区 | 在线看黄网址 | 日韩一区二区三区在线免费观看 | 蜜色影院 | 国产成人综合在线观看不卡 | 日韩精品91亚洲二区在线观看 | 张柏芝亚洲一区二区三区 | 亚洲 在线 | 欧美日韩免费做爰视频 | 性饥渴艳妇性色生活片在线播放 | 欧美日韩在线播放三区四区 | 日日爱夜夜爱 | 久久99国产视频 | 欧美激情免费在线 | 久久国产精品视频 | 日韩少妇内射免费播放 | 亚洲精品久久久蜜桃 | 精品国产乱码久久久久久浪潮 | 大江大河第3部48集在线观看 | av福利在线免费观看 | 午夜精品亚洲 | 男人久久久 | 日韩 欧美 亚洲 精品 少妇 | 欧美成人免费观看全部 | 日韩不卡高清视频 | 欧美精品v | 国户精品久久久久久久久久久不卡 | 久久精品4| 日本精品国产 | 亚洲自拍小视频 | 激情福利网 | 日本精品一区二区三区四区 | 四虎国产精品永久地址998 | 无码人妻精一区二区三区 | 狼人伊人干| 狠狠88综合久久久久综合网 | 一区一区三区四区产品动漫 | 亚洲欧洲精品成人久久曰 | 欧美啪啪小视频 | 日产国产欧美视频一区精品 | 日韩一级不卡 | 色涩av| 18禁超污无遮挡无码免费网站国产 | 天堂网av在线播放 | 日本成人在线看 | 国产福利视频一区二区 | 国产区一二三 | 日韩精品一区二区在线播放 | jizz日本18| 国产免费资源 | 日韩精品人妻系列无码专区 | 91免费网址 | 国产乱妇乱子 | 久久久久人妻啪啪一区二区 | 极品少妇xxxx | 欧美一级大片免费看 | 98国产精品| 亚洲激情视频在线 | 日韩精品视频免费播放 | 免费毛片大肚孕妇孕交av | 2019狠狠干 | 山东熟女啪啪哦哦叫 | 野花香社区在线视频观看播放 | 91精品国产色综合久久不卡98口 | 成人做爰高潮片免费看 | 污片网址 | frxxee欧美xxee麻豆 | 97久久精品人人澡人人爽 | 黄瓜视频污在线观看 | 欲求不满在线小早川怜子 | 成人wwe在线观看视频 | 久章草在线精品视频免费观看 | 国产自产一区二区 | 精品欧美一区二区三区精品久久 | 久久本道综合久久伊人 | 久久精品国产99精品国产2021 | 国产精品免费观看视频 | 亚洲色大成网站www永久在线观看 | av视屏| 日本一区免费 | 亚洲国产精品成人无码区 | 中文字幕无码不卡免费视频 | 亚洲乱码在线观看 | 国产成人精品电影在线观看 | 成年人视频网址 | 亚洲1区 | 91久久精品日日躁夜夜躁国产 | 88成人免费快色 | 手机看片日韩久久 | 毛片无遮挡高清免费 | 免费一级全黄少妇性色生活片 | 国产不卡av在线 | 欧美在线免费视频 | jizz欧美大全| 国产精品女人久久久 | 嫩草影院永久入口 | 好男人www社区在线视频夜恋 | 亚洲日产韩国一二三四区 | 日韩av免费看 | 丰满孕妇性春猛交xx大陆 | 国产男女做爰免费网站 | 欧亚日韩精品一区二区在线 | 国产草草影院 | 日韩极品视频在线观看 | 熟女丝袜潮喷内裤视频网站 | 亚洲天堂三区 | 欧美日韩国产精品自在自线 | 亚洲一区久久 | fc2成人免费人成在线观看播放 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 欧美精品一区二区三区四区五区 | 久久综合久久久 | 免费人成自慰网站 | 亚洲国产精品丝袜国产自在线 | 一本色道久久精品 | 特级做a爰片毛片免费看 | 欧美精品一卡二卡 | 日韩综合网站 | 国产露脸无套对白在线播放 | 人妻少妇偷人精品视频 | 我不卡av | 精品少妇久久 | 精品国产123 | 国产剧情av麻豆香蕉精品 | 国产又粗又猛又黄又爽视频 | 成人毛片观看 | 成人性大片 | 在线色播| 国产又粗又黄又长又爽动漫 | 日韩精品人妻系列无码专区 | 黄色大片免费在线观看 | 精品蜜臀久久久久99网站 | 黄色网页在线观看 | аⅴ新版在线天堂 | 极品少妇xxx | 欧美色欧美亚洲另类二区 | 亚洲自国产拍揄拍 | 国产精品无 | 爱爱高潮视频 | 日韩在线视频观看免费网站 | 欧洲亚洲女同hd | 一本色道久久99精品综合蜜臀 | 小镇姑娘1979版 | 少妇性色av| 亚洲熟妇国产熟妇肥婆 | aaa日本高清在线播放免费观看 | 超碰69| 伊人蕉久中文字幕无码专区 | 国产高清精品在线观看 | 亚洲精品乱码久久久久久蜜桃 | 欧美性狂猛xxxxxbbbbb | 亚洲人成网站精品片在线观看 | 自拍偷拍18p | 成年人黄色 | 影音先锋中文字幕一区 | 国产精品videos | 男女男精品视频站 | 国产精品久久久久久久成人午夜 | 九九九九九九伊人 | 一级特黄aaa毛片在线视频 | 中文字幕在线亚洲精品 | 麻豆chinese| 国产理论av | 国产精品无码翘臀在线观看 | 欧美性生活视频免费看 | yw视频在线观看 | 日本伊人久久 | 在线精品国产一区二区三区 | 午夜一级大片 | 亚洲第一黄 | 毛片无遮挡 | 一区二区三区四区免费视频 | 久久久久久国产精品免费免费 | 国产丰满大乳奶水 | 国产精品精 | 免费在线国产 | 中文字幕乱码中文乱码777 | 99热免费精品 | 日本亚洲精品一区二区三区 | 激情久久网| 日本一二区视频 | 美女脱免费看网站女同 | 中文字幕亚洲无线码在线一区 | 国产精品内射视频免费 | 国产精品白浆一区二小说 | 性色av一区二区三区 | www91在线观看 | 美丽姑娘免费观看在线观看 | 国产又爽又黄游戏 | 97精品超碰一区二区三区 | 亚洲成人高清在线观看 | 亚洲国产精品久久久久婷蜜芽 | 大桥未久av一区二区三区 | yourporn久久久亚洲精品 | 中文字幕在线看人 | 波多野结衣二区 | 阿v天堂在线观看 | 97无码免费人妻超级碰碰夜夜 | 有码视频在线观看 | 中文在线字幕观看 | 亚洲天堂欧美在线 | 三级黄色小视频 | 中国china体内裑精亚洲日本 | 椎名空在线观看 | 超碰人人爱人人 | 78色淫网站女女免费 | 国产一区二区四区 | 国内偷拍av | 欧美国产不卡 | 日韩成人在线免费观看 | 精品熟女碰碰人人a久久 | 国产嫩草在线观看视频 | 久草在线播放视频 | 91久久亚洲 | 亚洲人成影院在线观看 | 久久久久99精品国产片 | 日韩欧美自拍 | 久久久久久午夜 | 精品国产91乱码一区二区三区 | 男女做爰猛烈叫床无遮挡 | 日产一区三区三区高中清 | 国产产无码乱码精品久久鸭 | 国产精品成人va在线观看 | 黄色a网站 | 九色蝌蚪9l视频蝌蚪9l视频开放 | 夜鲁鲁鲁夜夜综合视频 | 欧美日韩一二三 | 久国产精品 | 亚洲免费片 | 国产 日韩 欧美 一区 | www亚洲精品少妇裸乳一区二区 | 国产精品亚洲成在人线 | 国产盗摄精品一区二区酒店 | 国产精品三区四区 | 欧美极品25p | 午夜免费小视频 | 国产精品久久久久久久久人妻 | 一级片视频在线 | 操女人网 | 精品粉嫩bbwbbwbbw | 日韩免费精品视频 | 欧美猛少妇色xxxxx猛叫 | a级毛片高清免费视频 | 免费毛片全部不收费的 | 少妇饥渴偷公乱75 | 人人爽人人爽人人片av | 日韩啪啪片 | 天天干,夜夜操 | 无码人妻丰满熟妇精品区 | 国产爆乳无码一区二区麻豆 | 久久精品不卡一区二区 | www夜片内射视频日韩精品成人 | 欧美久久久久久久久久久 | 精品午夜福利在线观看 | 欧美大片一区二区三区 | 久久激情网站 | 性高湖久久久久久久久 | 日韩少妇白浆无码系列 | www.第四色| 中文字幕有码无码人妻av蜜桃 | aa级黄色大片 | 强辱丰满人妻hd中文字幕 | 亚洲精品无码不卡 | 亚洲精品无码一区二区三区久久久 | 亚洲精品不卡 | 狠狠色欧美亚洲狠狠色www | 国产精品另类激情久久久免费 | 国产午夜亚洲精品不卡 | 成年人网站黄色 | 亚洲伦理在线观看 | 天天干夜夜欢 | 91免费视频大全 | 亚洲国产日韩在线视频 | 99久久久国产精品免费99 | 欧美成年黄网站色视频 | 免费在线日本 | 日韩视频在线一区 | 日韩一区精品视频一区二区 | 中文字幕日韩高清 | 看全黄大黄大色大片美女 | 国产成人无码精品一区在线观看 | 夜夜操操操| 国产精品国产三级国产不产一地 | 日本成人午夜视频 | 乱中年女人伦 | 国产精品久久久久久久久久影院 | 日韩中文字幕高清 | 中年两口子高潮呻吟 | 亚洲欧美国产精品专区久久 | 农村乱视频一区二区三区 | 国精产品999一区二区三区有 | 国产成人精品一区二三区 | 欧美成人家庭影院 | 亚洲一区在线免费观看 | 91亚洲精品在线观看 | xxxx久久| 亚洲 小说区 图片区 都市 | 狠狠爱俺也去去就色 | 亚洲欧美一二三区 | 日韩欧美一区二区在线视频 | 91精品国产乱码久久桃 | 中文字幕一区二区三区乱码不卡 | 免费观看性生交大片3区 | a级毛片特级毛片 | 黄网站免费在线观看 | 亚洲一二三四视频 | 99在线看 | 99精品国产自在现线10页 | 日批免费网站 | 国产麻豆一精品一男同 | 69视频网| 少妇熟女视频一区二区三区 | 亚洲揄拍窥拍久久国产自揄拍 | www.狠狠| 99精品久久久 | 亚洲一二三四专区 | 91精产国品一二三产区区 | 女人天堂av| 亚洲无人区码一码二码三码的含义 | 97青草超碰久久国内精品91 | 国产精品伊人久久 | 欧美精品一区二区三区在线 | 噼里啪啦国语版在线观看 | 老湿福利影院 | 亚洲欧美国产双大乳头 | 久久精品99国产精品日本 | 亚洲精品乱码久久久久久按摩 | 久久久国产精 | 欧美一区二区三区成人精品 | 98久9在线 | 视频 | 日韩精品一区二区三区免费视频观看 | 麻豆日产六区 | 日本一区二区三区爆乳 | 美国一级特a黄 | 久久久亚洲欧洲 | 台湾十八成人网 | 久久精品视频观看 | 综合欧美一区二区三区 | 熟女肥臀白浆大屁股一区二区 | 无套中出极品少妇白浆 | 成人免费视频在线观看 | 婷婷五月综合激情 | 国产精品一卡二卡 | 外国特级免费片 | 我和房东少妇激情 | 日免费视频 | 国产黄色一级片视频 | 女性无套免费网站在线看动漫 | 免费人成再在线观看网站 | 欧洲亚洲一区二区 | 精品人妻一区二区三区四区 | 搞逼综合网| 婷婷丁香六月激情综合啪 | 高清视频一区二区三区 | 成人欧美一区二区三区黑人一 | 成人毛片100部免费看 | 国产又色又爽又黄的视频在线观看 | 久久国产精品久久国产精品 | 日日噜噜夜夜狠狠久久丁香五月 | 亚洲高清视频一区二区三区 | 欧美男生射精高潮视频网站 | 日本午夜无人区毛片私人影院 | 天天色天天射天天干 | 国产精品久久久久久久久久久免费看 | 红猫大本营在线观看的 | 国产免费又色又爽粗视频 | 天天都色| 欧洲肉欲k8播放毛片 |