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

JVM內存模型及垃圾收集策略解析

開發 后端
垃圾收集器策略從20世紀60年代就已經流行起來了,相比于其他編程語言,Java語言是目前使用最多的依賴于垃圾收集器的語言。

JVM內存模型是Java的核心技術之一,之前51CTO曾為大家介紹過JVM分代垃圾回收策略的基礎概念,現在很多編程語言都引入了類似Java JVM的內存模型和垃圾收集器的機制,下面我們將主要針對Java中的JVM內存模型及垃圾收集的具體策略進行綜合的分析。

一 JVM內存模型

1.1 Java棧

Java棧是與每一個線程關聯的,JVM在創建每一個線程的時候,會分配一定的??臻g給線程。它主要用來存儲線程執行過程中的局部變量,方法的返回值,以及方法調用上下文。??臻g隨著線程的終止而釋放。StackOverflowError:如果在線程執行的過程中,??臻g不夠用,那么JVM就會拋出此異常,這種情況一般是死遞歸造成的。

1.2 堆

Java中堆是由所有的線程共享的一塊內存區域,堆用來保存各種JAVA對象,比如數組,線程對象等。

1.2.1 Generation

JVM堆一般又可以分為以下三部分:

JVM堆的三部分

◆ Perm

Perm代主要保存class,method,filed對象,這部門的空間一般不會溢出,除非一次性加載了很多的類,不過在涉及到熱部署的應用服務器的時候,有時候會遇到java.lang.OutOfMemoryError : PermGen space 的錯誤,造成這個錯誤的很大原因就有可能是每次都重新部署,但是重新部署后,類的class沒有被卸載掉,這樣就造成了大量的class對象保存在了perm中,這種情況下,一般重新啟動應用服務器可以解決問題。

◆ Tenured

Tenured區主要保存生命周期長的對象,一般是一些老的對象,當一些對象在Young復制轉移一定的次數以后,對象就會被轉移到Tenured區,一般如果系統中用了application級別的緩存,緩存中的對象往往會被轉移到這一區間。

◆ Young

Young區被劃分為三部分,Eden區和兩個大小嚴格相同的Survivor區,其中Survivor區間中,某一時刻只有其中一個是被使用的,另外一個留做垃圾收集時復制對象用,在Young區間變滿的時候,minor GC就會將存活的對象移到空閑的Survivor區間中,根據JVM的策略,在經過幾次垃圾收集后,任然存活于Survivor的對象將被移動到Tenured區間。

1.2.2 Sizing the Generations

JVM提供了相應的參數來對內存大小進行配置。正如上面描述,JVM中堆被分為了3個大的區間,同時JVM也提供了一些選項對Young,Tenured的大小進行控制。

JVM的相關參數

◆ Total Heap

-Xms :指定了JVM初始啟動以后初始化內存

-Xmx:指定JVM堆得最大內存,在JVM啟動以后,會分配-Xmx參數指定大小的內存給JVM,但是不一定全部使用,JVM會根據-Xms參數來調節真正用于JVM的內存

-Xmx -Xms之差就是三個Virtual空間的大小

◆ Young Generation

-XX:NewRatio=8意味著tenured 和 young的比值8:1,這樣eden+2*survivor=1/9

堆內存

-XX:SurvivorRatio=32意味著eden和一個survivor的比值是32:1,這樣一個Survivor就占Young區的1/34.

-Xmn 參數設置了年輕代的大小

◆ Perm Generation

-XX:PermSize=16M -XX:MaxPermSize=64M

Thread Stack

-XX:Xss=128K

1.3 堆棧分離的好處

呵呵,其它的先不說了,就來說說面向對象的設計吧,當然除了面向對象的設計帶來的維護性,復用性和擴展性方面的好處外,我們看看面向對象如何巧妙的利用了堆棧分離。如果從JAVA內存模型的角度去理解面向對象的設計,我們就會發現對象它完美的表示了堆和棧,對象的數據放在堆中,而我們編寫的那些方法一般都是運行在棧中,因此面向對象的設計是一種非常完美的設計方式,它完美的統一了數據存儲和運行。 #p#

