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

抖音 Android 性能優(yōu)化系列:Java 鎖優(yōu)化

原創(chuàng) 精選
移動(dòng)開發(fā) 移動(dòng)應(yīng)用
本文將著重向大家介紹 Slardar 線上鎖監(jiān)控方案的原理與使用方法,以及我們在抖音上發(fā)現(xiàn)的鎖的經(jīng)典案例與優(yōu)化實(shí)踐。

背景

Java 多線程開發(fā)中為了保證數(shù)據(jù)的一致性,引入了同步鎖(synchronized)。但是,對鎖的過度使用,可能導(dǎo)致卡頓問題,甚至 ANR:

  • Systrace 中的主線程因?yàn)榈孺i阻塞了繪制,導(dǎo)致卡頓

圖片

圖片

  • Slardar 平臺(tái)(字節(jié)跳動(dòng)內(nèi)部 APM 平臺(tái),以下簡稱 Slardar)中搜索 waiting to lock 關(guān)鍵字發(fā)現(xiàn)很多鎖導(dǎo)致的 ANR,僅 Java 鎖異常占到總 ANR 的 3.9%

圖片

本文將著重向大家介紹 Slardar 線上鎖監(jiān)控方案的原理與使用方法,以及我們在抖音上發(fā)現(xiàn)的鎖的經(jīng)典案例與優(yōu)化實(shí)踐。

監(jiān)控方案

獲取運(yùn)行時(shí)鎖信息的方法有以下幾種

方案

應(yīng)用范圍

特點(diǎn)

systrace

線下

  1. 可以發(fā)現(xiàn)鎖導(dǎo)致的耗時(shí)
  2. 沒有調(diào)用棧

定制 ROM

線下

  1. 可以支持調(diào)用棧
  2. 修改 ROM 門檻較高,僅支持特定機(jī)型

JVMTI

線下

  1. 只支持 Android8+ 設(shè)備
  2. 不支持 release 包,且性能開銷較大

考慮到,很多鎖問題需要一定規(guī)模的線上用戶才能暴露出來,另外沒有調(diào)用棧難以從根本上定位和解決線上用戶的鎖問題。最終我們自研了一套線上鎖監(jiān)控系統(tǒng),它需要滿足以下要求:

  • 線上監(jiān)控方案
  • 豐富的鎖信息,包括 Java 調(diào)用棧
  • 數(shù)據(jù)分析平臺(tái),包括聚合能力,設(shè)備和版本信息等
  • 可納入開發(fā)和合碼流程,防止不良代碼上線

這樣的鎖監(jiān)控系統(tǒng),能夠幫助我們高效定位和解決線上問題,并實(shí)現(xiàn)防劣化。

鎖監(jiān)控原理

我們先從 Systrace 入手,有一類常見的耗時(shí)叫做 monitor contention,其實(shí)是 Android ART 虛擬機(jī)輸出的鎖信息。

圖片

簡單介紹一下里面的信息

monitor contention with owner work_thread (27176) at android.content.res.Resources android.app.ResourcesManager.getOrCreateResources(android.os.IBinder, android.content.res.ResourcesKey, java.lang.ClassLoader)(ResourcesManager.java:901) waiters=1 blocking from java.util.ArrayList android.app.ActivityThread.collectComponentCallbacks(boolean, android.content.res.Configuration)(ActivityThread.java:5836)
  • 持鎖線程:work_thread
  • 持鎖線程方法:android.app.ResourcesManager.getOrCreateResources(...)
  • 等待線程 1 個(gè)
  • 等鎖方法:android.app.ActivityThread.collectComponentCallbacks(...)

Java 鎖,無論是同步方法還是同步塊,虛擬機(jī)最終都會(huì)到 MonitorEnter。我們關(guān)注的 trace 是 Android 6 引入的, 在鎖的開始和結(jié)束時(shí)分別調(diào)用ATRACE_BEGIN(...)? 和 ATRACE_END()

圖片

圖片

線上方案

默認(rèn)情況下 atrace 是關(guān)閉的,開關(guān)在 ATRACE_ENABLED() 中。我們通過設(shè)置 atrace_enabled_tags 為 ATRACE_TAG_DALVIK 可以開啟當(dāng)前進(jìn)程的 ART 虛擬機(jī)的 atrace。

