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

簡(jiǎn)析Android的垃圾回收與內(nèi)存泄露

移動(dòng)開(kāi)發(fā) Android
Android系統(tǒng)是運(yùn)行在Java虛擬機(jī)上的,作為嵌入式設(shè)備,內(nèi)存往往非常有限,了解Android的垃圾回收機(jī)制,可以有效的防止內(nèi)存泄露問(wèn)題或者OOM問(wèn)題。本文作為入門文章,將淺顯的討論垃圾回收與內(nèi)存泄露的原理,不討論Dalvik虛擬機(jī)底層機(jī)制或者native層面的問(wèn)題。

Android系統(tǒng)是運(yùn)行在Java虛擬機(jī)上的,作為嵌入式設(shè)備,內(nèi)存往往非常有限,了解Android的垃圾回收機(jī)制,可以有效的防止內(nèi)存泄露問(wèn)題或者OOM問(wèn)題。本文作為入門文章,將淺顯的討論垃圾回收與內(nèi)存泄露的原理,不討論Dalvik虛擬機(jī)底層機(jī)制或者native層面的問(wèn)題。

1. 基礎(chǔ)

在分析垃圾回收前,我們要復(fù)習(xí)Java與離散數(shù)學(xué)的基礎(chǔ)。

  • 實(shí)例化:對(duì)象是類的一個(gè)實(shí)例,創(chuàng)建對(duì)象的過(guò)程也叫類的實(shí)例化。對(duì)象是以類為模板來(lái)創(chuàng)建的。比如Car car = new Car();,我們就創(chuàng)造了一個(gè)Car的實(shí)例(Create new class instance of Car)
  • 引用:某些對(duì)象的實(shí)例化需要其它的對(duì)象實(shí)例,比如ImageView的實(shí)例化就需要Context對(duì)象,就是表示ImageView對(duì)于Context持有引用(ImageView holds a reference to Context)。
  • 有向圖:在每條邊上都標(biāo)有有向線段的圖稱為有向圖,Java中的garbage collection采用有向圖的方式進(jìn)行內(nèi)存管理,箭頭的方向表示引用關(guān)系,比如 B ← A ,就是B中需要A,B引用A。
  • 可達(dá):有向圖D={S,R}中,對(duì)于Si,Sj 屬于S,如果從Si到Sj有任何一條通路存在,則可稱Si可達(dá)Sj。也就是說(shuō),當(dāng)B ← A中間箭頭斷了,就稱作不可達(dá),這時(shí)A就不可達(dá)B了。
  • Shallow heap 與 Retain heap 的對(duì)比
    • Shallow heap表示當(dāng)前對(duì)象所消耗的內(nèi)存
    • Retained heap表示當(dāng)前對(duì)象所消耗的內(nèi)存加上它引用的內(nèi)存總合 

 

 

 

Google I/O 2011: Memory management for Android Apps

上圖的橙色的Object是該有向圖的起點(diǎn),它的Shallow heap是100,而它的Retained heap是100 + 300 = 400。

2. 什么是垃圾回收

Java GC(Garbage Collection,垃圾收集,垃圾回收)機(jī)制,是Java與C++/C的主要區(qū)別之一,作為Java開(kāi)發(fā)者,一般不需要專門編寫內(nèi)存回收和垃圾清理代碼,對(duì)內(nèi)存泄露和溢出的問(wèn)題,也不需要像C程序員那樣戰(zhàn)戰(zhàn)兢兢。這是因?yàn)樵贘ava虛擬機(jī)中,存在自動(dòng)內(nèi)存管理和垃圾清掃機(jī)制。概括地說(shuō),該機(jī)制對(duì)虛擬機(jī)中的內(nèi)存進(jìn)行標(biāo)記,并確定哪些內(nèi)存需要回收,根據(jù)一定的回收策略,自動(dòng)的回收內(nèi)存,永不停息(Nerver Stop)的保證虛擬機(jī)中的內(nèi)存空間,防止出現(xiàn)內(nèi)存泄露和溢出問(wèn)題。

3. 什么情況需要垃圾回收