二 JAVA垃圾收集器

2.1 垃圾收集簡史

垃圾收集提供了內存管理的機制,使得應用程序不需要在關注內存如何釋放,內存用完后,垃圾收集會進行收集,這樣就減輕了因為人為的管理內存而造成的錯誤,比如在C++語言里,出現內存泄露時很常見的。Java語言是目前使用最多的依賴于垃圾收集器的語言,但是垃圾收集器策略從20世紀60年代就已經流行起來了,比如Smalltalk,Eiffel等編程語言也集成了垃圾收集器的機制。

2.2 常見的垃圾收集策略

常見的垃圾收集策略

所有的垃圾收集算法都面臨同一個問題,那就是找出應用程序不可到達的內存塊,將其釋放,這里面得不可到達主要是指應用程序已經沒有內存塊的引用了,而在JAVA中,某個對象對應用程序是可到達的是指:這個對象被根(根主要是指類的靜態變量,或者活躍在所有線程棧的對象的引用)引用或者對象被另一個可到達的對象引用。

2.2.1 Reference Counting(引用計數)
 
引用計數是最簡單直接的一種方式,這種方式在每一個對象中增加一個引用的計數,這個計數代表當前程序有多少個引用引用了此對象,如果此對象的引用計數變為0,那么此對象就可以作為垃圾收集器的目標對象來收集。

優點:

簡單,直接,不需要暫停整個應用

缺點:

1.需要編譯器的配合,編譯器要生成特殊的指令來進行引用計數的操作,比如每次將對象賦值給新的引用,或者者對象的引用超出了作用域等。

2.不能處理循環引用的問題

2.2.2 跟蹤收集器

跟蹤收集器首先要暫停整個應用程序,然后開始從根對象掃描整個堆,判斷掃描的對象是否有對象引用,這里面有三個問題需要搞清楚:

JVM的跟蹤收集器

1.如果每次掃描整個堆,那么勢必讓GC的時間變長,從而影響了應用本身的執行。因此在JVM里面采用了分代收集,在新生代收集的時候minor gc只需要掃描新生代,而不需要掃描老生代。

2.JVM采用了分代收集以后,minor gc只掃描新生代,但是minor gc怎么判斷是否有老生代的對象引用了新生代的對象,JVM采用了卡片標記的策略,卡片標記將老生代分成了一塊一塊的,劃分以后的每一個塊就叫做一個卡片,JVM采用卡表維護了每一個塊的狀態,當JAVA程序運行的時候,如果發現老生代對象引用或者釋放了新生代對象的引用,那么就JVM就將卡表的狀態設置為臟狀態,這樣每次minor gc的時候就會只掃描被標記為臟狀態的卡片,而不需要掃描整個堆。具體如下圖:
3.GC在收集一個對象的時候會判斷是否有引用指向對象,在JAVA中的引用主要有四種:Strong reference,Soft reference,Weak reference,Phantom reference.

◆ Strong Reference