再看 ATRACE_BEGIN(...)? 和 ATRACE_END() 的實(shí)現(xiàn),其實(shí)是用 write 將字符串寫入一個(gè)特殊的 atrace_marker_fd (/sys/kernel/debug/tracing/trace_marker)。

圖片

圖片

因此通過 hook libcutils.so 的 write 方法,并按 atrace_marker_fd 過濾,就實(shí)現(xiàn)了對 ATRACE_BEGIN(...)? 和 ATRACE_END()? 的攔截。有了 BEGIN 和 END 后可以計(jì)算出阻塞時(shí)長,解析 monitor contention with owner... 日志可以得到我們關(guān)注的 Java 鎖信息。

獲取堆棧

到目前為止,我們已經(jīng)可以監(jiān)控到線上用戶的鎖問題。但是還不夠,為了能夠優(yōu)化鎖的性能,我們想需要知道等鎖的具體原因,也就是 Java 調(diào)用棧。

獲取 Java 調(diào)用棧,可以使用Thread.getStackTrace()方法。由于我們 hook 住了虛擬機(jī)的等鎖線程,此時(shí)線程處于一種特殊狀態(tài),不可以直接通過 JNI 調(diào)用 Java 方法,否則導(dǎo)致線上 crash 問題。

圖片

解決方案是異步獲取堆棧,在 MonitorBegin 的時(shí)候通知子線程 5ms 之后抓取堆棧,MonitorEnd 計(jì)算阻塞時(shí)長,并結(jié)合堆棧數(shù)據(jù)一起放入隊(duì)列,等待上報(bào) Slardar。如果 MonitorEnd 時(shí)不滿足 5ms 則取消抓棧和上報(bào)

圖片

數(shù)據(jù)平臺(tái)

由于方案本身有一定性能開銷,我們僅對灰度測試中的部分用戶開啟了鎖監(jiān)控。配置線上采樣后,命中的用戶將自動(dòng)開啟鎖監(jiān)控,數(shù)據(jù)上報(bào) Slardar 平臺(tái)后就可以消費(fèi)了。

圖片

具體 case 可以看到設(shè)備信息、阻塞時(shí)長、調(diào)用堆棧

圖片

根據(jù)調(diào)用棧查找源碼,可以定位到是哪一個(gè)鎖,說明上報(bào)數(shù)據(jù)是準(zhǔn)確的。

圖片

穩(wěn)定性方面,10 萬灰度用戶開啟鎖監(jiān)控后,無新增穩(wěn)定性問題。

圖片

圖片

優(yōu)化實(shí)踐

經(jīng)過多輪鎖收集和治理,我們?nèi)〉昧艘恍┎诲e(cuò)的收益,這里簡單介紹下鎖治理的幾個(gè)典型案例。

典型案例

inflate 鎖:?

先解析一下什么是 inflate:Android 中解析 xml 生成 View 樹的過程就叫做 inflate 過程。inflate 是一個(gè)耗時(shí)過程,常規(guī)的手段就是通過異步來減少其在主線程的耗時(shí),這樣大大的減少了卡頓、頁面打開和啟動(dòng)時(shí)長;但此方式也會(huì)帶來新的問題,比如 LayoutInflater 的 inflate 方法中有加鎖保護(hù)的代碼塊,并行構(gòu)建會(huì)造成鎖等待,可能反而增加主線程耗時(shí),針對這個(gè)問題有三種解決方案:

克隆 LayoutInflater

  • 把線程分為三類別:Main、工作線程和其它線程(野線程),Context(Activity 和 App)為每個(gè)類別提供專有 LayoutInflater,這樣能有效的規(guī)避 inflate 鎖。
  • 優(yōu)點(diǎn):實(shí)現(xiàn)簡單、兼容性好
  • 缺點(diǎn):LayoutInflater 中非安全的靜態(tài)屬性在并發(fā)情況下有概率產(chǎn)生穩(wěn)定性問題

code 構(gòu)造替代 xml 構(gòu)造

  • 這種方式完美的繞開了 inflate 操作,極大提高了 View 構(gòu)造速度。
  • 優(yōu)點(diǎn):復(fù)雜度高、性能好
  • 缺點(diǎn):影響編譯速度、View 自定義屬性需要做轉(zhuǎn)換、存在兼容性問題(比如廠商改屬性)