對(duì)于GC來(lái)說(shuō),當(dāng)程序員創(chuàng)建對(duì)象時(shí),GC就開(kāi)始監(jiān)控這個(gè)對(duì)象的地址、大小以及使用情況。通常GC采用有向圖的方式記錄并管理堆中的所有對(duì)象,通過(guò)這種方式確定哪些對(duì)象時(shí)“可達(dá)”,哪些對(duì)象時(shí)“不可達(dá)”。當(dāng)對(duì)象不可達(dá)的時(shí)候,即對(duì)象不再被引用的時(shí)候,就會(huì)被垃圾回收。

網(wǎng)上有很多文檔介紹可達(dá)的關(guān)系了,如圖,在第六行的時(shí)候,o2改變了指向,Obj2就不再引用main的了,即他它們是不可達(dá)的,Obj2就可能在下次的GC中被回收。 

 

 

 

developerWorks Java technology

4. 什么是內(nèi)存泄露

當(dāng)你不再需要某個(gè)實(shí)例后,但是這個(gè)對(duì)象卻仍然被引用,防止被垃圾回收(Prevent from being bargage collected)。這個(gè)情況就叫做內(nèi)存泄露(Memory Leak)。

下面將以How to Leak a Context: Handlers & Inner Classes這篇文章翻譯為例,介紹一個(gè)內(nèi)存泄露。