強引用是JAVA中默認采用的一種方式,我們平時創建的引用都屬于強引用。如果一個對象沒有強引用,那么對象就會被回收。

 

  1. public void testStrongReference(){  
  2. Object referent = new Object();  
  3. Object strongReference = referent;  
  4. referent = null;  
  5. System.gc();  
  6. assertNotNull(strongReference);  

 

◆ Soft Reference

軟引用的對象在GC的時候不會被回收,只有當內存不夠用的時候才會真正的回收,因此軟引用適合緩存的場合,這樣使得緩存中的對象可以盡量的再內存中待長久一點。

 

  1. Public void testSoftReference(){  
  2. String  str =  "test";  
  3. SoftReference<String> softreference = new SoftReference<String>(str);  
  4. str=null;  
  5. System.gc();  
  6. assertNotNull(softreference.get());  
  7. }  

 

◆ Weak reference

弱引用有利于對象更快的被回收,假如一個對象沒有強引用只有弱引用,那么在GC后,這個對象肯定會被回收。

 

  1. Public void testWeakReference(){  
  2. String  str =  "test";  
  3. WeakReference<String> weakReference = new WeakReference<String>(str);  
  4. str=null;  
  5. System.gc();  
  6. assertNull(weakReference.get());  
  7. }  

 

◆ Phantom reference

2.2.2.1 Mark-Sweep Collector(標記-清除收集器)

標記清除收集器最早由Lisp的發明人于1960年提出,標記清除收集器停止所有的工作,從根掃描每個活躍的對象,然后標記掃描過的對象,標記完成以后,清除那些沒有被標記的對象。

優點:

1 解決循環引用的問題

2 不需要編譯器的配合,從而就不執行額外的指令

缺點:

1.每個活躍的對象都要進行掃描,收集暫停的時間比較長。

2.2.2.2 Copying Collector(復制收集器)復制收集器將內存分為兩塊一樣大小空間,某一個時刻,只有一個空間處于活躍的狀態,當活躍的空間滿的時候,GC就會將活躍的對象復制到未使用的空間中去,原來不活躍的空間就變為了活躍的空間。復制收集器具體過程可以參考下圖:

JVM的復制收集器

優點:

1 只掃描可以到達的對象,不需要掃描所有的對象,從而減少了應用暫停的時間

缺點:

1.需要額外的空間消耗,某一個時刻,總是有一塊內存處于未使用狀態

2.復制對象需要一定的開銷

2.2.2.3 Mark-Compact Collector(標記-整理收集器)標記整理收集器汲取了標記清除和復制收集器的優點,它分兩個階段執行,在第一個階段,首先掃描所有活躍的對象,并標記所有活躍的對象,第二個階段首先清除未標記的對象,然后將活躍的的對象復制到堆得底部。標記整理收集器的過程示意圖請參考下圖:Mark-compact策略極大的減少了內存碎片,并且不需要像Copy Collector一樣需要兩倍的空間。#p#

JVM標記整理收集器

2.3 JVM的垃圾收集策略
 
GC的執行時要耗費一定的CPU資源和時間的,因此在JDK1.2以后,JVM引入了分代收集的策略,其中對新生代采用"Mark-Compact"策略,而對老生代采用了“Mark-Sweep"的策略。其中新生代的垃圾收集器命名為“minor gc”,老生代的GC命名為"Full Gc 或者Major GC".其中用System.gc()強制執行的是Full Gc.

2.3.1 Serial Collector

Serial Collector是指任何時刻都只有一個線程進行垃圾收集,這種策略有一個名字“stop the whole world",它需要停止整個應用的執行。這種類型的收集器適合于單CPU的機器。

Serial Copying Collector

此種GC用-XX:UseSerialGC選項配置,它只用于新生代對象的收集。1.5.0以后。-XX:MaxTenuringThreshold來設置對象復制的次數。當eden空間不夠的時候,GC會將eden的活躍對象和一個名叫From survivor空間中尚不夠資格放入Old代的對象復制到另外一個名字叫To Survivor的空間。而此參數就是用來說明到底From survivor中的哪些對象不夠資格,假如這個參數設置為31,那么也就是說只有對象復制31次以后才算是有資格的對象。這里需要注意幾個個問題:

◆  From Survivor和To survivor的角色是不斷的變化的,同一時間只有一塊空間處于使用狀態,這個空間就叫做From Survivor區,當復制一次后角色就發生了變化。

◆  如果復制的過程中發現To survivor空間已經滿了,那么就直接復制到old generation.

◆  比較大的對象也會直接復制到Old generation,在開發中,我們應該盡量避免這種情況的發生。

Serial  Mark-Compact Collector

串行的標記-整理收集器是JDK5 update6之前默認的老生代的垃圾收集器,此收集使得內存碎片最少化,但是它需要暫停的時間比較長。

2.3.2 Parallel Collector 

Parallel Collector主要是為了應對多CPU,大數據量的環境。Parallel Collector又可以分為以下兩種:

Parallel Copying Collector

此種GC用-XX:UseParNewGC參數配置,它主要用于新生代的收集,此GC可以配合CMS一起使用。1.4.1以后Parallel Mark-Compact Collector,此種GC用-XX:UseParallelOldGC參數配置,此GC主要用于老生代對象的收集。1.6.0

Parallel scavenging Collector

此種GC用-XX:UseParallelGC參數配置,它是對新生代對象的垃圾收集器,但是它不能和CMS配合使用,它適合于比較大新生代的情況,此收集器起始于jdk 1.4.0。它比較適合于對吞吐量高于暫停時間的場合,Serial gc和Parallel gc可以用如下的圖來表示:

Serial gc和Parallel gc圖解

2.3.3 Concurrent Collector

Concurrent Collector通過并行的方式進行垃圾收集,這樣就減少了垃圾收集器收集一次的時間,這種GC在實時性要求高于吞吐量的時候比較有用。此種GC可以用參數-XX:UseConcMarkSweepGC配置,此GC主要用于老生代和Perm代的收集。

并行方式垃圾收集

【編輯推薦】

  1. Java的未來:百家爭鳴的JVM
  2. 有關JVM處理Java數組方法的思考
  3. JVM分代垃圾回收策略的基礎概念
  4. JVM概念之Java對象的大小與引用類型
  5. JVM基礎概念總結:數據類型、堆與棧

 

責任編輯:王曉東 來源: JavaEye
相關推薦

2011-12-20 10:43:21

Java

2010-09-27 09:01:26

JVM分代垃圾回收

2010-09-27 12:42:15

JVM1.4.1JVM垃圾收集

2024-01-15 11:12:28

Go內存開發

2010-03-04 14:33:11

.NET垃圾收集

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2024-03-15 08:04:30

G1CMSJVM

2017-09-21 14:40:06

jvm算法收集器

2017-04-25 14:39:55

JVM內存Java

2022-05-06 22:13:56

JVM垃圾收集算法

2012-01-11 10:45:57

JavaJVM

2010-01-06 09:28:08

JVM分代垃圾回收

2011-12-05 12:51:58

JVMJava

2010-09-25 12:38:40

JVM內存模型

2020-10-26 13:42:28

Python算法垃圾

2024-08-26 08:58:50

2022-04-19 11:25:31

JVMZGC垃圾收集器

2024-12-30 08:03:08

2018-04-08 08:45:53

對象內存策略

2009-06-15 16:14:40

Java垃圾收集算法GC
點贊
收藏

51CTO技術棧公眾號

欧美日韩黄色大片| 久久99久久久欧美国产| 亚洲激情在线观看视频免费| 狠狠97人人婷婷五月| 九九热视频在线观看| 欧美一级播放| 久久久精品在线观看| 99久久久无码国产精品性波多| heyzo中文字幕在线| 国产喷白浆一区二区三区| 亚洲一区二区三区sesese| 欧美特黄aaaaaa| 国产韩日影视精品| 亚洲精品久久久久久久久久久 | 野外性满足hd| www.久久久.com| 欧美日韩中文字幕在线| 亚洲一区二区三区精品动漫| 无码国产色欲xxxx视频| 狠狠色丁香久久婷婷综合丁香| 91精品国产91久久久久| 国产极品美女在线| 免费成人结看片| 精品久久人人做人人爰| 亚洲不卡视频在线| caopen在线视频| 久久久久久黄色| 99九九视频| 亚洲在线精品视频| 噜噜噜91成人网| 韩国三级电影久久久久久| 亚洲AV成人无码网站天堂久久| 日本午夜精品久久久| 日韩三级免费观看| 色呦色呦色精品| 午夜精品成人av| 亚洲777理论| 成人性做爰片免费视频| 自拍视频在线| 中文字幕av不卡| 欧美一区国产一区| 天堂中文字幕在线| 成人av电影免费在线播放| 99re热精品| 99久久国产免费| 美国三级日本三级久久99 | 中文字幕欧美日韩一区二区| 国产在线小视频| 久久一二三国产| 久久96国产精品久久99软件| 日韩一区免费视频| 不卡视频在线观看| 黑人巨大精品欧美一区二区小视频 | 国模无码视频一区| 77成人影视| 精品播放一区二区| 四虎成人免费视频| 开心激情综合| 亚洲精品理论电影| 亚洲男人在线天堂| 天堂网av成人| 夜夜嗨av一区二区三区免费区| 可以直接看的无码av| 一区二区三区日本久久久| 亚洲精品日韩久久久| 女人又爽又黄免费女仆| 成人系列视频| 久久中文字幕国产| 草视频在线观看| 一区精品久久| 欧美中文字幕在线播放| 日批视频免费观看| 久草在线在线精品观看| 99精品欧美一区二区三区| 蜜桃视频污在线观看| 99精品久久只有精品| 日本一区视频在线播放| 米奇777四色精品人人爽| 一区二区三区中文字幕| 热99这里只有精品| 免费高清视频在线一区| 欧美一区二区三区四区高清| 黄色网址在线视频| 不卡在线一区二区| 精品视频9999| av片免费观看| 国产在线播放一区三区四| www.成人三级视频| 国产在线视频网站| 亚洲精品中文在线| av片中文字幕| 久久9999免费视频| 日韩高清欧美高清| 日本裸体美女视频| 国产精品毛片| 成人欧美一区二区三区黑人孕妇| 老牛影视av牛牛影视av| 亚洲国产精品精华液ab| 分分操这里只有精品| 99久久伊人| 亚洲大胆人体av| 美国黑人一级大黄| 在线日韩欧美| 91九色单男在线观看| 日韩资源在线| 亚洲影院免费观看| 男人添女人下面免费视频| 丁香婷婷成人| 久久中文字幕国产| 特级西西444www高清大视频| www.日本不卡| 国产精品免费看久久久无码| 激情开心成人网| 日韩美一区二区三区| 色屁屁草草影院ccyy.com| 亚洲黄色视屏| 亚洲一区二区中文| 亚洲免费视频一区二区三区| 欧美日韩国产限制| 丰满人妻一区二区三区大胸| jvid福利在线一区二区| 91精品国产免费久久久久久 | 北岛玲heyzo一区二区| 欧美一级久久久久久久大片| 韩国三级hd中文字幕| 99精品国产一区二区青青牛奶 | www.四虎成人| 成人午夜网址| 欧美激情一区二区久久久| 91女人18毛片水多国产| 国产欧美日韩另类视频免费观看 | 玖玖爱免费视频| 狠狠色丁香久久婷婷综合丁香| 特级西西444www大精品视频| 成人影院网站| 亚洲人成电影在线播放| 久久久午夜影院| 成人蜜臀av电影| www.夜夜爱| 亚洲精品午夜| 欧美激情按摩在线| 丰满熟妇乱又伦| 亚洲夂夂婷婷色拍ww47 | 91论坛在线播放| 香港三级韩国三级日本三级| 91精品国产自产在线丝袜啪 | 日韩黄色高清视频| 羞羞影院体验区| 91最新地址在线播放| 精品丰满人妻无套内射| 高清精品视频| 国内精品国产三级国产在线专| 亚洲第一免费视频| 亚洲综合一区在线| 亚洲天堂2024| 日韩视频在线一区二区三区| 久久久久欧美| 电影亚洲精品噜噜在线观看| 国产一区二区三区在线看 | 日韩亚洲欧美一区二区三区| 曰本女人与公拘交酡| 国产91精品欧美| 波多野结衣之无限发射| 夜色77av精品影院| 国产精品爽爽ⅴa在线观看| 欧美成年黄网站色视频| 日韩一区二区在线观看视频 | 亚洲区国产区| 欧美日韩成人一区二区三区| av高清一区| 久久精品电影一区二区| 亚洲第一天堂影院| 欧美日韩激情视频| jizz18女人高潮| 国产一区二区影院| 久久久久免费看黄a片app| 亚洲视频分类| 成人精品一区二区三区电影免费| 色呦呦在线看| 亚洲午夜女主播在线直播| 97人妻精品一区二区三区| 亚洲综合色自拍一区| 激情综合丁香五月| 久久精品国产精品亚洲精品| 日本香蕉视频在线观看| 色综合综合网| 亚洲xxx自由成熟| 亚洲十八**毛片| 日韩中文字幕视频在线| 欧日韩在线视频| 欧美性极品少妇| 黄色一级视频免费观看| 久久久综合视频| 91丝袜超薄交口足| 久久久久国产精品午夜一区| 一本二本三本亚洲码| 秋霞影院一区二区三区| 成人伊人精品色xxxx视频| 欧美13videosex性极品| 久久久91精品国产| 精品乱码一区二区三四区视频| 91精品国产综合久久精品性色| 91视频免费网址| 一区二区三区成人| 欧美激情视频二区| 99视频在线观看一区三区| gai在线观看免费高清| 国产精品嫩草99av在线| 日本一区二区三区四区五区六区| 午夜精品福利影院| 岛国视频一区| 国产精品一区二区三区av| 国产成人一区二区三区电影| 阿v视频在线观看| 欧美成人免费观看| 在线视频91p| 亚洲人成毛片在线播放| 国产 欧美 自拍| 欧美乱妇20p| 中文字幕一区二区人妻| 色哟哟亚洲精品| 日本三级一区二区| 亚洲一二三四在线观看| 侵犯稚嫩小箩莉h文系列小说| 国产午夜精品理论片a级大结局| 中文字幕第九页| 国产成人超碰人人澡人人澡| 中文字幕 欧美日韩| 人人狠狠综合久久亚洲| 激情六月丁香婷婷| 亚洲国产精品一区制服丝袜| 久久香蕉视频网站| 欧美日韩第一区| av磁力番号网| 最新国产精品久久久| 正义之心1992免费观看全集完整版| 国产在线观看91一区二区三区| 久久一区二区三区av| 视频福利一区| 欧美大陆一区二区| 日本一道高清一区二区三区| 精品一区二区三区自拍图片区| 成人台湾亚洲精品一区二区| 国产精品一区二| 伦理一区二区三区| 久久精品第九区免费观看 | 亚洲激情小视频| 五月天久久久久久| 亚洲精品日韩久久久| 精品一二三区视频| 中文字幕亚洲一区在线观看 | 欧美一区二区三区成人片在线| 精品毛片乱码1区2区3区| 亚洲第一页在线观看| 亚洲国产精品va在线| 色哟哟在线观看| 亚洲人成五月天| 天堂а√在线官网| 色妞一区二区三区| a级网站在线播放| 久久久视频在线| 日韩电影免费观| 国产精品夜间视频香蕉| 国产欧美88| 国产伦精品一区二区三区在线| 丝袜连裤袜欧美激情日韩| 欧美精品与人动性物交免费看| 精品国产乱码久久久久久蜜坠欲下| 亚洲v日韩v欧美v综合| 久久精品青草| 成人免费a级片| 老鸭窝亚洲一区二区三区| 久久这里只精品| 成人综合婷婷国产精品久久免费| yy1111111| 国产精品乱码妇女bbbb| 久久网免费视频| 色婷婷亚洲综合| 99久久精品日本一区二区免费 | 99伊人成综合| 性欧美极品xxxx欧美一区二区| 国产尤物一区二区| 88av在线播放| 国产精品美女久久福利网站| 久久久一二三区| 欧美亚洲愉拍一区二区| 精品国精品国产自在久不卡| 日韩精品视频中文在线观看| 日本中文字幕视频在线| 国自在线精品视频| 日韩成人在线一区| 久久日韩精品| 欧美aⅴ99久久黑人专区| 久久久精品在线视频| 国产麻豆精品一区二区| 小早川怜子久久精品中文字幕| 亚洲精品v日韩精品| 中文字幕在线欧美| 欧美成人精品1314www| 3p在线观看| 91精品国产自产91精品| 99国内精品久久久久| 欧美日韩国产高清视频| 国内精品久久久久久久影视蜜臀| 一区二区三区视频在线观看免费| 成人毛片在线观看| 91精品国产闺蜜国产在线闺蜜| 色婷婷精品久久二区二区蜜臂av| 国产高中女学生第一次| 深夜精品寂寞黄网站在线观看| 高清毛片在线观看| caoporen国产精品| 香蕉国产精品| 国内自拍视频网| 久久久亚洲综合| 日韩av一区二区在线播放| 欧美一区二区三区四区高清 | 国内精品久久久久久久| 不卡精品视频| 亚洲一区影院| 青青草国产精品亚洲专区无| 亚洲av片不卡无码久久| 亚洲一区二区在线免费观看视频| 91在线精品入口| 国产一区二区三区在线观看视频| 亚洲天堂免费电影| 国产欧美日韩在线播放| 韩日视频一区| 亚洲熟女乱综合一区二区| 亚洲美女屁股眼交3| 国产精品久久久国产盗摄| 一区二区av在线| 日韩成人高清| 欧美在线播放一区| 久久久久久一区二区| 女人被狂躁c到高潮| 亚洲v精品v日韩v欧美v专区| 亚洲免费不卡视频| 欧美激情免费视频| 懂色av一区二区| 久久综合九色综合88i| av中文字幕在线不卡| 99久在线精品99re8热| 日韩av在线电影网| 伊人网在线播放| 欧美日韩国产综合在线| 久久一区国产| 2019男人天堂| 欧美日韩成人高清| 麻豆视频在线观看免费网站| 成人网在线观看| 欧美日韩一区二区高清| 中国xxxx性xxxx产国| 精品人伦一区二区三区蜜桃网站 | 国产福利资源一区| 男女猛烈激情xx00免费视频| 99精品在线观看视频| 激情视频网站在线观看| 中文字幕少妇一区二区三区| 青青国产精品| 青草网在线观看| 91蜜桃视频在线| 中文字幕福利视频| 久久天堂av综合合色| 爱高潮www亚洲精品| 日本中文字幕网址| 欧美国产一区在线| av 一区二区三区| 97婷婷涩涩精品一区| 国产免费播放一区二区| 亚洲欧美偷拍另类| 亚洲综合色成人| 欧美女优在线观看| 国产自摸综合网| 激情亚洲网站| 久久久久久久毛片| 日韩精品一区二区三区在线播放| 激情黄产视频在线免费观看| 日本一区二区视频| 国产精品一二三在| 亚洲午夜18毛片在线看| 色多多国产成人永久免费网站 | 国产亚洲欧美日韩精品| 亚洲一区导航| 欧美成人一区二区在线观看| 国产精品看片你懂得| 手机在线精品视频| 国产欧美日韩高清| 国产欧美精品久久| 蜜桃av.com| 亚洲免费视频观看| 视频一区日韩| 丝袜制服一区二区三区| 亚洲观看高清完整版在线观看| 国产www.大片在线| 国产伦精品一区| 久久国产精品72免费观看| 日本网站在线播放| 久久影院资源网| 精品国精品国产自在久国产应用|