定制 LayoutInflater

  • 自定義 FastInflater(繼承自 LayoutInflater)替換系統(tǒng)的 PhoneLayoutInflater,重寫 inflate 操作,去掉鎖保護(hù);從統(tǒng)計(jì)數(shù)據(jù)看,在并發(fā)時(shí)快了約 4%。
  • 優(yōu)點(diǎn):復(fù)雜度高、性能好
  • 缺點(diǎn):存在兼容性,比如華為的 Inflater 為 HwPhoneLayoutInflater,無法直接替換。

圖片文件目錄鎖:

ContextImpl 中獲取目錄(cache、files、DB 和 preferenceDir)的實(shí)現(xiàn)有兩個(gè)關(guān)鍵耗時(shí)點(diǎn):1. 存在 IPC(IStorageManager.mkdir)和文件 check;2. 加鎖“nSync”保護(hù);所以 ipc 變長和并發(fā)存在,都可能導(dǎo)致 App 卡頓,如圖為 Anr 數(shù)據(jù):圖片圖片圖片

相關(guān)的常用 Api 有 getExternalCacheDir、getCacheDir、getFilesDir、getTheme 等,考慮到系統(tǒng)的部分目錄一般不會(huì)發(fā)生變化,所以我們可以對一些不會(huì)變化的目錄進(jìn)行 cache 處理,減少帶 鎖方法塊的執(zhí)行,從而有效的繞過鎖等待。

MessageQueue:

Android 子線程與主線程通訊的通用方式是向主線程 MessageQueue 中插入一個(gè)任務(wù)(message),等此任務(wù)(message)被主線程 Looper 調(diào)度執(zhí)行;所以 MessageQueue 中會(huì)對消息鏈表的修改加鎖保護(hù),主要實(shí)現(xiàn)在 enqueueMessage 和 next 兩個(gè)方法中。

利用 Slardar 采集線上鎖信息,根據(jù)這些信息,我們可以輕松追蹤鎖的執(zhí)有線程和 owner,最后根據(jù)情況將請求(message)移到子線程,這樣就可以極大的減輕主線程壓力和等鎖的可能性。此問題的修改方式并不復(fù)雜,重點(diǎn)在于如何監(jiān)控到這些執(zhí)鎖線程。

圖片序列化和反序列化:

抖音中有一些常用數(shù)據(jù)對象使用 Json 格式存儲(chǔ)。為保證這些數(shù)據(jù)的完整性,在讀取和存儲(chǔ)時(shí)加了鎖保護(hù),從而導(dǎo)致鎖等待比較常見,這種情況在啟動(dòng)場景特別明顯;所以要想減少鎖等待,就必段加快序列化和反序列化,針對這個(gè)問題,我們做了三個(gè)優(yōu)化方案:

  • Gson 反序列化的耗時(shí)集中在 TypeAdapter 的構(gòu)建,此過程利用反射創(chuàng)建 Filed 和 name(key)的映射表;所以我們在編譯時(shí)針對數(shù)據(jù)類創(chuàng)建對應(yīng)的 TypeAdapter,大大減少反序列化的時(shí)耗。
  • 部分類使用 parcel 序列化和反序列化,大大提高了速度,約減少 90%的時(shí)耗。
  • 大對像根據(jù)情況拆分成多個(gè)小對像,這樣可以減少鎖粒度,也就減少了鎖等待。以上方案在抖音項(xiàng)目中都有使用,取得了很不錯(cuò)的收益。

AssetManager 鎖:

獲取 string、size、color 或 xml 等資源的最終實(shí)現(xiàn)基本都封裝在 AssertManager 中,為了保證數(shù)據(jù)的正確性,加了鎖(對象 AssetManager)保護(hù),大致的調(diào)用關(guān)系如圖:圖片圖片

常用的調(diào)用點(diǎn)有:

  • View 構(gòu)造方法中調(diào)用 context.obtainStyledAttributes(...)獲取 TypedArray,最后都會(huì)調(diào)用 AssetManager 的帶鎖方法。
  • View 的 toString 也調(diào)用了 AssetManager 的帶鎖方法。

