久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

全面解析Android之ANR日志

瀏覽:131日期: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
相關文章:
主站蜘蛛池模板: 亚洲日韩中文字幕一区 | 国产亚洲欧美一区二区三区 | a久久久久久 | 久久草视频| 午夜精品久久久久久久男人的天堂 | 成人免费淫片aa视频免费 | 成人天堂资源www在线 | 成人av免费 | 久草青青| 亚洲天堂一区 | 午夜精品一区二区三区免费视频 | 久久精品中文 | 午夜婷婷色 | 美女超碰| 国产日韩精品在线 | 国产精品一码二码三码在线 | 午夜影院在线观看 | 亚洲国产精品一区二区三区 | 日日夜夜免费精品视频 | 久草综合网 | 日韩一区二区福利 | 国产精品久久久久久久一区探花 | 色视频www在线播放国产人成 | 国产精品久久久久久久一区探花 | 久久久久国产成人精品亚洲午夜 | 91亚洲国产成人久久精品网站 | 91久久久www播放日本观看 | 亚洲欧美激情视频 | 欧美久久成人 | 久久久久九九九九 | 激情欧美一区二区三区 | 国产日韩欧美视频 | 在线观看日韩精品 | 天天影视色香欲 | 久久久久中文字幕 | 麻豆色呦呦 | 精品国产欧美一区二区三区成人 | 91精品国产综合久久福利 | 久久99精品一区二区三区三区 | 久久久婷| 亚洲免费精品网站 | 欧美日韩中文在线观看 | 一区二区国产精品 | 九九porny88av | 亚洲精品一区二区三区不 | 亚洲女人天堂av | 一区二区三区视频免费在线观看 | 99热少妇 | 亚洲第一天堂无码专区 | 在线观看中文字幕亚洲 | 欧美精品中文字幕久久二区 | 天天躁人人躁人人躁狂躁 | 日韩欧美二区 | 精品国产髙清在线看国产毛片 | 午夜私人影院在线观看 | 欧美精品色 | 手机看片国产精品 | 欧美精品a∨在线观看不卡 欧美日韩中文字幕在线播放 | 久久成人毛片 | 亚洲精品aaa | 久久99成人 | 日韩视频在线播放 | 欧美1314| 欧美一级全黄 | 亚洲一区不卡在线 | 久久久久久久国产 | 国产精品91视频 | 日韩在线观看视频免费 | 久久伊人影院 | 一区二区三区四区久久 | 一区二区国产精品 | 国产精品精品 | 成人在线免费 | 国产美女一区二区 | 亚洲久久久 | 日韩精品免费在线视频 | 欧美日韩高清 | 久久视频在线 | 亚洲毛片| 国产激情免费 | 久久久久久av | 视频一区在线 | 91在线影院 | 91av爱爱 | 国产成人精品一区二区三区四区 | 日韩一区二区中文字幕 | 麻豆一区 | 日韩一区二区三区视频 | 久久大陆 | 亚洲www啪成人一区二区 | 亚洲成人一区二区 | 精品国产31久久久久久 | 欧美精品久 | 动漫羞免费网站中文字幕 | 97狠狠| www.99热.com| 国产亚洲精品美女久久久久久久久久 | 精品国产鲁一鲁一区二区三区 | 欧美日韩精品久久久 | 免费福利视频一区 | 日韩一区二区在线观看 | 国产综合亚洲精品一区二 | www.天天操| 久久这里只有精品首页 | 一区二区三区在线播放 | 成人在线高清 | 夜夜视频 | 日韩一二三区视频 | 天天综合7799精品影视 | 亚洲成人一区二区 | 国产二区三区 | 四虎最新入口 | 一区二区亚洲视频 | 亚洲欧美日韩国产综合精品二区 | 久久精品91久久久久久再现 | 91尤物网站网红尤物福利 | 337p亚洲欧洲 | 黑人巨大精品欧美一区二区三区 | 亚洲91| 日韩色视频 | 国产在线观看一区二区三区 | 操一草| 91精品国产99久久久久久红楼 | 亚洲精品一区二区网址 | 人人澡人人草 | 亚洲视频三区 | 91影院在线观看 | 中文字幕第66页 | 午夜亚洲福利 | 久久精品欧美 | 春色av | 日本午夜电影 | 久久草视频| 日韩一区二区三区在线 | jizz欧美最大 | 在线中文一区 | 国产欧美日韩一区 | 亚洲精品一区在线观看 | 97av在线 | 国产毛片视频 | 夜夜夜操操操 | 成人免费视频视频 | 精品99久久久久久 | 538在线精品 | 蜜桃免费一区二区三区 | 国产视频一区二区 | 中文字幕欧美日韩 | 男人天堂a| 欧美国产伦久久久久久 | 精品日韩一区二区三区 | 红色av社区 | 成人深夜福利在线观看 | 一级毛片在线播放 | 精品国产黄a∨片高清在线 日韩一区二 | 国产精品电影 | 一区三区视频 | 久久中文字幕一区二区三区 | 日韩一区高清视频 | 日本美女一区二区 | 国产成人高清精品免费5388 | 久久777 | 色吧久久 | 欧美精品一区二区三区免费视频 | 欧美亚洲一区 | 中文一区二区 | 成人国产精品视频 | 亚洲免费视频网站 | 午夜电影网址 | 一区二区三区视频在线播放 | 欧美久久成人 | 欧美视频在线观看 | julia一区二区三区中文字幕 | 国产一区二区欧美 | 国产精久久一区二区三区 | 日韩在线免费 | 一区二区三区成人 | 国产一级毛片国语一级 | 99国产精品99久久久久久 | 成人精品 | 国产1区2区精品 | 中文字幕免费在线观看 | 国产一区二区免费视频 | se在线播放 | 欧美福利电影在线观看 | 国产高清精品一区 | 国产精品资源在线 | 特级理论片 | 在线婷婷 | 日韩9999| 欧美国产一区二区 | 高清国产一区二区三区四区五区 | 在线永久免费观看日韩a | 99久久久国产精品 | 91免费影视 | 午夜视频在线观看网站 | 亚洲成人精品久久 | 成人精品视频在线观看 | 日本私人网站在线观看 | 国产欧美一二三区在线粉嫩 | 99资源| 精品三级三级三级三级三级 | 免费99精品国产自在在线 | 日操| 午夜精品久久久久久久男人的天堂 | 欧美日韩中文字幕 | 51国产午夜精品免费视频 | 北条麻妃一区二区免费播放 | 国产二区在线播放 | 日日精品| 黄色手机在线观看 | 国产午夜精品久久久久久久 | 精品三级三级三级三级三级 | 欧美精品久久久 | 国产精品乱码一区二区三区 | 成人免费一区二区三区视频网站 | 四虎影视网址 | 亚洲精品视频在线 | 日韩欧美一区二区三区 | 欧美日韩在线精品 | 国产乱码精品一区二区三区忘忧草 | 亚洲国产精久久久久久久 | 97精品国产97久久久久久粉红 | 麻豆亚洲 | 99久久婷婷国产综合精品电影 | 无码日韩精品一区二区免费 | 视频一区二区国产 | 国产精品久久久久久久久久大牛 | 国产日产精品一区二区三区四区 | 97高清国语自产拍 | 亚洲一区二区三区免费在线观看 | 狠狠撸在线视频 | 99视频精品 | 亚洲精品在线免费 | 亚洲视频一区 | 国产精品一区二区在线观看 | 成人看片免费 | 亚洲电影中文字幕 | 国产精品18hdxxxⅹ在线 | 福利在线播放 | 亚洲一区二区三区久久 | 成人性生交大片免费看中文带字幕 | 亚洲精品视频在线看 | 麻豆精品久久久 | 99精品一区二区 | 一级毛片免费 | 亚洲精品第一区在线观看 | 91麻豆精品国产91久久久更新资源速度超快 | 激情999 | 在线天堂新版最新版在线8 www.国产欧美 | 一级片在线播放 | 国产成人一区二区 | 色婷网 | 亚洲综合色视频在线观看 | 久久久天堂 | 久久兔费看a级 | 日本99精品 | 国产三级日本三级美三级 | 久久av在线 | 精品国产乱码久久久久久闺蜜 | 狠狠的干 | 国产一区二区三区在线免费观看 | 无码日韩精品一区二区免费 | 成人午夜在线 | 中文字幕高清视频 | 欧美激情在线播放 | 欧美视频xxx| 黄色av观看 | av综合在线观看 | 91久色 | 国产裸体永久免费视频网站 | 欧美激情欧美激情在线五月 | 免费国产网站 | 免费看的av| 国产成人综合一区二区三区 | 亚洲国内精品 | 欧美精品在线不卡 | 国产玖玖| 欧美成人一区二区三区片免费 | 欧美视频在线播放 | 国产香蕉视频在线播放 | 成人亚洲精品久久久久 | 综合色久 | 国产一区二区毛片 | 欧美成人精品激情在线观看 | 色无欲天天天影视综合网 | 日韩免费精品视频 | 成人午夜免费视频 | 中文字幕在线观看一区二区三区 | 黄色一级片在线看 | 欧美综合区 | 免费黄色片一区二区 | 久久久久久国产精品 | 91久久久久久久久 | 久久免费小视频 | 国产成人综合一区二区三区 | 日韩素人在线 | 国内精品久久久久国产 | 久久精品国产一区二区电影 | 久久国产精品久久久久久电车 | 精品久久久久久久久久久久久久久 | 国产视频一区在线 | 日韩精品久久 | 日韩国产免费观看 | 99亚洲精品 | 福利在线看 | 小川阿佐美88av在线播放 | 久久久免费观看 | 九九久久精品 | 久草福利在线视频 | 一级黄色片日本 | 日韩在线不卡视频 | www.国产.com| 欧美久久成人 | 日韩在线视频播放 | 亚洲一区二区三区久久久 | 亚洲成人av片 | 久久亚洲国产精品 | 私人毛片免费高清视频 | 国产精品久久久久久久久免费桃花 | 国产精彩视频 | 久久综合九色综合欧美狠狠 | 亚洲日本欧美 | 亚洲91精品 | 91视频播放 | 亚洲高清视频一区 | 婷婷视频在线 | 亚洲91| 黄色片在线 | 欧美激情a∨在线视频播放 中文字幕网在线 | 国产精品一区二区在线观看 | 精品国产乱码久久久久久1区2区 | 亚洲美女视频一区二区三区 | 久久精品在线 | 国产精品99久久久久久久vr | 成av在线 | 日韩色区 | 美女网站视频免费黄 | 国产在线观看 | 婷婷欧美 | 亚洲欧美激情精品一区二区 | 在线观看成人 | 国产精品一区二区三区久久 | 亚洲91| 成人国产精品久久久 | 久久久久久亚洲 | 综合中文字幕 | 亚洲综合首页 | 色视频一区二区三区 | 日本久久久亚洲精品 | 亚洲日韩中文字幕一区 | 人人人人人你人人人人人 | 黄色大片在线播放 | 日韩高清在线一区 | 国产精品视频一区二区三区不卡 | 成人免费黄色毛片 | 亚洲精品一区二区网址 | 色在线看 | 在线观看国产wwwa级羞羞视频 | 国产精品视频播放 | 在线播放亚洲 | jjzz18国产 | 中文av字幕 | 高清一区二区 | 国产视频一区在线 | 久久一区二区精品 | 美女久久久久久久久久久 | 国产精品人人做人人爽人人添 | 精品福利在线视频 | 日韩成人精品 | 国产成人精品一区二区 | 久草av在线播放 | 国产精品视频一区二区三区不卡 | 成人午夜在线观看 | 亚洲大片69999 | a级性生活 | 福利视频二区 | 日韩精品一区二区三区在线观看 | 精品国产青草久久久久福利 | 天天天操 | 激情福利视频 | 亚洲精品在线视频观看 | 亚洲精选久久 | 一区二区免费看 | 日本韩国欧美一区 | 欧美亚洲啪啪 | 91在线观看网站 | 午夜小视频在线观看 | 欧美激情一区二区三区 | 中文字字幕在线 | 91中文字幕 | 久久99精品久久久久久琪琪 | 亚洲国产精品精华液com | 91在线精品一区二区 | 婷婷综合| 日韩一级在线免费观看 | 91精品久久久久 | 成人午夜小视频 | 欧美日韩成人在线视频 | 伊人电影综合网 | 国产成人福利视频 | 精品免费视频 | www久久久| 九九色九九| 亚洲精品资源在线观看 | 成人在线视频免费观看 | 99免费观看视频 | 国产精品第一国产精品 | 香蕉视频在线看 | 蜜桃视频成人m3u8 | 精品久| 午夜免费视频网站 | 久久亚洲国产 | 超碰av在线| 精品国产乱码久久久久久1区2区 | 亚洲一区不卡在线 | 热re99久久精品国99热线看 | 免费看91| 美国一级黄色片 | 亚洲精品在线免费 | www.久久久 | 狠狠搞狠狠操 | 欧美激情小视频 | 午夜午夜精品一区二区三区文 | 成人在线免费小视频 | 一级毛片一级毛片一级毛片 | 欧美久久久精品 | 亚洲激情在线观看 | 久久久久国产精品免费免费搜索 | 久久久久久久一区二区三区 | 毛片网免费| 一级片黄片毛片 | 色婷婷亚洲一区二区三区 | 男女啪网站 | 国产精品国产精品国产专区不片 | 精品一区二区三区视频 | 国产精品综合 | 97成人在线| 国产欧美精品一区二区三区 | 国产亚洲欧美一区二区三区 | 日本在线观看网站 | 日韩国产一区二区三区 | 日本一区二区三区视频免费看 | 成人精品一区二区三区中文字幕 | 操到爽| 九九精品视频在线 | 国产一区免费视频 | 97伦理在线 | 精品国产黄a∨片高清在线 日韩一区二 | 天天插天天干 | 亚洲国产日本 | 成人国产在线观看 | 亚洲欧美综合 | 91久久看片 | 精品一区二区三区国产 | 成人高清视频在线 | 99re在线观看 | 成年人在线视频 | 国产精品日韩一区二区 | 欧美日韩免费一区二区三区 | 久久久精品久久久久 | 国产成人免费视频网站视频社区 | 国产成人午夜高潮毛片 | 日韩视频中文字幕 | 精品久久香蕉国产线看观看亚洲 | 色人人| 热久久免费视频 | 国产一区二区三区久久久久久久久 | 欧美激情精品久久久久久免费 | 国产一区中文字幕 | 国产日韩视频在线观看 | 真人一级毛片 | 亚洲欧洲一区二区三区 | 亚洲视频在线观看网址 | 成人亚洲一区 | 黄网在线观看 | 麻豆产精国品免费入口 | 91久久综合亚洲鲁鲁五月天 | av在线播放网站 | 国产一级免费视频 | 日韩欧美视频 | 国产第一亚洲 | 亚洲免费电影一区 | www国产一区 | 拍拍无遮挡人做人爱视频免费观看 | 免费午夜视频 | 国产精品久久久久一区二区三区 | 国产精品毛片一区二区在线看 | 99在线观看 | 亚洲欧美韩国 | 超碰在线91 | 中文字幕在线观看一区二区三区 | 日韩在线免费 | 亚洲精品乱码 | 中文在线一区二区 | 天天舔天天干天天操 | 另类一区 | 黄色成人在线网站 | 欧美日韩国产在线观看 | 国产日韩久久 | 成人三级视频 | 久久久国产一区二区三区四区小说 | 亚洲一区| 91综合视频在线观看 | 视频一区二区中文字幕日韩 | 一色一黄视频 | 女同久久另类99精品国产 | 久草免费在线 | 欧美日韩在线一 | 鲁管视频 | 国产精品久久久久久久岛一牛影视 | 亚洲一区中文字幕在线观看 | 一区二区av | 黄色片一区 | 九色在线观看 | 91碰碰| 一级毛片av | 国产一级黄色大片 | 91高清在线| 日本一区二区高清视频 | 欧美区国产 | 国产精品久久久精品 | 一级免费网站 | 成年入口无限观看网站 | 精品国产三级a在线观看 | av在线免费观看网站 | 亚洲男人的天堂在线观看 | 欧洲毛片| 日韩中文一区 | 国产免费看 | 天天干天天插 | 久久久久亚洲一区二区三区 | 欧美一级艳情片免费观看 | 先锋资源中文字幕 | 国产一区二区三区视频 | 久久麻豆 | 98精品国产高清在线xxxx天堂 | 有码在线| 久久亚 | 超碰在线人人 | 精品视频在线观看一区二区三区 | 中文字幕在线第一页 | 天堂av中文字幕 | 成人练习生| 日本成人久久 | 91亚洲国产 | 亚洲视频在线观看一区二区三区 | 亚洲热在线视频 | 免费看的黄色 | 毛片a片 | 成人黄页在线观看 | 亚洲电影免费 | 国产人免费人成免费视频 | 日本黄a三级三级三级 | 国产精品久久久久久久久久久久久 | 天堂一区二区三区 | 亚洲一区二区三区免费观看 | 亚洲一区中文字幕在线 | 久草天堂| 国产精品日产欧美久久久久 | 亚洲www啪成人一区二区 | 欧美在线视频三区 | 色一情一乱一伦一区二区三区 | 国产成人在线视频 | 亚洲成人久久久 | 国产乱人伦av在线a 天天碰天天操 | 欧美日韩视频在线第一区 | 欧美成人精品激情在线观看 | 亚洲欧美综合精品久久成人 | 这里只有精品视频 | 一区二区三区免费 | 久久av综合网 | 国产亚洲一区二区精品 | 亚洲精品久久久久午夜 | 日韩中文字幕精品 | 综合网激情 | 午夜精品偷拍 | 国产精品久久在线观看 | 福利视频一区二区 | 精品日韩一区二区三区 | 成人一级视频在线观看 | 伊人网网站 | 国产另类ts人妖一区二区 | 在线观看视频一区二区 | av在线精品| 成人午夜电影在线 | 国产美女精品人人做人人爽 | 久久精品中文字幕 | 色婷婷精品国产一区二区三区 | 中文字幕久久综合 | sis色中色 | 成人欧美| 国产精品亚洲成在人线 | 久久夜视频| 国产精品伊人影院 | 欧美激情精品 | 一区久久 | 久久人人爽人人爽人人片av不 | 国产精品午夜电影 | 日韩精品久久 | 久久久久久久久久久久国产精品 | 日日日日日 | 91天堂在线观看 | 麻豆精品国产传媒 | 久久人妖 | 国产福利在线 | 亚洲高清视频一区 | 国产在线一二三区 | 天天干欧美 | 一区二区三区免费网站 | 免费黄色欧美 | 综合二区 | 国产免费看| 国产一级特黄毛片在线毛片 | 91资源在线| 精品国产伦一区二区三区观看说明 |