看如下的代碼

  1. public class SampleActivity extends Activity { 
  2.  
  3.   private final Handler mLeakyHandler = new Handler() {    @Override 
  4.     public void handleMessage(Message msg) {      // ...  
  5.     } 
  6.   } 
  7.  

當(dāng)你打完這個(gè)代碼后,IDE應(yīng)該就會(huì)提醒你

  1. In Android, Handler classes should be static or leaks might occur. 

它到底是如何泄露的呢?

  1. 當(dāng)你啟動(dòng)一個(gè)application時(shí),它會(huì)自動(dòng)在主線程創(chuàng)建一個(gè)Looper對(duì)象,用于處理Handler中的message。Looper實(shí)現(xiàn)了簡(jiǎn)單的消息隊(duì)列,在循環(huán)中一個(gè)接一個(gè)的處理Message對(duì)象。大多數(shù)Application框架事件(比如Activity生命周期調(diào)用,按鈕點(diǎn)擊等)都在Message中,它們?cè)贚ooper的消息隊(duì)列中一個(gè)接一個(gè)的處理。注意Looper是存在于application整個(gè)生命周期中。
  2. 當(dāng)你新建了一個(gè)handler對(duì)象后,它會(huì)被分配給Looper的消息隊(duì)列。被發(fā)送到消息隊(duì)列的Message將保持對(duì)Handler的引用,因?yàn)楫?dāng)消息隊(duì)列處理到這個(gè)消息時(shí),需要使用[Handler#handleMessage(Message)](http://developer.android.com/reference/android/os/Handler.html#handleMessage(android.os.Message)這個(gè)方法。(也就是說(shuō),只要沒(méi)有處理到這個(gè)Message,Handler就一直在隊(duì)列中被引用)
  3. 在java中,非靜態(tài)的內(nèi)部Class與匿名Class對(duì)它們外部的Class有強(qiáng)引用。static inner class除外。 

 

 

 

引用關(guān)系

現(xiàn)在,我們嘗試運(yùn)行如下代碼

  1. public class SampleActivity extends Activity { 
  2.  
  3.   private final Handler mLeakyHandler = new Handler() {    @Override 
  4.     public void handleMessage(Message msg) {      // ... 
  5.     } 
  6.   }  @Override 
  7.   protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Post a message and delay its execution for 10 minutes. 
  8.     mLeakyHandler.postDelayed(new Runnable() {      @Override 
  9.       public void run() { /* ... */ } 
  10.     }, 1000 * 60 * 10);    // Go back to the previous Activity. 
  11.     finish(); 
  12.   } 
  13.  

這個(gè)程序很簡(jiǎn)單,我們可以腦補(bǔ)一下,它應(yīng)該是啟動(dòng)了又瞬間關(guān)閉,但是事實(shí)真的是關(guān)閉了嗎?

稍有常識(shí)的人可以看出,它發(fā)送了一個(gè)Message,將在十分鐘后運(yùn)行,也就是說(shuō)Message將被保持引用達(dá)到10分鐘,這就照成了至少10分鐘的內(nèi)存泄露。

最后正確的代碼如下

  1. ublic class SampleActivity extends Activity { 
  2.  
  3.   /** 
  4.    * Instances of static inner classes do not hold an implicit 
  5.    * reference to their outer class. 
  6.    */ 
  7.   private static class MyHandler extends Handler { 
  8.     private final WeakReference<SampleActivity> mActivity; 
  9.  
  10.     public MyHandler(SampleActivity activity) { 
  11.       mActivity = new WeakReference<SampleActivity>(activity); 
  12.     }    @Override 
  13.     public void handleMessage(Message msg) {      SampleActivity activity = mActivity.get();      if (activity != null) {        // ... 
  14.       } 
  15.     } 
  16.   }  private final MyHandler mHandler = new MyHandler(this);  /** 
  17.    * Instances of anonymous classes do not hold an implicit 
  18.    * reference to their outer class when they are "static"
  19.    */ 
  20.   private static final Runnable sRunnable = new Runnable() {      @Override 
  21.       public void run() { /* ... */ } 
  22.   };  @Override 
  23.   protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    // Post a message and delay its execution for 10 minutes. 
  24.     mHandler.postDelayed(sRunnable, 1000 * 60 * 10);    // Go back to the previous Activity. 
  25.     finish(); 
  26.   } 
  27.  

結(jié)論

  • GC是按照有向圖是否可達(dá)來(lái)判斷對(duì)象實(shí)例是否有用
  • 如果不在需要某個(gè)實(shí)例,卻仍然被引用,這個(gè)情況叫做內(nèi)存泄露
  • 匿名類/非靜態(tài)類內(nèi)部class會(huì)保持對(duì)它所在Activity的引用,使用時(shí)要注意它們的生命周期不能超過(guò)Activity,否則要用static inner class
  • 善于在Activy中的生命周期(比如onPause)中手動(dòng)控制其他類的生命周期

最后再補(bǔ)充一下iOS的情況,iOS在新版的OC與Swift中,已經(jīng)引入了新的內(nèi)存管理體系A(chǔ)RC(auto reference counting,引用自動(dòng)計(jì)數(shù)),C代碼在編譯時(shí),編譯器自動(dòng)適時(shí)的添加釋放內(nèi)存的代碼。

References

http://www.jianshu.com/p/22e73e80e950

http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/

http://stackoverflow.com/a/70358/4016014

http://blog.csdn.net/luoshengyang/article/details/8852432

http://developer.android.com/training/articles/perf-tips.html

https://techblog.badoo.com/blog/2014/08/28/android-handler-memory-leaks/

責(zé)任編輯:龐桂玉 來(lái)源: 安卓開(kāi)發(fā)精選
相關(guān)推薦

2014-12-19 11:07:40

Java

2011-08-15 16:28:06

Cocoa內(nèi)存管理

2018-07-17 08:58:57

垃圾回收內(nèi)存泄露方法

2023-12-19 21:52:51

Go垃圾回收開(kāi)發(fā)

2017-08-04 10:53:30

回收算法JVM垃圾回收器

2009-09-02 09:23:26

.NET內(nèi)存管理機(jī)制

2010-06-02 13:00:43

Linux 內(nèi)存監(jiān)控

2024-02-04 09:18:00

Python內(nèi)存管理垃圾回收

2017-04-25 14:39:55

JVM內(nèi)存Java

2023-05-31 09:00:00

2022-03-21 11:33:11

JVM垃圾回收器垃圾回收算法

2010-01-27 10:52:15

Android垃圾回收

2009-12-09 17:28:34

PHP垃圾回收機(jī)制

2022-01-20 10:34:49

JVM垃圾回收算法

2011-06-23 09:42:54

Android Mar應(yīng)用商店Android

2023-03-10 12:28:16

2013-01-15 09:14:20

2011-10-28 11:22:06

Android 4.0

2021-01-04 10:08:07

垃圾回收Java虛擬機(jī)

2011-12-14 13:14:05

點(diǎn)贊
收藏

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

中文亚洲免费| 99精品在免费线中文字幕网站一区 | 最近2019年日本中文免费字幕| 冲田杏梨av在线| 国产91在线视频蝌蚪| 成av人片一区二区| 国产精品久久久久久av| 欧美日韩人妻精品一区二区三区| 日本久久成人网| 欧美日韩三级一区| 青青草视频在线免费播放| 北岛玲一区二区三区| 国产精品一区一区| 国产精品xxxxx| 国产一级视频在线| 日韩精品免费一区二区在线观看 | 亚洲免费观看在线| 老司机2019福利精品视频导航| 国产精品国产馆在线真实露脸 | 色哟哟免费视频| 欧美成人资源| 一区二区不卡在线播放| 亚洲春色在线| 九一国产在线| 成人a免费在线看| 91免费看国产| 国产偷人爽久久久久久老妇app| 激情综合视频| 久久天天躁狠狠躁夜夜av| 免费黄色在线视频| 国产女人18毛片水真多18精品| 欧美高清性hdvideosex| 欧美精品第三页| 毛片在线网站| 亚洲午夜精品一区二区三区他趣| 在线国产伦理一区| 91看片在线观看| 久久久青草青青国产亚洲免观| 国产日韩二区| 精品人妻无码一区二区三区蜜桃一| 日韩成人一区二区| 欧美在线观看视频| 成年人午夜视频| 欧美特黄一区| 色与欲影视天天看综合网| 黄色录像免费观看| 人人狠狠综合久久亚洲婷婷| 一本一本久久a久久精品综合小说| 疯狂揉花蒂控制高潮h| 乱中年女人伦av一区二区| 精品成人私密视频| 国产人妻黑人一区二区三区| 99精品中文字幕在线不卡 | 国产福利在线视频| 国产亚洲欧美激情| 日韩片电影在线免费观看| 男人天堂资源在线| 久久久久国色av免费看影院| 欧美精品免费观看二区| 亚洲aⅴ在线观看| 91老师片黄在线观看| 久久国产主播精品| 国产天堂素人系列在线视频| 国产午夜精品理论片a级大结局| 日本精品免费| 9i精品一二三区| 中文字幕亚洲成人| a级片一区二区| sis001亚洲原创区| 黄色一区二区在线| 男女av免费观看| 中文另类视频| 777a∨成人精品桃花网| 亚洲精品久久久久久| 精品国产18久久久久久洗澡| 亚洲精品国产综合久久| 巨胸大乳www视频免费观看| 国产免费av一区二区三区| 色老头一区二区三区| 日韩欧美123区| 一区在线观看| 全球成人中文在线| 亚洲在线免费观看视频| 国产精品一二一区| 久久久水蜜桃| 蜜桃视频在线观看免费视频网站www| 亚洲精品网站在线观看| 日韩国产一级片| 日韩在线短视频| 欧美一区二区播放| 魔女鞋交玉足榨精调教| 欧美成人激情| 午夜精品美女自拍福到在线| 超碰在线观看91| 国产在线麻豆精品观看| 国产在线一区二区三区播放| av在线资源站| 亚洲激情综合网| 黄色a级片免费| 日韩不卡在线视频| 亚洲天堂网在线观看| 青娱乐国产精品| 日韩高清不卡一区| 成人自拍网站| 日本高清中文字幕在线| 午夜天堂影视香蕉久久| 99热一区二区| 综合国产视频| 欧美另类暴力丝袜| 在线观看xxxx| 久久综合狠狠综合久久激情 | av中文字幕在线播放| 福利微拍一区二区| 男人的天堂免费| 欧美亚洲激情| 2019中文字幕在线免费观看| 99免费在线视频| 中文久久乱码一区二区| 无码人妻h动漫| 91精品啪在线观看国产爱臀 | 美女诱惑一区| 国产一区自拍视频| 尤物yw193can在线观看| 欧美日韩在线亚洲一区蜜芽| 激情综合丁香五月| 欧美三区美女| 亚洲一区中文字幕| 亚洲s色大片| 欧美在线观看你懂的| 亚洲一区二区三区综合| 午夜精品久久| 91精品国产高清久久久久久91裸体| av在线三区| 91成人免费在线视频| 国产国语性生话播放| 亚洲精品乱码| 国产高清在线一区| 丁香花在线影院| 精品少妇一区二区三区日产乱码 | 国产黄色大片免费看| 亚洲综合精品四区| 久久99九九| 国产黄大片在线观看| 欧美精品一区二区三区久久久| 少妇影院在线观看| 国产一区二三区好的| 少妇高潮流白浆| 日韩精品第二页| 波霸ol色综合久久| 国产福利资源在线| 亚洲尤物在线视频观看| 亚洲成年人av| 国产欧美短视频| 六月婷婷久久| 性高爱久久久久久久久| 亚洲最新av在线网站| 人人妻人人爽人人澡人人精品| 久久精品亚洲国产奇米99| 亚洲精品无码久久久久久| 亚洲精品无吗| 国产精品99久久99久久久二8| 国模精品一区二区| 欧美日精品一区视频| 婷婷丁香综合网| 国产资源精品在线观看| 51xx午夜影福利| 成人资源在线| 欧美专区福利在线| 香蕉视频国产在线观看| 日韩一卡二卡三卡四卡| 国产在线观看免费av| 91偷拍与自偷拍精品| 手机在线看福利| 一区二区三区午夜探花| 国产欧美韩日| 精品无人乱码一区二区三区| 精品国产一区久久久| 丰满人妻一区二区三区无码av | 艹b视频在线观看| 久久久久久久久久久久久久久久久久 | 中文字幕 久热精品 视频在线| 日本黄色福利视频| 在线不卡亚洲| 亚洲成人蜜桃| 国产精品调教| 国产精品久久久久久一区二区| 国产视频在线播放| 亚洲国产三级网| 中文字幕激情视频| 亚洲午夜国产一区99re久久| 无码人妻aⅴ一区二区三区69岛| 狠狠色狠狠色综合日日91app| 日本a视频在线观看| 日韩av片子| 国产精品一区二区三区四区五区| se69色成人网wwwsex| 欧美激情视频免费观看| 成人在线观看一区| 日韩欧美激情在线| 中国精品一区二区| 亚洲成人精品影院| 国产精品suv一区二区88| 99久久er热在这里只有精品15| 黄色三级视频在线| 亚洲人人精品| 无码毛片aaa在线| 精品在线99| 国产伦精品一区二区三区在线| 久久av影院| 热99在线视频| 国产三级电影在线播放| 欧美成在线视频| av网站在线播放| 亚洲欧美国产精品专区久久| 性猛交xxxx乱大交孕妇印度| 欧美日韩一区二区三区在线看| 日韩乱码一区二区| 玉米视频成人免费看| 三级黄色免费观看| 国产片一区二区| 亚洲国产无码精品| 波波电影院一区二区三区| 911av视频| 免费不卡在线观看| 亚洲黄色a v| 久久久水蜜桃av免费网站| 福利在线一区二区| 女主播福利一区| 欧美a级黄色大片| 91精品综合久久久久久久久久久 | 欧美色图12p| 少妇太紧太爽又黄又硬又爽| 亚洲v精品v日韩v欧美v专区| 国产精品18p| 一个色妞综合视频在线观看| 亚洲不卡在线播放| 亚洲视频一二区| 久久爱一区二区| 亚洲欧洲性图库| 老司机深夜福利网站| 国产精品看片你懂得| 久久久久久久久福利| 国产日韩视频一区二区三区| 精品国产成人亚洲午夜福利| 久久久久久久综合| 女人又爽又黄免费女仆| 久久久久88色偷偷免费| 97伦伦午夜电影理伦片| 国产午夜一区二区三区| 亚洲ⅴ国产v天堂a无码二区| 国产人成亚洲第一网站在线播放| 免费污网站在线观看| 久久精品一二三| 日本一区二区视频在线播放| 国产精品丝袜91| 5566中文字幕| 亚洲自拍偷拍网站| 日韩av在线天堂| 一本到不卡精品视频在线观看| 伊人久久久久久久久久久久| 欧美三级欧美一级| 国产精品嫩草影院精东| 日韩午夜激情免费电影| 欧美熟妇另类久久久久久不卡| 亚洲国产精品免费| 国产在线网站| 精品国内产的精品视频在线观看| 午夜伦理大片视频在线观看| 国内精品久久久久影院 日本资源 国内精品久久久久伊人av | 国产成人在线免费看| 狂野欧美一区| 亚洲在线观看网站| jiyouzz国产精品久久| 美女久久久久久久久久| 国产精品卡一卡二卡三| 国产在线视频卡一卡二| 精品免费在线观看| 中文字幕人妻互换av久久| 欧美一区二区三区视频在线观看| 日韩永久免费视频| 一区二区三区精品99久久| 在线播放免费av| 5278欧美一区二区三区| 狠狠久久伊人中文字幕| 国产精品视频500部| 精品免费一区二区| 国产成人亚洲综合无码| 美女国产精品| 男男受被啪到高潮自述| 2020国产精品自拍| 国产精品白丝喷水在线观看| 五月天精品一区二区三区| 中文字幕免费播放| 亚洲国产精久久久久久| 日本网站在线免费观看视频| 97在线观看免费| 欧美高清你懂的| 国产精品sss| 精品国产乱码久久久| 男同互操gay射视频在线看| 老鸭窝毛片一区二区三区| 亚洲成人激情小说| 中文字幕巨乱亚洲| 日韩精品视频免费播放| 7777精品伊人久久久大香线蕉超级流畅 | 精品久久久久久久久久久久久久久| 国产免费永久在线观看| 欧美日本中文字幕| 国产精品无码久久久久| 黑人巨大精品欧美一区二区小视频| 久久亚洲精品中文字幕蜜潮电影| av女优在线播放| 国产在线日韩欧美| 91导航在线观看| 日韩欧美福利视频| 黄色三级网站在线观看| 久久精品一本久久99精品| 亚洲人免费短视频| 精品国产aⅴ麻豆| 国产字幕视频一区二区| 伊人五月天婷婷| 国产精品理论片| 国产一级精品毛片| 亚洲人成在线观看| 人在线成免费视频| 狠狠色综合欧美激情| 午夜久久久久| 永久免费黄色片| 亚洲欧美一区二区三区孕妇| 又污又黄的网站| 一本一本久久a久久精品牛牛影视| 悠悠资源网亚洲青| 国产精品一区二区三区观看 | 粗暴91大变态调教| 93久久精品日日躁夜夜躁欧美| 中文字幕第28页| 欧美α欧美αv大片| 亚洲电影视频在线| 999视频在线观看| 一级毛片免费高清中文字幕久久网| 国产成年人视频网站| 国产精品成人网| 国产精品天天操| 欧美成人精品一区二区| 深夜福利一区| 青青草精品视频在线| 不卡欧美aaaaa| 亚洲欧美综合自拍| 亚洲香蕉av在线一区二区三区| 亚洲欧美se| 日韩成人av电影在线| 免费在线观看精品| 少妇高潮一区二区三区喷水| 91精品久久久久久久91蜜桃 | 亚洲国产成人精品视频| 懂色av成人一区二区三区| 久久久久久九九九| 奇米影视777在线欧美电影观看| 欧美成人一区二区在线观看| 91蝌蚪国产九色| 日韩乱码一区二区三区| 色综合伊人色综合网站| 中文字幕日本一区| 毛片av在线播放| 91网页版在线| 亚洲视频在线观看免费视频| 麻豆成人在线看| 精品欧美午夜寂寞影院| 成人在线观看黄| 亚洲欧洲日韩在线| 高潮毛片7777777毛片| 538国产精品视频一区二区| 欧美精品一区二区三区精品| www.久久91| 亚洲高清中文字幕| 国内在线精品| 97人人干人人| 久久综合亚州| 91porn在线视频| 日韩美女av在线| 欧美v亚洲v综合v国产v仙踪林| 精品久久久无码人妻字幂| 91在线播放网址| 在线观看国产精品视频| 欧美精品久久久久久久久| 国产日产一区| 午夜诱惑痒痒网| 欧美日韩在线视频一区| 蜜桃视频在线观看www社区 | 成人全视频高清免费观看| 91精品啪aⅴ在线观看国产| 亚洲三级毛片| 久久人妻无码aⅴ毛片a片app | 黄色国产网站在线播放| 精品无人乱码一区二区三区的优势| 日韩国产欧美在线视频| 国产一级在线播放| 自拍偷拍亚洲精品| 欧美一性一交| 久久精品无码一区二区三区毛片|