隨著 xml 異步 inflate 的增加,這些方法并發(fā)調(diào)用也增加,造成主線程的鎖等待也日漸突出,最終導(dǎo)致卡頓,針對這個(gè)問題,目前我們的優(yōu)化方案主要有:

  • 去掉多余的調(diào)用,比如 View 的 toString,這個(gè)常見于日志打印。
  • 一個(gè) Context 根據(jù)線程名提供不同的 AssetManager,繞過 AssetManager 對象鎖;此方法可能帶來一些內(nèi)存消耗。

So 加載鎖優(yōu)化:

Android 提供的加載 so 的接口實(shí)現(xiàn)都在封裝在 Runtime 中,比如常用的 loadLibrary0 和 load0,如圖 1 和 l 圖 2 所示,此方法是加了鎖的,如果并發(fā)加載 so 就會(huì)造成鎖等待。通過 Slardar 的監(jiān)控?cái)?shù)據(jù),我們驗(yàn)證了這個(gè)問題,同時(shí)也有一些意外收獲,比如平臺(tái)可能有自己的 so 需要加:圖片圖片圖片

我們根據(jù) so 的不同情況,主要有以下優(yōu)化思路:

  • 對于 cinit 加載的 so,我們可以提前在子線程中加載一下 cinit 的宿主類。
  • 業(yè)務(wù)層面的 so, 可以統(tǒng)一在子線程中進(jìn)行提前加載。
  • 使用 load0 替代 loadLibrary0,可以減少鎖中拼接 so 路徑的時(shí)耗。
  • so 文件加載優(yōu)化,比如 JNI_OnLoad。

ActivityThread:

在收集的的數(shù)據(jù)中我們也發(fā)現(xiàn)了一些系統(tǒng)層的框架鎖,比如下圖這個(gè):

圖片

這個(gè)問題主要集中在啟動(dòng)階段,ams 會(huì)發(fā) trim 通知給 ActivityThread 中的 ApplicationThread,收到通知后會(huì)向 Choreographer 的 commit 列表(此任務(wù)列表不作展開)中添加一個(gè) trim 任務(wù),也就是在下個(gè) vsync 到達(dá)時(shí)被執(zhí)行;

trim 過程主要包括收集 Applicatioin、Activity、Service、Provider 和向它們發(fā)送 trim 消息,也是系統(tǒng)提供給業(yè)務(wù)清理自身內(nèi)存的一個(gè)時(shí)機(jī);收集過程是加鎖(ResourcesManager)保護(hù)的,如圖:

圖片圖片圖片

考慮到啟動(dòng)階段并不太關(guān)心內(nèi)存的釋放,所以可以嘗試在啟動(dòng)階段,比如 40 秒內(nèi),不執(zhí)行 trim 操作;具體的實(shí)現(xiàn)是這樣,首先替換 Choreographer 的 FrameHandler, 這樣就能接管 vsync 的 doFrame 操作,在啟動(dòng) 40 秒內(nèi)的每次 vsync 主動(dòng) check 或刪除 commint 任務(wù)列表中的 trim 操作。

圖片

收益

在抖音中我們除了優(yōu)化前面列出的這些典型鎖外,還優(yōu)化了一些業(yè)務(wù)本身的鎖,部分已經(jīng)通過線上實(shí)驗(yàn)驗(yàn)證了收益,也有一些還在嘗試實(shí)驗(yàn)中;通過對實(shí)驗(yàn)中各指標(biāo)的分析,也證實(shí)了鎖優(yōu)化能帶來啟動(dòng)和流暢度等技術(shù)收益,間接帶來了不錯(cuò)的業(yè)務(wù)收益,這也堅(jiān)定了我們在這個(gè)方向上的繼續(xù)探索和深化。

小結(jié)

前面列出的只是有代表性的一些通用 Java 鎖,在實(shí)際開發(fā)中遇到的遠(yuǎn)比這多,但不管什么樣的鎖,都可以根據(jù)進(jìn)程和代碼歸屬分為以下四類:業(yè)務(wù)鎖、依賴庫鎖、框架鎖和系統(tǒng)鎖;

不同類型的鎖優(yōu)化思路也會(huì)不一樣,部分方案可以復(fù)用,部分只能 case-by-case 解決,具體的優(yōu)化方案有:減少調(diào)用、繞過調(diào)用、使用讀寫鎖和無鎖等。

圖片

分類

描述

進(jìn)程

代碼

優(yōu)化方案

業(yè)務(wù)鎖

源碼可見,可以直接修改;比如前面的序列化優(yōu)化。

App 進(jìn)程

包含

直接優(yōu)化;靜態(tài) aop

依賴庫鎖

包含編譯產(chǎn)物,可以修改產(chǎn)物

App 進(jìn)程

包含

直接優(yōu)化;靜態(tài) aop

框架鎖

運(yùn)行時(shí)加載,同時(shí)存在兼容性;比如前面提到的 inflate 鎖、AssetManager 鎖和 MessageQueue 鎖

App 進(jìn)程

不包含

減少調(diào)用;動(dòng)態(tài) aop

系統(tǒng)鎖

系統(tǒng)為 App 提供的服務(wù)和資源,App 間存在競爭,所以服務(wù)層需要加鎖保護(hù),比如 IPC、文件系統(tǒng)和數(shù)據(jù)庫等

服務(wù)進(jìn)程

不包含

減少調(diào)用

總結(jié)

經(jīng)過了長達(dá)半年的探索和優(yōu)化,此方案已在線上使用,作為我們?nèi)粘7懒踊椭鲃?dòng)優(yōu)化的輸入工具,我們評判的點(diǎn)主要有以下四個(gè):

  • 穩(wěn)定性:線上開啟后,ANR、Crash 和 OOM 和大盤一致。
  • 準(zhǔn)確性:從目前線上的消費(fèi)數(shù)據(jù)來看,這個(gè)值達(dá)到了 99%。
  • 擴(kuò)展性:業(yè)務(wù)可以根據(jù)場景開啟和關(guān)閉采集功能,也可以收集指定時(shí)間內(nèi)的鎖,比如啟動(dòng)階段可以收集 32ms 的鎖,其它階段收集 16ms 的鎖。
  • 劣化影響:從線上實(shí)驗(yàn)數(shù)據(jù)看,一定量(UV)的情況下,業(yè)務(wù)和性能(丟幀和啟動(dòng))無顯著劣化。

此方案雖然只能監(jiān)控 synchronized 鎖,像 CAS、Native 鎖、sleep 和 wait 都無法監(jiān)控,但在我們?nèi)粘i_發(fā)中synchronized 鎖占比非常大, 所以基本滿足了我們絕大部分的需求,當(dāng)然,我們也在持續(xù)探索其它鎖的監(jiān)控和驗(yàn)證其價(jià)值。

責(zé)任編輯:未麗燕 來源: 字節(jié)跳動(dòng)技術(shù)團(tuán)隊(duì)
相關(guān)推薦

2022-03-29 13:27:22

Android優(yōu)化APP

2022-04-28 15:07:41

抖音內(nèi)存泄漏Android

2024-06-13 17:10:16

2022-06-06 12:19:08

抖音功耗優(yōu)化Android 應(yīng)用

2019-07-25 13:22:43

AndroidAPK文件優(yōu)化

2025-07-30 09:36:47

2022-06-01 09:18:37

抖音ReDex算法優(yōu)化

2013-12-17 16:21:17

iOSiOS性能優(yōu)化

2023-11-03 17:02:18

抖音直播畫質(zhì)優(yōu)化

2021-07-29 14:20:34

網(wǎng)絡(luò)優(yōu)化移動(dòng)互聯(lián)網(wǎng)數(shù)據(jù)存儲(chǔ)

2023-03-03 15:43:23

抖音世界杯畫質(zhì)優(yōu)化

2019-12-13 10:25:08

Android性能優(yōu)化啟動(dòng)優(yōu)化

2021-11-09 09:57:46

Webpack 前端分包優(yōu)化

2013-09-16 15:16:20

Android性能優(yōu)化

2013-09-17 10:32:08

Android性能優(yōu)化數(shù)據(jù)庫

2021-09-03 09:44:13

移動(dòng)端性能優(yōu)化U-APM

2013-02-20 14:32:37

Android開發(fā)性能

2025-06-03 00:00:06

性能優(yōu)化性能指標(biāo)響應(yīng)時(shí)間

2024-11-13 08:47:24

2014-12-10 10:12:02

Web
點(diǎn)贊
收藏

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

日韩在线第七页| 久久亚洲精品爱爱| 91免费在线视频观看| 国产999在线| 亚洲最大的黄色网址| 大陆精大陆国产国语精品| 色哟哟一区二区在线观看 | 青青艹在线观看| 亚洲人metart人体| 亚洲а∨天堂久久精品喷水| 凹凸日日摸日日碰夜夜爽1| 久热国产在线| www.成人在线| 91久久久久久久久久| 欧美bbbbbbbbbbbb精品| 999国产精品视频| 日韩av网址在线| 午夜宅男在线视频| 欧亚在线中文字幕免费| 亚洲三级小视频| 日韩欧美手机在线| 头脑特工队2在线播放| 国产一区不卡视频| 国产精品久久久久91| 日韩三级免费看| 欧美.www| 久久精品国产成人| 欧美做受高潮6| 女人抽搐喷水高潮国产精品| 欧美一区二区国产| 欧美成人福利在线观看| 中文字幕 在线观看| 一区二区三区四区激情 | 给我免费观看片在线电影的| 亚洲成人高清| 欧美色视频一区| 青青在线免费观看视频| 深夜在线视频| 五月婷婷另类国产| 久艹在线免费观看| 污的网站在线观看| 亚洲欧洲综合另类| 中文字幕欧美日韩一区二区| 国产九九在线| 国产日韩视频一区二区三区| 欧美另类一区| 日韩二区三区| 久久亚洲精品小早川怜子| 精品国产一区二区三区免费| 亚洲免费视频网| 丰满少妇久久久久久久| av观看久久| 亚洲av无码乱码国产精品久久| 国精产品一区一区三区mba视频| 国产精品日韩欧美| 国产女优在线播放| 琪琪一区二区三区| 成人h猎奇视频网站| 97人妻精品一区二区三区视频 | 亚洲激情图片qvod| av动漫在线播放| 男女在线观看视频| 亚洲第一av色| 国产精品宾馆在线精品酒店| 欧美专区福利免费| 在线观看日韩国产| 欧美日韩在线视频首页| 久99九色视频在线观看| 特黄一区二区三区| 手机在线一区二区三区| 久久伊人色综合| 2021亚洲天堂| 亚洲精品1区2区| 欧美最猛性xxxxx(亚洲精品)| 超碰超碰超碰超碰| 男人操女人的视频在线观看欧美 | 色中文字幕在线观看| 成人av福利| 五月天婷婷综合| 不卡影院一区二区| 91国产精品| 精品国产免费人成在线观看| 国产精品揄拍100视频| 日韩欧美三级| 久久久久女教师免费一区| 亚洲熟女综合色一区二区三区| 日韩成人午夜电影| aa日韩免费精品视频一| 欧美日韩在线中文字幕| 中文字幕亚洲电影| 一卡二卡三卡视频| jizz亚洲女人高潮大叫| 日韩免费一区二区| 18禁裸乳无遮挡啪啪无码免费| 欧美丰满日韩| 午夜精品久久久久久99热软件| 中文字幕av第一页| 福利一区二区在线| 亚洲一卡二卡区| free性护士videos欧美| 欧美日韩国产精选| 免费观看一级一片| 亚洲二区三区不卡| 日韩av理论片| 狠狠躁夜夜躁av无码中文幕| 欧美经典一区二区| 国产二区视频在线| 玖玖精品在线| 亚洲欧美国产精品专区久久| 黑人巨大精品一区二区在线| 久久久久久婷| 国产精品欧美久久| 国产福利电影在线| 精品久久久久久| 人妻少妇偷人精品久久久任期| 九九久久电影| 亚州国产精品久久久| 国产一区二区三区四区视频| 久久麻豆一区二区| 日韩人妻无码精品久久久不卡| 祥仔av免费一区二区三区四区| 亚洲欧美国产制服动漫| 久久精品女人毛片国产| 麻豆传媒一区二区三区| 日本成人三级| 在线男人天堂| 亚洲第一区在线观看| 欧美精品一区二区蜜桃| 久久99蜜桃精品| 日本不卡二区| 中文字幕在线官网| 日韩av在线网| 永久免费看片在线播放| 丁香婷婷综合色啪| 在线观看17c| 国产亚洲亚洲国产一二区| 在线观看国产精品91| 日韩欧美在线观看免费| 久久一夜天堂av一区二区三区 | 日韩电影在线观看一区| 久久久久久精| 亚洲优女在线| 日韩国产在线播放| 一区二区三区福利视频| 91香蕉国产在线观看软件| heyzo亚洲| 国内精品国产成人国产三级粉色| 欧美高清视频在线播放| 成人午夜视频一区二区播放| 亚洲国产综合人成综合网站| 中文字幕乱妇无码av在线| 永久亚洲成a人片777777| 成人欧美一区二区三区在线湿哒哒| aaa日本高清在线播放免费观看| 日本黄色一区二区| 人妻少妇无码精品视频区| 日韩电影在线免费| 亚洲图片小说在线| 国产精品久久久久久久久久辛辛 | 狠狠色狠狠色综合| 91国在线高清视频| 粉嫩精品导航导航| 1769国产精品| 高清在线观看av| 欧美老肥妇做.爰bbww| 久久国产精品国语对白| 国产白丝网站精品污在线入口| www.成年人视频| 亚洲区小说区图片区qvod| 日韩av电影国产| 亚洲成人影院麻豆| 日韩精品专区在线影院观看 | 亚洲激情综合| 欧洲高清一区二区| 亚洲日本中文| 98精品在线视频| 草碰在线视频| 日韩欧美不卡在线观看视频| 日韩av无码中文字幕| 久久久午夜精品| 久久精品亚洲天堂| 亚洲激情不卡| 亚洲日本精品| 福利电影一区| 国产日本欧美一区二区三区| 色老头在线观看| 亚洲欧美中文日韩在线| 国产绿帽一区二区三区| 婷婷成人综合网| 在线视频这里只有精品| 成人一区在线观看| 9久久婷婷国产综合精品性色| 一区二区三区午夜视频| 久久久久久久久久久久久久一区 | 亚洲免费一级电影| av一级黄色片| 欧美亚洲丝袜传媒另类| 久草视频手机在线观看| 欧美激情一区二区| 男人网站在线观看| 久久精品国产亚洲aⅴ| 美女日批免费视频| 91青青国产在线观看精品| 精品蜜桃一区二区三区| 日韩一级特黄| 情事1991在线| 免费网站在线观看人| 在线色欧美三级视频| 人妻中文字幕一区| 在线成人av网站| 日本黄色中文字幕| 亚洲成av人片在线观看无码| 四虎884aa成人精品| 久久久久久久久免费| 怡红院一区二区| 国产美女精品在线| 欧美成人黄色网址| 国产视频欧美| 欧美狂野激情性xxxx在线观| 国产精品传媒精东影业在线| 欧美一区二区高清在线观看| 开心激情综合| 国产精品视频500部| 久久av网站| 成人国产精品日本在线| 欧美日韩女优| 日本一区二区三区四区视频| av伦理在线| 久久久免费av| 后进极品白嫩翘臀在线播放| 久久精品国产电影| 麻豆网站视频在线观看| 中文字幕免费精品一区| 成年人视频在线看| 亚洲人成电影网| 欧美精品a∨在线观看不卡| 日韩毛片在线观看| 无码精品一区二区三区在线| 亚洲精品在线观看视频| 午夜精品久久久久久久99热黄桃| 欧美高清视频www夜色资源网| 中文在线观看av| 在线观看av一区| 超碰在线97观看| 欧美色爱综合网| 亚洲图片在线播放| 欧美日韩电影一区| 91亚洲国产成人精品一区| 欧美日韩激情一区二区三区| 91精品国产乱码久久| 欧美裸体bbwbbwbbw| 亚洲中文字幕一区二区| 69久久夜色精品国产69蝌蚪网| 国产精品人人爽| 日韩免费性生活视频播放| 性生活黄色大片| 亚洲国产成人久久综合| 欧美3p视频在线观看| 国产一区二区三区免费视频| p色视频免费在线观看| 日韩视频在线免费观看| sm国产在线调教视频| 欧美激情精品久久久久久免费印度| 欧美人与性动交α欧美精品济南到| 欧美激情奇米色| 瑟瑟视频在线看| 国产精品看片资源| 91麻豆精品一二三区在线| 国产高清不卡av| 亚洲激情播播| 中文字幕欧美日韩一区二区三区| 欧美日本久久| 国产女女做受ⅹxx高潮| 美日韩一区二区三区| 国产又粗又猛又爽又黄| 99精品久久只有精品| 极品人妻videosss人妻| 亚洲人成人一区二区在线观看 | 色狠狠桃花综合| 国产精品久久久久久久久久久久久久久久久久 | 国产又粗又猛又黄又爽无遮挡| 91精品国产高清一区二区三区| 国产成人手机在线| 国产亚洲欧美视频| 午夜av在线免费观看| 欧美在线播放视频| 日韩免费在线电影| 国内精品**久久毛片app| 成人激情免费视频| 天堂8在线天堂资源bt| 午夜一级在线看亚洲| 一个色综合久久| 91在线视频官网| 神马午夜精品91| 天天综合色天天综合色h| 一级黄色录像大片| 亚洲成人激情图| 麻豆传媒免费在线观看| 57pao成人永久免费视频| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 最新超碰在线| 国产精品扒开腿做爽爽爽男男| 久久三级中文| 视频在线精品一区| 亚洲裸体俱乐部裸体舞表演av| 日本不卡一区二区在线观看| 26uuu国产一区二区三区| 永久久久久久久| 在线观看视频欧美| 无码国产伦一区二区三区视频 | 欧美一区少妇| 亚洲人成久久| 免费人成视频在线播放| 欧美激情综合网| 四虎成人永久免费视频| 欧美一区二区三区公司| yw在线观看| 热99在线视频| 国产欧美三级电影| 成年丰满熟妇午夜免费视频| 美女脱光内衣内裤视频久久影院| 中国av免费看| 一区二区免费看| 国产毛片毛片毛片毛片| 中文字幕欧美亚洲| 日本精品不卡| 久久99精品久久久久久久青青日本| 中文字幕一区二区精品区| 日韩在线一区视频| 国产精品三级在线观看| 中文字幕高清在线免费播放| 精品无人区乱码1区2区3区在线| 男人天堂亚洲| 国产精品乱码视频| 国产主播一区| 99久久久无码国产精品性波多| 亚洲激情一二三区| www国产在线| 欧美大片在线影院| 日韩影片在线观看| 日韩视频 中文字幕| 国产麻豆精品theporn| 成年人午夜剧场| 日韩免费视频一区| 91超碰在线播放| 国产综合第一页| 亚洲视频播放| 偷拍夫妻性生活| 欧美性色欧美a在线播放| 北岛玲一区二区三区| 国产男人精品视频| 911久久香蕉国产线看观看| 色欲无码人妻久久精品| 亚洲一区二区五区| 手机看片福利永久| 欧美在线观看网站| 欧美日韩在线二区| 亚洲最大天堂网| 亚洲免费观看视频| 成人免费视频国产| 国产91|九色| 国产探花在线精品一区二区| 中文字幕亚洲乱码| 亚洲黄网站在线观看| 天天操天天操天天| 日本中文字幕久久看| 日韩在线精品| 久久久久亚洲av成人网人人软件| 亚洲国产精品天堂| 男人的天堂在线视频| 国产精品旅馆在线| 欧美日韩精品| av直播在线观看| 欧美日韩高清不卡| av中文字幕在线看| 日本亚洲导航| 国产一本一道久久香蕉| 九一国产在线观看| 久久精品国产成人| 久久资源综合| 日韩欧美国产片| 亚洲在线观看免费视频| 精品无人乱码| 91黄色国产视频| 久久亚洲欧洲| 国产va在线播放| 亚洲美女久久久| 国产精品视频首页| 哪个网站能看毛片| 有坂深雪av一区二区精品| 户外极限露出调教在线视频| 91网站免费看| 裸体素人女欧美日韩| 欧美成人手机视频| 尤物tv国产一区| 白嫩白嫩国产精品| 日本 片 成人 在线| 亚洲成人激情自拍| 黄色在线免费| 三区精品视频观看|