久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面经——JVM

發布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面经——JVM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

面經——JVM


目錄

  • JVM運行時內存劃分?PC+虛擬機棧+本地方法棧+堆+方法區+JDK1.7與1.8區別
  • 創建一個對象的步驟
  • 介紹下 Java 內存區域(運行時數據區)
  • Java 對象的創建過程(五步,建議能默寫出來并且要知道每一步虛擬機做了什么)
  • 對象的訪問定位的兩種方式(句柄和直接指針兩種方式)
  • 如何判斷對象是否死亡(兩種方法)。
  • 簡單的介紹一下強引用、軟引用、弱引用、虛引用(虛引用與軟引用和弱引用的區別、使用軟引用能帶來的好處)。
  • 如何判斷一個常量是廢棄常量
  • 如何判斷一個類是無用的類
  • 垃圾收集有哪些算法,各自的特點?
  • HotSpot 為什么要分為新生代和老年代?
  • 常見的垃圾回收器有哪些?
  • 介紹一下 CMS,G1 收集器。
  • Minor Gc 和 Full GC 有什么不同呢?
  • 類加載過程
  • 注:題目從牛客 Java部門面經整理而來,題目的解釋很多轉載自 JavaGuide 大佬的文章和參考其他一些博客,因為總結的太好了,就照搬了。
    2020秋招面經大匯總!(崗位劃分)
    Java 學習/面試指南


    1. JVM運行時內存劃分?PC+虛擬機棧+本地方法棧+堆+方法區+JDK1.7與1.8區別

    2. 創建一個對象的步驟

    3. 介紹下 Java 內存區域(運行時數據區)

    4. Java 對象的創建過程(五步,建議能默寫出來并且要知道每一步虛擬機做了什么)

    5. 對象的訪問定位的兩種方式(句柄和直接指針兩種方式)

    一 概述

    對于 Java 程序員來說,在虛擬機自動內存管理機制下,不再需要像 C/C++程序開發程序員這樣為每一個 new 操作去寫對應的 delete/free 操作,不容易出現內存泄漏和內存溢出問題。正是因為 Java 程序員把內存控制權利交給 Java 虛擬機,一旦出現內存泄漏和溢出方面的問題,如果不了解虛擬機是怎樣使用內存的,那么排查錯誤將會是一個非常艱巨的任務。

    二 運行時數據區域

    Java 虛擬機在執行 Java 程序的過程中會把它管理的內存劃分成若干個不同的數據區域。JDK. 1.8 和之前的版本略有不同,下面會介紹到。
    JDK 1.8 之前:

    JDK 1.8 :

    線程私有的:

    • 程序計數器
    • 虛擬機棧
    • 本地方法棧

    線程共享的:

    • 方法區
    • 直接內存 (非運行時數據區的一部分)
    2.1 程序計數器

    程序計數器是一塊較小的內存空間,可以看作是當前線程所執行的字節碼的行號指示器。字節碼解釋器工作時通過改變這個計數器的值來選取下一條需要執行的字節碼指令,分支、循環、跳轉、異常處理、線程恢復等功能都需要依賴這個計數器來完成。

    另外,為了線程切換后能恢復到正確的執行位置,每條線程都需要有一個獨立的程序計數器,各線程之間計數器互不影響,獨立存儲,我們稱這類內存區域為“線程私有”的內存。

    從上面的介紹中我們知道程序計數器主要有兩個作用:

  • 字節碼解釋器通過改變程序計數器來依次讀取指令,從而實現代碼的流程控制,如:順序執行、選擇、循環、異常處理。
  • 在多線程的情況下,程序計數器用于記錄當前線程執行的位置,從而當線程被切換回來的時候能夠知道該線程上次運行到哪兒了。
  • 注意:程序計數器是唯一一個不會出現 OutOfMemoryError 的內存區域,它的生命周期隨著線程的創建而創建,隨著線程的結束而死亡。

    2.2 Java 虛擬機棧

    與程序計數器一樣,Java 虛擬機棧也是線程私有的,它的生命周期和線程相同,描述的是 Java 方法執行的內存模型,每次方法調用的數據都是通過棧傳遞的。

    Java 內存可以粗糙的區分為堆內存(Heap)和棧內存 (Stack),其中棧就是現在說的虛擬機棧,或者說是虛擬機棧中局部變量表部分。 (實際上,Java 虛擬機棧是由一個個棧幀組成,而每個棧幀中都擁有:局部變量表、操作數棧、動態鏈接、方法出口信息。)

    局部變量表主要存放了編譯器可知的各種數據類型(boolean、byte、char、short、int、float、long、double)、對象引用(reference 類型,它不同于對象本身,可能是一個指向對象起始地址的引用指針,也可能是指向一個代表對象的句柄或其他與此對象相關的位置)。

    Java 虛擬機棧會出現兩種錯誤:StackOverFlowError 和 OutOfMemoryError。

    • StackOverFlowError: 若 Java 虛擬機棧的內存大小不允許動態擴展,那么當線程請求棧的深度超過當前 Java 虛擬機棧的最大深度的時候,就拋出 StackOverFlowError 錯誤。
    • OutOfMemoryError: 若 Java 虛擬機棧的內存大小允許動態擴展,且當線程請求棧時內存用完了,無法再動態擴展了,此時拋出 OutOfMemoryError 錯誤。

    Java 虛擬機棧也是線程私有的,每個線程都有各自的 Java 虛擬機棧,而且隨著線程的創建而創建,隨著線程的死亡而死亡。

    擴展:那么方法/函數如何調用?
    Java 棧可用類比數據結構中棧,Java 棧中保存的主要內容是棧幀,每一次函數調用都會有一個對應的棧幀被壓入 Java 棧,每一個函數調用結束后,都會有一個棧幀被彈出。

    Java 方法有兩種返回方式:

  • return 語句。
  • 拋出異常。
  • 不管哪種返回方式都會導致棧幀被彈出。

    2.3 本地方法棧

    和虛擬機棧所發揮的作用非常相似,區別是: 虛擬機棧為虛擬機執行 Java 方法 (也就是字節碼)服務,而本地方法棧則為虛擬機使用到的 Native 方法服務。 在 HotSpot 虛擬機中和 Java 虛擬機棧合二為一。

    本地方法被執行的時候,在本地方法棧也會創建一個棧幀,用于存放該本地方法的局部變量表、操作數棧、動態鏈接、出口信息。

    方法執行完畢后相應的棧幀也會出棧并釋放內存空間,也會出現 StackOverFlowError 和 OutOfMemoryError 兩種錯誤。

    2.4 堆

    Java 虛擬機所管理的內存中最大的一塊,Java 堆是所有線程共享的一塊內存區域,在虛擬機啟動時創建。此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例以及數組都在這里分配內存。

    Java 堆是垃圾收集器管理的主要區域,因此也被稱作GC 堆(Garbage Collected Heap)。從垃圾回收的角度,由于現在收集器基本都采用分代垃圾收集算法,所以 Java 堆還可以細分為:新生代和老年代。再細致一點有:Eden 空間、From Survivor、To Survivor 空間等。進一步劃分的目的是更好地回收內存,或者更快地分配內存。

    在 JDK 7 版本及JDK 7 版本之前,堆內存被通常被分為下面三部分:

  • 新生代內存(Young Generation)
  • 老生代(Old Generation)
  • 永生代(Permanent Generation)
  • JDK 8 版本之后方法區(HotSpot 的永久代)被徹底移除了(JDK1.7 就已經開始了),取而代之是元空間,元空間使用的是直接內存。


    上圖所示的 Eden 區、兩個 Survivor 區都屬于新生代(為了區分,這兩個 Survivor 區域按照順序被命名為 from 和 to),中間一層屬于老年代。

    大部分情況,對象都會首先在 Eden 區域分配,在一次新生代垃圾回收后,如果對象還存活,則會進入 s0 或者 s1,并且對象的年齡還會加 1(Eden 區->Survivor 區后對象的初始年齡變為 1),當它的年齡增加到一定程度(默認為 15 歲),就會被晉升到老年代中。對象晉升到老年代的年齡閾值,可以通過參數 -XX:MaxTenuringThreshold 來設置。

    修正(issue552):“Hotspot遍歷所有對象時,按照年齡從小到大對其所占用的大小進行累積,當累積的某個年齡大小超過了survivor區的一半時,取這個年齡和MaxTenuringThreshold中更小的一個值,作為新的晉升年齡閾值”。

    動態年齡計算的代碼如下

    uint ageTable::compute_tenuring_threshold(size_t survivor_capacity) {//survivor_capacity是survivor空間的大小size_t desired_survivor_size = (size_t)((((double) survivor_capacity)*TargetSurvivorRatio)/100);size_t total = 0;uint age = 1;while (age < table_size) {total += sizes[age];//sizes數組是每個年齡段對象大小if (total > desired_survivor_size) break;age++;}uint result = age < MaxTenuringThreshold ? age : MaxTenuringThreshold;... }

    堆這里最容易出現的就是 OutOfMemoryError 錯誤,并且出現這種錯誤之后的表現形式還會有幾種,比如:

    • OutOfMemoryError: GC Overhead Limit Exceeded : 當JVM花太多時間執行垃圾回收并且只能回收很少的堆空間時,就會發生此錯誤。
    • java.lang.OutOfMemoryError: Java heap space :假如在創建新的對象時, 堆內存中的空間不足以存放新創建的對象, 就會引發 java.lang.OutOfMemoryError: Java heap space 錯誤。(和本機物理內存無關,和你配置的對內存大小有關!)
    2.5 方法區

    方法區與 Java 堆一樣,是各個線程共享的內存區域,它用于存儲已被虛擬機加載的類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。雖然 Java 虛擬機規范把方法區描述為堆的一個邏輯部分,但是它卻有一個別名叫做 Non-Heap(非堆),目的應該是與 Java 堆區分開來。

    方法區也被稱為永久代。很多人都會分不清方法區和永久代的關系,為此我也查閱了文獻。

    2.5.1 方法區和永久代的關系

    《Java 虛擬機規范》只是規定了有方法區這么個概念和它的作用,并沒有規定如何去實現它。那么,在不同的 JVM 上方法區的實現肯定是不同的了。 方法區和永久代的關系很像 Java 中接口和類的關系,類實現了接口,而永久代就是 HotSpot 虛擬機對虛擬機規范中方法區的一種實現方式。 也就是說,永久代是 HotSpot 的概念,方法區是 Java 虛擬機規范中的定義,是一種規范,而永久代是一種實現,一個是標準一個是實現,其他的虛擬機實現并沒有永久代這一說法。

    2.5.2 常用參數

    JDK 1.8 之前永久代還沒被徹底移除的時候通常通過下面這些參數來調節方法區大小

    -XX:PermSize=N //方法區 (永久代) 初始大小
    -XX:MaxPermSize=N //方法區 (永久代) 最大大小,超過這個值將會拋出 OutOfMemoryError 異常:java.lang.OutOfMemoryError: PermGen

    相對而言,垃圾收集行為在這個區域是比較少出現的,但并非數據進入方法區后就“永久存在”了。

    JDK 1.8 的時候,方法區(HotSpot 的永久代)被徹底移除了(JDK1.7 就已經開始了),取而代之是元空間,元空間使用的是直接內存。

    下面是一些常用參數:

    -XX:MetaspaceSize=N //設置 Metaspace 的初始(和最小大小)
    -XX:MaxMetaspaceSize=N //設置 Metaspace 的最大大小

    與永久代很大的不同就是,如果不指定大小的話,隨著更多類的創建,虛擬機會耗盡所有可用的系統內存。

    2.5.3 為什么要將永久代 (PermGen) 替換為元空間 (MetaSpace) 呢?

    整個永久代有一個 JVM 本身設置固定大小上限,無法進行調整,而元空間使用的是直接內存,受本機可用內存的限制,雖然元空間仍舊可能溢出,但是比原來出現的幾率會更小。
    當你元空間溢出時會得到如下錯誤: java.lang.OutOfMemoryError: MetaSpace

    你可以使用 -XX:MaxMetaspaceSize 標志設置最大元空間大小,默認值為 unlimited,這意味著它只受系統內存的限制。-XX:MetaspaceSize 調整標志定義元空間的初始大小,如果未指定此標志,則 Metaspace 將根據運行時的應用程序需求動態地重新調整大小。

    元空間里面存放的是類的元數據,這樣加載多少類的元數據就不由 MaxPermSize 控制了, 而由系統的實際可用空間來控制,這樣能加載的類就更多了。

    在 JDK8,合并 HotSpot 和 JRockit 的代碼時, JRockit 從來沒有一個叫永久代的東西, 合并之后就沒有必要額外的設置這么一個永久代的地方了。


    2.6 運行時常量池

    運行時常量池是方法區的一部分。Class 文件中除了有類的版本、字段、方法、接口等描述信息外,還有常量池信息(用于存放編譯期生成的各種字面量和符號引用)

    既然運行時常量池是方法區的一部分,自然受到方法區內存的限制,當常量池無法再申請到內存時會拋出 OutOfMemoryError 錯誤。

    JDK1.7 及之后版本的 JVM 已經將運行時常量池從方法區中移了出來,在 Java 堆(Heap)中開辟了一塊區域存放運行時常量池。


    2.7 直接內存

    直接內存并不是虛擬機運行時數據區的一部分,也不是虛擬機規范中定義的內存區域,但是這部分內存也被頻繁地使用。而且也可能導致 OutOfMemoryError 錯誤出現。

    JDK1.4 中新加入的 NIO(New Input/Output) 類,引入了一種基于通道(Channel) 與緩存區(Buffer) 的 I/O 方式,它可以直接使用 Native 函數庫直接分配堆外內存,然后通過一個存儲在 Java 堆中的 DirectByteBuffer 對象作為這塊內存的引用進行操作。這樣就能在一些場景中顯著提高性能,因為避免了在 Java 堆和 Native 堆之間來回復制數據。

    本機直接內存的分配不會受到 Java 堆的限制,但是,既然是內存就會受到本機總內存大小以及處理器尋址空間的限制。


    三 HotSpot 虛擬機對象探秘

    通過上面的介紹我們大概知道了虛擬機的內存情況,下面我們來詳細的了解一下 HotSpot 虛擬機在 Java 堆中對象分配、布局和訪問的全過程。

    3.1 對象的創建

    下圖便是 Java 對象的創建過程,我建議最好是能默寫出來,并且要掌握每一步在做什么。

    Step1:類加載檢查
    虛擬機遇到一條 new 指令時,首先將去檢查這個指令的參數是否能在常量池中定位到這個類的符號引用,并且檢查這個符號引用代表的類是否已被加載過、解析和初始化過。如果沒有,那必須先執行相應的類加載過程。

    Step2:分配內存
    類加載檢查通過后,接下來虛擬機將為新生對象分配內存。對象所需的內存大小在類加載完成后便可確定,為對象分配空間的任務等同于把一塊確定大小的內存從 Java 堆中劃分出來。分配方式有 “指針碰撞” 和 “空閑列表” 兩種,選擇哪種分配方式由 Java 堆是否規整決定,而 Java 堆是否規整又由所采用的垃圾收集器是否帶有壓縮整理功能決定。

    內存分配的兩種方式:(補充內容,需要掌握)

    選擇以上兩種方式中的哪一種,取決于 Java 堆內存是否規整。而 Java 堆內存是否規整,取決于 GC 收集器的算法是"標記-清除",還是"標記-整理"(也稱作"標記-壓縮"),值得注意的是,復制算法內存也是規整的

    內存分配并發問題(補充內容,需要掌握)

    在創建對象的時候有一個很重要的問題,就是線程安全,因為在實際開發過程中,創建對象是很頻繁的事情,作為虛擬機來說,必須要保證線程是安全的,通常來講,虛擬機采用兩種方式來保證線程安全:

    • CAS+失敗重試: CAS 是樂觀鎖的一種實現方式。所謂樂觀鎖就是,每次不加鎖而是假設沒有沖突而去完成某項操作,如果因為沖突失敗就重試,直到成功為止。虛擬機采用 CAS 配上失敗重試的方式保證更新操作的原子性。
    • TLAB: 為每一個線程預先在 Eden 區分配一塊兒內存,JVM 在給線程中的對象分配內存時,首先在 TLAB 分配,當對象大于 TLAB 中的剩余內存或 TLAB 的內存已用盡時,再采用上述的 CAS 進行內存分配

    Step3:初始化零值
    內存分配完成后,虛擬機需要將分配到的內存空間都初始化為零值(不包括對象頭),這一步操作保證了對象的實例字段在 Java 代碼中可以不賦初始值就直接使用,程序能訪問到這些字段的數據類型所對應的零值。

    Step4:設置對象頭
    初始化零值完成之后,虛擬機要對對象進行必要的設置,例如這個對象是哪個類的實例、如何才能找到類的元數據信息、對象的哈希碼、對象的 GC 分代年齡等信息。 這些信息存放在對象頭中。 另外,根據虛擬機當前運行狀態的不同,如是否啟用偏向鎖等,對象頭會有不同的設置方式。

    Step5:執行 init 方法
    在上面工作都完成之后,從虛擬機的視角來看,一個新的對象已經產生了,但從 Java 程序的視角來看,對象創建才剛開始, 方法還沒有執行,所有的字段都還為零。所以一般來說,執行 new 指令之后會接著執行 方法,把對象按照程序員的意愿進行初始化,這樣一個真正可用的對象才算完全產生出來。

    3.2 對象的內存布局

    在 Hotspot 虛擬機中,對象在內存中的布局可以分為 3 塊區域:對象頭、實例數據對齊填充

    Hotspot 虛擬機的對象頭包括兩部分信息,第一部分用于存儲對象自身的自身運行時數據(哈希碼、GC 分代年齡、鎖狀態標志等等),另一部分是類型指針,即對象指向它的類元數據的指針,虛擬機通過這個指針來確定這個對象是哪個類的實例。

    實例數據部分是對象真正存儲的有效信息,也是在程序中所定義的各種類型的字段內容。

    對齊填充部分不是必然存在的,也沒有什么特別的含義,僅僅起占位作用。 因為 Hotspot 虛擬機的自動內存管理系統要求對象起始地址必須是 8 字節的整數倍,換句話說就是對象的大小必須是 8 字節的整數倍。而對象頭部分正好是 8 字節的倍數(1 倍或 2 倍),因此,當對象實例數據部分沒有對齊時,就需要通過對齊填充來補全。

    3.3 對象的訪問定位

    建立對象就是為了使用對象,我們的 Java 程序通過棧上的 reference 數據來操作堆上的具體對象。對象的訪問方式由虛擬機實現而定,目前主流的訪問方式有①使用句柄②直接指針兩種

    1. 句柄: 如果使用句柄的話,那么 Java 堆中將會劃分出一塊內存來作為句柄池,reference 中存儲的就是對象的句柄地址,而句柄中包含了對象實例數據與類型數據各自的具體地址信息;

    2. 直接指針: 如果使用直接指針訪問,那么 Java 堆對象的布局中就必須考慮如何放置訪問類型數據的相關信息,而 reference 中存儲的直接就是對象的地址。

    這兩種對象訪問方式各有優勢。使用句柄來訪問的最大好處是 reference 中存儲的是穩定的句柄地址,在對象被移動時只會改變句柄中的實例數據指針,而 reference 本身不需要修改。使用直接指針訪問方式最大的好處就是速度快,它節省了一次指針定位的時間開銷。

    四 重點補充內容

    4.1 String 類和常量池

    String 對象的兩種創建方式:

    String str1 = "abcd"; //先檢查字符串常量池中有沒有"abcd",如果字符串常量池中沒有,則創建一個,然后 str1 指向字符串常量池中的對象,如果有,則直接將 str1 指向"abcd""; String str2 = new String("abcd");//堆中創建一個新的對象 String str3 = new String("abcd");//堆中創建一個新的對象 System.out.println(str1==str2);//false System.out.println(str2==str3);//false

    這兩種不同的創建方法是有差別的。

    • 第一種方式是在常量池中拿對象;
    • 第二種方式是直接在堆內存空間創建一個新的對象。

    記住一點:只要使用 new 方法,便需要創建新的對象。

    再給大家一個圖應該更容易理解:

    String 類型的常量池比較特殊。它的主要使用方法有兩種:

    • 直接使用雙引號聲明出來的 String 對象會直接存儲在常量池中。
    • 如果不是用雙引號聲明的 String 對象,可以使用 String 提供的 intern 方法。String.intern() 是一個 Native 方法,它的作用是:如果運行時常量池中已經包含一個等于此 String 對象內容的字符串,則返回常量池中該字符串的引用;如果沒有,JDK1.7之前(不包含1.7)的處理方式是在常量池中創建與此 String 內容相同的字符串,并返回常量池中創建的字符串的引用,JDK1.7以及之后的處理方式是在常量池中記錄此字符串的引用,并返回該引用。
    String s1 = new String("計算機");String s2 = s1.intern();String s3 = "計算機";System.out.println(s2);//計算機System.out.println(s1 == s2);//false,因為一個是堆內存中的 String 對象一個是常量池中的 String 對象,System.out.println(s3 == s2);//true,因為兩個都是常量池中的 String 對象

    字符串拼接:

    String str1 = "str";String str2 = "ing";String str3 = "str" + "ing";//常量池中的對象String str4 = str1 + str2; //在堆上創建的新的對象 String str5 = "string";//常量池中的對象System.out.println(str3 == str4);//falseSystem.out.println(str3 == str5);//trueSystem.out.println(str4 == str5);//false


    盡量避免多個字符串拼接,因為這樣會重新創建對象。如果需要改變字符串的話,可以使用 StringBuilder 或者 StringBuffer。

    4.2 String s1 = new String(“abc”);這句話創建了幾個字符串對象?

    將創建 1 或 2 個字符串。如果池中已存在字符串常量“abc”,則只會在堆空間創建一個字符串常量“abc”。如果池中沒有字符串常量“abc”,那么它將首先在池中創建,然后在堆空間中創建,因此將創建總共 2 個字符串對象。

    驗證

    String s1 = new String("abc");// 堆內存的地址值String s2 = "abc";System.out.println(s1 == s2);// 輸出 false,因為一個是堆內存,一個是常量池的內存,故兩者是不同的。System.out.println(s1.equals(s2));// 輸出 true

    結果

    false true
    4.3 8 種基本類型的包裝類和常量池
    • Java 基本類型的包裝類的大部分都實現了常量池技術,即 Byte,Short,Integer,Long,Character,Boolean;這 5 種包裝類默認創建了數值[-128,127] 的相應類型的緩存數據,但是超出此范圍仍然會去創建新的對象。 為啥把緩存設置為[-128,127]區間?(參見issue/461)性能和資源之間的權衡。
    • 兩種浮點數類型的包裝類 Float,Double 并沒有實現常量池技術
    Integer i1 = 33;Integer i2 = 33;System.out.println(i1 == i2);// 輸出 trueInteger i11 = 333;Integer i22 = 333;System.out.println(i11 == i22);// 輸出 falseDouble i3 = 1.2;Double i4 = 1.2;System.out.println(i3 == i4);// 輸出 false

    Integer 緩存源代碼:

    /** *此方法將始終緩存-128 到 127(包括端點)范圍內的值,并可以緩存此范圍之外的其他值。 */public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}

    應用場景:

    • Integer i1=40;Java 在編譯的時候會直接將代碼封裝成 Integer i1=Integer.valueOf(40);,從而使用常量池中的對象。
    • Integer i1 = new Integer(40);這種情況下會創建新的對象。
    Integer i1 = 40;Integer i2 = new Integer(40);System.out.println(i1==i2);//輸出 false

    Integer 比較更豐富的一個例子:

    Integer i1 = 40;Integer i2 = 40;Integer i3 = 0;Integer i4 = new Integer(40);Integer i5 = new Integer(40);Integer i6 = new Integer(0);System.out.println("i1=i2 " + (i1 == i2));System.out.println("i1=i2+i3 " + (i1 == i2 + i3));System.out.println("i1=i4 " + (i1 == i4));System.out.println("i4=i5 " + (i4 == i5));System.out.println("i4=i5+i6 " + (i4 == i5 + i6)); System.out.println("40=i5+i6 " + (40 == i5 + i6));

    結果:

    i1=i2 true i1=i2+i3 true i1=i4 false i4=i5 false i4=i5+i6 true 40=i5+i6 true

    解釋:

    語句 i4 == i5 + i6,因為+這個操作符不適用于 Integer 對象,首先 i5 和 i6 進行自動拆箱操作,進行數值相加,即 i4 == 40。然后 Integer 對象無法與數值進行直接比較,所以 i4 自動拆箱轉為 int 值 40,最終這條語句轉為 40 == 40 進行數值比較。


    6. 如何判斷對象是否死亡(兩種方法)。

    7. 簡單的介紹一下強引用、軟引用、弱引用、虛引用(虛引用與軟引用和弱引用的區別、使用軟引用能帶來的好處)。

    8. 如何判斷一個常量是廢棄常量

    9. 如何判斷一個類是無用的類

    10. 垃圾收集有哪些算法,各自的特點?

    11. HotSpot 為什么要分為新生代和老年代?

    12. 常見的垃圾回收器有哪些?

    13. 介紹一下 CMS,G1 收集器。

    14. Minor Gc 和 Full GC 有什么不同呢?

    本文導火索


    當需要排查各種內存溢出問題、當垃圾收集成為系統達到更高并發的瓶頸時,我們就需要對這些“自動化”的技術實施必要的監控和調節。

    1 揭開 JVM 內存分配與回收的神秘面紗

    Java 的自動內存管理主要是針對對象內存的回收和對象內存的分配。同時,Java 自動內存管理最核心的功能是 堆內存中對象的分配與回收

    Java 堆是垃圾收集器管理的主要區域,因此也被稱作GC 堆(Garbage Collected Heap).從垃圾回收的角度,由于現在收集器基本都采用分代垃圾收集算法,所以 Java 堆還可以細分為:新生代和老年代:再細致一點有:Eden 空間、From Survivor、To Survivor 空間等。進一步劃分的目的是更好地回收內存,或者更快地分配內存。

    堆空間的基本結構:

    上圖所示的 eden 區、s0(“From”) 區、s1(“To”) 區都屬于新生代,tentired 區屬于老年代。大部分情況,對象都會首先在 Eden 區域分配,在一次新生代垃圾回收后,如果對象還存活,則會進入 s1(“To”),并且對象的年齡還會加 1(Eden 區->Survivor 區后對象的初始年齡變為 1),當它的年齡增加到一定程度(默認為 15 歲),就會被晉升到老年代中。對象晉升到老年代的年齡閾值,可以通過參數 -XX:MaxTenuringThreshold 來設置。經過這次GC后,Eden區和"From"區已經被清空。這個時候,“From"和"To"會交換他們的角色,也就是新的"To"就是上次GC前的“From”,新的"From"就是上次GC前的"To”。不管怎樣,都會保證名為To的Survivor區域是空的。Minor GC會一直重復這樣的過程,直到“To”區被填滿,"To"區被填滿之后,會將所有對象移動到老年代中。

    1.1 對象優先在 eden 區分配

    目前主流的垃圾收集器都會采用分代回收算法,因此需要將堆內存分為新生代和老年代,這樣我們就可以根據各個年代的特點選擇合適的垃圾收集算法。

    大多數情況下,對象在新生代中 eden 區分配。當 eden 區沒有足夠空間進行分配時,虛擬機將發起一次 Minor GC.下面我們來進行實際測試以下。

    在測試之前我們先來看看 Minor GC 和 Full GC 有什么不同呢?

    • 新生代 GC(Minor GC):指發生新生代的的垃圾收集動作,Minor GC 非常頻繁,回收速度一般也比較快。
    • 老年代 GC(Major GC/Full GC):指發生在老年代的 GC,出現了 Major GC 經常會伴隨至少一次的 Minor GC(并非絕對),Major GC 的速度一般會比 Minor GC 的慢 10 倍以上。

    測試:

    public class GCTest {public static void main(String[] args) {byte[] allocation1, allocation2;allocation1 = new byte[30900*1024];//allocation2 = new byte[900*1024];} }

    通過以下方式運行:

    添加的參數:-XX:+PrintGCDetails

    運行結果 (紅色字體描述有誤,應該是對應于 JDK1.7 的永久代):

    從上圖我們可以看出 eden 區內存幾乎已經被分配完全(即使程序什么也不做,新生代也會使用 2000 多 k 內存)。假如我們再為 allocation2 分配內存會出現什么情況呢?

    allocation2 = new byte[900*1024];


    簡單解釋一下為什么會出現這種情況: 因為給 allocation2 分配內存的時候 eden 區內存幾乎已經被分配完了,我們剛剛講了當 Eden 區沒有足夠空間進行分配時,虛擬機將發起一次 Minor GC.GC 期間虛擬機又發現 allocation1 無法存入 Survivor 空間,所以只好通過 分配擔保機制 把新生代的對象提前轉移到老年代中去,老年代上的空間足夠存放 allocation1,所以不會出現 Full GC。執行 Minor GC 后,后面分配的對象如果能夠存在 eden 區的話,還是會在 eden 區分配內存。可以執行如下代碼驗證:

    public class GCTest {public static void main(String[] args) {byte[] allocation1, allocation2,allocation3,allocation4,allocation5;allocation1 = new byte[32000*1024];allocation2 = new byte[1000*1024];allocation3 = new byte[1000*1024];allocation4 = new byte[1000*1024];allocation5 = new byte[1000*1024];} }
    1.2 大對象直接進入老年代

    大對象就是需要大量連續內存空間的對象(比如:字符串、數組)。大對象對虛擬機的內存分配來說就是一個壞消息,經常出現大對象容易導致內存還有不少空間時就提前觸發垃圾收集以獲取足夠的連續空間來“安置”它們。

    為什么要這樣呢?

    為了避免為大對象分配內存時由于分配擔保機制帶來的復制而降低效率。

    虛擬機提供了一個-XX:PretenureSizeThreshold參數,令大于這個設置值的對象直接在老年代分配。這樣做的目的是避免在Eden區及兩個Survivor區之間發生大量的內存復制(新生代采用復制算法收集內存)。

    注意 PretenureSizeThreshold參數只對Serial和ParNew兩款收集器有效,Parallel Scavenge收集器不認識這個參數,Parallel Scavenge收集器一般并不需要設置。如果遇到必須使用此參數的場合,可以考慮ParNew加CMS的收集器組合。

    1.3 長期存活的對象將進入老年代

    既然虛擬機采用了分代收集的思想來管理內存,那么內存回收時就必須能識別哪些對象應放在新生代,哪些對象應放在老年代中。為了做到這一點,虛擬機給每個對象一個對象年齡(Age)計數器。

    如果對象在 Eden 出生并經過第一次 Minor GC 后仍然能夠存活,并且能被 Survivor 容納的話,將被移動到 Survivor 空間中,并將對象年齡設為 1.對象在 Survivor 中每熬過一次 MinorGC,年齡就增加 1 歲,當它的年齡增加到一定程度(默認為 15 歲),就會被晉升到老年代中。對象晉升到老年代的年齡閾值,可以通過參數 -XX:MaxTenuringThreshold 來設置。

    1.4 動態對象年齡判定

    為了更好的適應不同程序的內存情況,虛擬機不是永遠要求對象年齡必須達到了某個值才能進入老年代,如果 Survivor 空間中相同年齡所有對象大小的總和大于 Survivor 空間的一半,年齡大于或等于該年齡的對象就可以直接進入老年代,無需達到要求的年齡。

    2 對象已經死亡?

    堆中幾乎放著所有的對象實例,對堆垃圾回收前的第一步就是要判斷那些對象已經死亡(即不能再被任何途徑使用的對象)。

    2.1 引用計數法

    給對象中添加一個引用計數器,每當有一個地方引用它,計數器就加 1;當引用失效,計數器就減 1;任何時候計數器為 0 的對象就是不可能再被使用的。

    這個方法實現簡單,效率高,但是目前主流的虛擬機中并沒有選擇這個算法來管理內存,其最主要的原因是它很難解決對象之間相互循環引用的問題。 所謂對象之間的相互引用問題,如下面代碼所示:除了對象 objA 和 objB 相互引用著對方之外,這兩個對象之間再無任何引用。但是他們因為互相引用對方,導致它們的引用計數器都不為 0,于是引用計數算法無法通知 GC 回收器回收他們。

    public class ReferenceCountingGc {Object instance = null;public static void main(String[] args) {ReferenceCountingGc objA = new ReferenceCountingGc();ReferenceCountingGc objB = new ReferenceCountingGc();objA.instance = objB;objB.instance = objA;objA = null;objB = null;} }
    2.2 可達性分析算法

    這個算法的基本思想就是通過一系列的稱為 “GC Roots” 的對象作為起點,從這些節點開始向下搜索,節點所走過的路徑稱為引用鏈,當一個對象到 GC Roots 沒有任何引用鏈相連的話,則證明此對象是不可用的。

    2.3 再談引用

    無論是通過引用計數法判斷對象引用數量,還是通過可達性分析法判斷對象的引用鏈是否可達,判定對象的存活都與“引用”有關。

    JDK1.2 之前,Java 中引用的定義很傳統:如果 reference 類型的數據存儲的數值代表的是另一塊內存的起始地址,就稱這塊內存代表一個引用。

    JDK1.2 以后,Java 對引用的概念進行了擴充,將引用分為強引用、軟引用、弱引用、虛引用四種(引用強度逐漸減弱)

    1.強引用(StrongReference)

    以前我們使用的大部分引用實際上都是強引用,這是使用最普遍的引用。如果一個對象具有強引用,那就類似于必不可少的生活用品,垃圾回收器絕不會回收它。當內存空間不足,Java 虛擬機寧愿拋出 OutOfMemoryError 錯誤,使程序異常終止,也不會靠隨意回收具有強引用的對象來解決內存不足問題。

    2.軟引用(SoftReference)

    如果一個對象只具有軟引用,那就類似于可有可無的生活用品。如果內存空間足夠,垃圾回收器就不會回收它,如果內存空間不足了,就會回收這些對象的內存。只要垃圾回收器沒有回收它,該對象就可以被程序使用。軟引用可用來實現內存敏感的高速緩存。

    軟引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果軟引用所引用的對象被垃圾回收,JAVA 虛擬機就會把這個軟引用加入到與之關聯的引用隊列中。

    3.弱引用(WeakReference)

    如果一個對象只具有弱引用,那就類似于可有可無的生活用品。弱引用與軟引用的區別在于:只具有弱引用的對象擁有更短暫的生命周期。在垃圾回收器線程掃描它所管轄的內存區域的過程中,一旦發現了只具有弱引用的對象,不管當前內存空間足夠與否,都會回收它的內存。不過,由于垃圾回收器是一個優先級很低的線程, 因此不一定會很快發現那些只具有弱引用的對象。

    弱引用可以和一個引用隊列(ReferenceQueue)聯合使用,如果弱引用所引用的對象被垃圾回收,Java 虛擬機就會把這個弱引用加入到與之關聯的引用隊列中。

    4.虛引用(PhantomReference)

    "虛引用"顧名思義,就是形同虛設,與其他幾種引用都不同,虛引用并不會決定對象的生命周期。如果一個對象僅持有虛引用,那么它就和沒有任何引用一樣,在任何時候都可能被垃圾回收。

    虛引用主要用來跟蹤對象被垃圾回收的活動。

    虛引用與軟引用和弱引用的一個區別在于: 虛引用必須和引用隊列(ReferenceQueue)聯合使用。當垃圾回收器準備回收一個對象時,如果發現它還有虛引用,就會在回收對象的內存之前,把這個虛引用加入到與之關聯的引用隊列中。程序可以通過判斷引用隊列中是否已經加入了虛引用,來了解被引用的對象是否將要被垃圾回收。程序如果發現某個虛引用已經被加入到引用隊列,那么就可以在所引用的對象的內存被回收之前采取必要的行動。

    特別注意,在程序設計中一般很少使用弱引用與虛引用,使用軟引用的情況較多,這是因為軟引用可以加速 JVM 對垃圾內存的回收速度,可以維護系統的運行安全,防止內存溢出(OutOfMemory)等問題的產生。

    2.4 不可達的對象并非“非死不可”

    即使在可達性分析法中不可達的對象,也并非是“非死不可”的,這時候它們暫時處于“緩刑階段”,要真正宣告一個對象死亡,至少要經歷兩次標記過程;可達性分析法中不可達的對象被第一次標記并且進行一次篩選,篩選的條件是此對象是否有必要執行 finalize 方法。當對象沒有覆蓋 finalize 方法,或 finalize 方法已經被虛擬機調用過時,虛擬機將這兩種情況視為沒有必要執行。

    被判定為需要執行的對象將會被放在一個低優先級隊列中進行第二次標記,除非這個對象與引用鏈上的任何一個對象建立關聯,否則就會被真的回收。

    2.5 如何判斷一個常量是廢棄常量

    運行時常量池主要回收的是廢棄的常量。那么,我們如何判斷一個常量是廢棄常量呢?

    假如在常量池中存在字符串 “abc”,如果當前沒有任何 String 對象引用該字符串常量的話,就說明常量 “abc” 就是廢棄常量,如果這時發生內存回收的話而且有必要的話,“abc” 就會被系統清理出常量池。

    注意:JDK1.7 及之后版本的 JVM 已經將運行時常量池從方法區中移了出來,在 Java 堆(Heap)中開辟了一塊區域存放運行時常量池。

    2.6 如何判斷一個類是無用的類

    方法區主要回收的是無用的類,那么如何判斷一個類是無用的類的呢?

    判定一個常量是否是“廢棄常量”比較簡單,而要判定一個類是否是“無用的類”的條件則相對苛刻許多。類需要同時滿足下面 3 個條件才能算是 “無用的類” :

  • 該類所有的實例都已經被回收,也就是 Java 堆中不存在該類的任何實例。
  • 加載該類的 ClassLoader 已經被回收。
  • 該類對應的 java.lang.Class 對象沒有在任何地方被引用,無法在任何地方通過反射訪問該類的方法。
  • 虛擬機可以對滿足上述 3 個條件的無用類進行回收,這里說的僅僅是“可以”,而并不是和對象一樣不使用了就會必然被回收。

    3 垃圾收集算法

    3.1 標記-清除算法

    當堆中的有效內存空間(available memory)被耗盡的時候,就會停止整個程序(也被稱為stop the world),然后進行兩項工作,第一項則是標記,第二項則是清除。

  • 標記:從引用根節點開始標記所有的被引用的對象。標記的過程其實就是遍歷所有的GC Roots,然后將所有GC Roots可達的對象標記為存活的對象
  • 清除:遍歷整個堆,把未標記的對象清除。
  • 它是最基礎的收集算法,后續的算法都是對其不足進行改進得到。這種垃圾收集算法會帶來兩個明顯的問題:

  • 效率問題(stop the world)
  • 空間問題(標記清除后會產生大量不連續的碎片)
  • 3.2 復制算法

    為了解決效率問題,“復制”收集算法出現了。它可以將內存分為大小相同的兩塊,每次使用其中的一塊。當這一塊的內存使用完后,就將還存活的對象復制到另一塊去,然后再把使用的空間一次清理掉。這樣就使每次的內存回收都是對內存區間的一半進行回收。復制算法不會產生空間碎片。

    復制算法的缺點:

  • 浪費了一半的內存
  • 如果對象的存活率很高,我們可以極端一點,假設100%存活,那么我們需要將所有對象都復制一遍,并將所有引用地址重置一遍,復制這一工作所花費的時間,在對象存活率達到一定程度時,將會變得不可忽視。
  • 所以從以上的描述中不難看出,復制算法要想使用,最起碼對象的存活率要非常低才行,而且最重要的是,我們必須克服50%內存的浪費。

    3.3 標記-整理算法

    根據老年代的特點提出的一種標記算法,標記過程仍然與“標記-清除”算法一樣,但后續步驟不是直接對可回收對象回收,而是讓所有存活的對象向一端移動,然后直接清理掉端邊界以外的內存。

    標記整理算法的缺點:

  • 效率不高,不僅要標記所有存活對象,還要整理所有存活對象的引用地址。從效率上來說,標記整理算法要低于復制算法。
  • 3.4 分代收集算法

    當前虛擬機的垃圾收集都采用分代收集算法,這種算法沒有什么新的思想,只是根據對象存活周期的不同將內存分為幾塊。一般將 java 堆分為新生代和老年代,這樣我們就可以根據各個年代的特點選擇合適的垃圾收集算法。

    比如在新生代中,每次收集都會有大量對象死去,所以可以選擇復制算法,只需要付出少量對象的復制成本就可以完成每次垃圾收集。而老年代的對象存活幾率是比較高的,而且沒有額外的空間對它進行分配擔保,所以我們必須選擇“標記-清除”或“標記-整理”算法進行垃圾收集。

    延伸面試問題: HotSpot 為什么要分為新生代和老年代?

    根據上面的對分代收集算法的介紹回答。

    4 垃圾收集器



    如果說收集算法是內存回收的方法論,那么垃圾收集器就是內存回收的具體實現。

    雖然我們對各個收集器進行比較,但并非要挑選出一個最好的收集器。因為直到現在為止還沒有最好的垃圾收集器出現,更加沒有萬能的垃圾收集器,我們能做的就是根據具體應用場景選擇適合自己的垃圾收集器。試想一下:如果有一種任何場景下都適用的完美收集器存在,那么我們的 HotSpot 虛擬機就不會實現那么多不同的垃圾收集器了。

    4.1 Serial 收集器

    串行收集器是最古老,最穩定以及效率高的收集器,只使用一個線程去回收但其在進行垃圾收集過程中可能會產生較長的停頓(Stop-The-world狀態)。雖然在收集垃圾過程中需要暫停所有其他的工作線程,但是它簡單高效,對于限定單個CPU環境來說,沒有線程交互的開銷可以獲得最高的單線程垃圾收集效率,因此Serial垃圾收集器依然是Java虛擬機運行在Client模式下默認的新生代垃圾收集器。

    對應JVM參數是:-XX:+UseSerialGC
    開啟后會使用:Serial(young區用)+SerialOld(Old區用)的收集器組合
    表示:新生代、老年代都會使用串行回收收集器,新生代使用復制算法,老年代使用標記-整理算法

    4.2 ParNew 收集器

    ParNew(并行)收集器:使用多線程進行垃圾回收,在垃圾收集時,會Stop-the-World暫停其他所有的工作線程直到它收集結束。
    ParNew收集器其實就是Seria收集器新生代的并行多線程版本,最常見的應用場景是配合老年代的CMS GC工作,其余的行為和Serial收集器完全一樣,ParNew垃圾收集器在垃圾收集過程中同樣也要暫停所有其他的工作線程。它是很多Java虛擬機運行在Server模式下新生代的默認垃圾收集器。

    常用對應JVM參數:-XX:+UseParNewGC,啟用ParNew收集器,只影響新生代的收集,不影響老年代。開啟參數后,會使用:ParNew(Young區用)+SerialOld的收集器組合,新生代使用復制算法,老年代采用標記-整理算法

    但是,ParNew+Tenured這樣的搭配,java8已經不再推薦。

    -XX:ParallelGCThreads 限制線程數量,默認開啟和CPU數目相同的線程數。

    并行和并發概念補充:

    • 并行(Parallel) :指多條垃圾收集線程并行工作,但此時用戶線程仍然處于等待狀態。
    • 并發(Concurrent):指用戶線程與垃圾收集線程同時執行(但不一定是并行,可能會交替執行),用戶程序在繼續運行,而垃圾收集器運行在另一個 CPU 上。
    4.3 Parallel Scavenge 收集器

    Parallel Scavenge收集器類似ParNew也是一個新生代垃圾收集器,使用復制算法,也是一個并行的多線程的垃圾收集器,俗稱吞吐量優先收集器。總結就是串行收集器在新生代和老年代的并行化。

    -XX:+UseParallelGC
    使用 Parallel 收集器+ 老年代串行
    -XX:+UseParallelOldGC
    使用 Parallel 收集器+ 老年代并行

    它重點關注的是:可控制的吞吐量(Thoughput=運行用戶代碼時間/(運行用戶代碼時間+垃圾收集時間),也即比如程序運行100分鐘,垃圾收集時間1分鐘,吞吐量就是99%)。高吞吐量意味著高效利用CPU的時間,它多用于在后臺運算而不需要太多交互的任務。

    自適應調節策略也是ParallelScavenge收集器與ParNew收集器的一個重要區別。(自適應調節策略:虛擬機會根據當前系統的運行情況收集性能監控信息,動態調整這些參數以提供最合適的停頓時間(-XX:MaxGCPauseMillis)或最大的吞吐量。

    常用JVM參數:-XX:+UseParaIIeIGC或-XX:+UseParaIIeIOldGC(可互相激活)使用ParallelScanvenge收集器開啟該參數后:新生代使用復制算法,老年代使用標記·整理算法

    補充:
    -XX:ParaIIeIGCThreads=數字N,表示啟動多少個GC線程
    cpu>8,N=5/8
    cpu<8,N=實際個數

    4.4.Serial Old 收集器

    SerialOld是 Serial垃圾收集器老年代版本,它同樣是個單線程的收集器,使用標記-整理算法,這個收集器也主要是運行在Client默認的java虛擬機默認的年老代垃圾收集器。

    在Server模式下,主要有兩個用途(了解版本己經到8及以后):

  • 在JDK1.5之前版本中與新生代的Parallel Scavenge收集器搭配使用。(ParallelScavenge+SerialOld)
  • 作為老年代版中使用CMS收集器的后備垃圾收集方案。
  • 4.5 Parallel Old 收集器

    ParallelOld收集器是ParaScavenge的老年代版本,使用多線程的標記-整理算法,Parallel Old收集器在JDK1.6才開始提供。

    在JDK1.6之前,新生代使用ParallelScavenge收集器只能搭配年老代的SerialOld收集器,只能保證新生代的吞吐量優先,無法保證整體的吞吐量。

    ParallelOld正是為了在年老代同樣提供吞吐量優先的垃圾收集器,如果系統對吞吐量要求比較高,JDK1.8后可以優先考慮新生代ParallelScavenge和年老代Parallel Old收集器的搭配策略。在JDK1.8及后(Parallel Scavenge+Parallel Old)

    JVM常用參數:
    -XX:+UseParallelOldGC使用ParallelOld收集器,設置該參數后,新生代Parallel+老年代ParallelOld

    4.6 CMS 收集器

    CMS收集器(ConcurrentMarkSweep:并發標記清除)是一種以獲取最短回收停頓時間為目標的收集器。適合應用在互聯網站或者B/S系統的服務器上,這類應用尤其重視服務器的響應速度,希望系統停頓時間最短。

    CMS非常適合堆內存大、CPU核數多的服務器端應用,也是G1出現之前大型應用的首選收集器。


    Concurrent Mark Sweep 并發標記清除,并發收集低停頓,并發指的是與用戶線程一起執行。

    開啟該收集器的JVM參數:-XX:+UseConcMarkSreepGC,開啟該參數后會自動將-XX:+UseParNewGC打開。開啟該參數后,使用ParNew(Young區用)+CMS(Old區用)+SerialOld的收集器組合,SerialOld將作為CMS出錯的后備收集器。

    從名字中的Mark Sweep這兩個詞可以看出,CMS 收集器是一種 “標記-清除”算法實現的,它的運作過程相比于前面幾種垃圾收集器來說更加復雜一些。整個過程分為四個步驟:

  • 初始標記(CMS initial mark):只是標記一下GC Roots能直接關聯的對象,速度很快,仍然需要暫停所有的工作線程
  • 并發標記(CMS concurrent mark)和用戶線程一起:進行GC Roots跟蹤的過程,和用戶線程一起工作,不需要暫停工作線程。主要標記過程,標記全部對象
  • 重新標記(CMS remark):為了修正并發標記期間,因用戶程序繼續運行而導致標記產生變動的那一部分對象的標記記錄,仍然需要暫停所有的工作線程。由于并發標記時,用戶線程仍然運行,因此在正式清理前,再做修正。
  • 并發清除(CMS concurrent sweep)和用戶線程一起:清除GC Roots不可達對象,和用戶線程一起工作,不需要暫停工作線程。基于標記結果,直接清理對象。
  • 由于耗時最長的并發標記和并發清除過程中,垃圾收集線程可以和用戶一起并發工作,所以總體上來看CMS收集器的內存回收和用戶線程是一起并發地執行。

    CMS優點:并發收集低停頓

    CMS缺點:

  • 并發執行,對cpu資源壓力大:由于并發進行,CMS在收集與應用線程會同時會增加對堆內存的占用,也就是說,CMS必須要在老年代堆內存用盡之前完成垃圾回收,否則CMS回收失敗時,將觸發擔保機制,串行老年代收集器將會以STW的方式進行上次GC,從而造成較大停頓時間。
  • 采用的標記清除算法會導致大量碎片:標記清除算法無法整理空間碎片,老年代空間會隨著應用時長被逐步耗盡,最后將不得不通過擔保機制對堆內存進行壓縮。CMS也提供了參數 -XX:MSFuIIGCsBeForeCompaction (默認0,即每次都進行內存整理)來指定多少次CMS收集之后,進行一次壓縮的FullGC。
  • 4.7 G1 收集器

    G1(Garbage-Frist)收集器,是一款面向服務端應用的收集器。

    從官網的描述中,我們知道G1是一種服務器端的垃圾收集器,應用在多處理器和大容量內存環境中,在提高吞吐量的同時,盡可能的滿足垃圾收集暫停時間的要求。另外,它還具有以下特性:

  • 像CMS收集器一樣,能與應用程序線程并發執行
  • 整理空閑空間更快
  • 需要更多的時間來預測GC停頓時間
  • 不希望犧牲大量的吞吐性能
  • 不需要更大的Java Heap
  • G1收集器的設計目標是取代CMS收集器,它同CMS相比,在以下方面表現更出色:

  • G1是一個有整理內存過程的垃圾收集器,不會產生很多內存碎片
  • G1的Stop-The-World(STW)更可控,G1在停頓時間上添加了預測機制,用戶可以指定期望停頓時間。
  • CMS垃圾集器雖然減少了暫停應用程序的運行時間,但是它還是存在著內存碎片問題。于是,為了去除內存碎片問題,同時又保留CMS垃圾收集器低暫停時間的優點,JAVA7發布了一個新的垃圾收集器-G1垃圾收集器。

    G1是在2012年才在jdk1.7u4中可用。oracle官方計劃在jdk9中將G1變成默認的垃圾收集器以替代CMS。它是一款面向服務端應用的收集器,主要應用在多CPU和大內存服務器環境下,極大的減少垃圾收集的停頓時間,全面提升服務器的性能,逐步替換java8以前的CMS收集器。

    主要改變是Eden,Survivor和Tenured等內存區域不再是連續的了,而是變成了一個個大小一樣的region,每個region從1M到32M不等。一個region有可能屬于Eden,Survivor或者Tenured內存區域。

    G1特點
  • G1能充分利用多CPU、多核環境硬件優勢,盡量縮短STW
  • G1整體上采用標記-整理算法,局部是通過復制算法,不會產生內存碎片。
  • 宏觀上看G1之中不再區分年輕代和老年代。把內存劃分成多個獨立的了區域(Region),可以近似理解為一個圍棋的棋盤。
  • G1收集器里面講整個的內存區都混合在一起了,但其本身依然在小范圍內要進行年輕代和老年代的區分,保留了新生代和老年代,但它們不再是物理隔離的,而是一部分Region的集合且不需要Region是連續的,也就是說依然會采用不同的GC方式來處理不同的區域。
  • G1雖然也是分代收集器,但整個內存分區不存在物理上的年輕代與老年代的區別,也不需要完全獨立的survivor(tospace)堆做復制
    準備。GI只有邏輯上的分代概念,或者說每個分區都可能隨G1的運行在不同代之間前后切換;
  • G1底層原理
  • Region區域化垃圾收集器

  • 區域化內存劃片Region,整體編為了一系列不連續的內存區域,避免了全內存區的GC操作。
  • 核心思想是將整個堆內存區域分成大小相同的子區域(Region),在JVM啟動時會自動設置這些子區域的大小,在堆的使用上,G1并不要求對象的存儲一定是物理上連續的只要邏輯上連續即可,每個分區也不會固定地為某個代服務,可以按需在年輕代和老年代之間切換。啟動時可以通過參數-XX:G1HeapRegionSize=n可指定分區大小(1MB~32MB,且必須是2的冪),默認將整堆劃分為2048個分區。
  • 大小范圍在1MB~32MB,最多能設置2048個區域,也即能夠支持的最大內存為:32MBx2048=65536MB=64G內存
  • G1算法將堆劃分為若干個區域(Region),它仍然屬于分代收集器

  • 這些Region的一部分包含新生代,新生代的垃圾收集依然采用暫停所有應用線程的方式,將存活對象拷貝到老年代或者survivor空間。

  • 這些Region的一部分包含老年代,G1收集器通過將對象從一個區域復制到另外一個區域,完成了清理工作。這就意味著,在正常的處理過程中,G1完成了堆的壓縮(至少是部分堆的壓縮),這樣也就不會有CMS內存碎片問題的存在了。

  • 在G1中,還有一種特殊的區域,叫Humongous(巨大的)區域
    如果一個對象占用的空間超過了分區容量50%以上,G1收集器就認為這是一個巨型對象。這些巨型對象默認直接會被分配在年老代,但是如果它是一個短期存在的巨型對象,就會對垃圾收集器造成負面影響。為了解決這個問題,G1劃分了一個Humongous區,它用來專門存放巨型對象。如果一個H區裝不下一個巨型對象,那么G1會尋找連續的H分區來存儲。為了能找到連續的H區,有時候不得不啟動Full GC。

  • G1回收步驟

    G1 收集器下的 Young GC

    針對 Eden 區進行收集,Eden 區耗盡后會被觸發,主要是小區域收集 + 形成連續的內存塊,避免內存碎片。

    • Eden 區的數據移動到 Survivor 區,假如出現 Survivor 區空間不夠,Eden 區數據會部分晉升到 Old 區
    • Survivor 區的數據移動到新的 Survivor 區,部分數據晉升到 Old
    • 最后 Eden 區收拾干凈了,GC結束,用戶的應用程序繼續執行



    運行過程:

  • 初始標記:只標記 GC Roots 能直接關聯到的對象
  • 并發標記:進行 GC Roots Tracing 的過程
  • 最終標記:修正并發標記期間,因程序運行導致標記發生變化的那一部分對象
  • 根據時間來進行價值最大化的回收
  • 和CMS相比的優勢

    比起CMS有兩個優勢:

  • G1不會產生內存碎片。
  • G1可以精確控制停頓。該收集器是把整個堆(新生代、老年代)劃分成多個固定大小的區域,每次根據運行 停頓的時間去收集垃圾最多的區域。
  • 4.8 小結


    15. 類加載過程

    Class 文件需要加載到虛擬機中之后才能運行和使用,那么虛擬機是如何加載這些 Class 文件呢?

    系統加載 Class 類型的文件主要三步:加載->連接->初始化。連接過程又可分為三步:驗證->準備->解析

    1. 加載

    類加載過程的第一步,主要完成下面3件事情:

  • 通過全類名獲取定義此類的二進制字節流
  • 將字節流所代表的靜態存儲結構轉換為方法區的運行時數據結構
  • 在內存中生成一個代表該類的 Class 對象,作為方法區這些數據的訪問入口
    虛擬機規范多上面這3點并不具體,因此是非常靈活的。比如:“通過全類名獲取定義此類的二進制字節流” 并沒有指明具體從哪里獲取、怎樣獲取。比如:比較常見的就是從 ZIP 包中讀取(日后出現的JAR、EAR、WAR格式的基礎)、其他文件生成(典型應用就是JSP)等等。
  • 一個非數組類的加載階段(加載階段獲取類的二進制字節流的動作)是可控性最強的階段,這一步我們可以去完成還可以自定義類加載器去控制字節流的獲取方式(重寫一個類加載器的 loadClass() 方法)。數組類型不通過類加載器創建,它由 Java 虛擬機直接創建。

    類加載器、雙親委派模型也是非常重要的知識點,這部分內容會在后面的文章中單獨介紹到。

    加載階段和連接階段的部分內容是交叉進行的,加載階段尚未結束,連接階段可能就已經開始了。

    2. 驗證

    3. 準備

    準備階段是正式為類變量分配內存并設置類變量初始值的階段,這些內存都將在方法區中分配。對于該階段有以下幾點需要注意:

  • 這時候進行內存分配的僅包括類變量(static),而不包括實例變量,實例變量會在對象實例化時隨著對象一塊分配在 Java 堆中。
  • 這里所設置的初始值"通常情況"下是數據類型默認的零值(如0、0L、null、false等),比如我們定義了public static int value=111 ,那么 value 變量在準備階段的初始值就是 0 而不是111(初始化階段才會賦值)。特殊情況:比如給 value 變量加上了 fianl 關鍵字public static final int value=111 ,那么準備階段 value 的值就被賦值為 111。
  • 基本數據類型的零值:

    4. 解析

    解析階段是虛擬機將常量池內的符號引用替換為直接引用的過程。解析動作主要針對類或接口、字段、類方法、接口方法、方法類型、方法句柄和調用限定符7類符號引用進行。

    符號引用就是一組符號來描述目標,可以是任何字面量。直接引用就是直接指向目標的指針、相對偏移量或一個間接定位到目標的句柄。在程序實際運行時,只有符號引用是不夠的,舉個例子:在程序執行方法時,系統需要明確知道這個方法所在的位置。Java 虛擬機為每個類都準備了一張方法表來存放類中所有的方法。當需要調用一個類的方法的時候,只要知道這個方法在方發表中的偏移量就可以直接調用該方法了。通過解析操作符號引用就可以直接轉變為目標方法在類中方法表的位置,從而使得方法可以被調用。

    綜上,解析階段是虛擬機將常量池內的符號引用替換為直接引用的過程,也就是得到類或者字段、方法在內存中的指針或者偏移量。

    5. 初始化

    初始化是類加載的最后一步,也是真正執行類中定義的 Java 程序代碼(字節碼),初始化階段是執行類構造器 <clinit> ()方法的過程。

    對于<clinit>() 方法的調用,虛擬機會自己確保其在多線程環境中的安全性。因為<clinit>() 方法是帶鎖線程安全,所以在多線程環境下進行類初始化的話可能會引起死鎖,并且這種死鎖很難被發現。

    對于初始化階段,虛擬機嚴格規范了有且只有5種情況下,必須對類進行初始化:

  • 當遇到 new 、 getstatic、putstatic或invokestatic 這4條直接碼指令時,比如 new 一個類,讀取一個靜態字段(未被 final 修飾)、或調用一個類的靜態方法時。
  • 使用 java.lang.reflect 包的方法對類進行反射調用時 ,如果類沒初始化,需要觸發其初始化。
  • 初始化一個類,如果其父類還未初始化,則先觸發該父類的初始化。
  • 當虛擬機啟動時,用戶需要定義一個要執行的主類 (包含 main 方法的那個類),虛擬機會先初始化這個類。
  • 當使用 JDK1.7 的動態動態語言時,如果一個 MethodHandle 實例的最后解析結構為 REF_getStatic、REF_putStatic、REF_invokeStatic、的方法句柄,并且這個句柄沒有初始化,則需要先觸發器初始化。
  • 6. 類加載器總結

    JVM 中內置了三個重要的 ClassLoader,除了 BootstrapClassLoader 其他類加載器均由 Java 實現且全部繼承自java.lang.ClassLoader:

    • BootstrapClassLoader(啟動類加載器) :最頂層的加載類,由C++實現,負責加載 %JAVA_HOME%/lib目錄下的jar包和類或者或被 -Xbootclasspath參數指定的路徑中的所有類。
    • ExtensionClassLoader(擴展類加載器) :主要負責加載目錄 %JRE_HOME%/lib/ext 目錄下的jar包和類,或被 java.ext.dirs 系統變量所指定的路徑下的jar包。
    • AppClassLoader(應用程序類加載器) :面向我們用戶的加載器,負責加載當前應用classpath下的所有jar包和類。

    7. 雙親委派模型介紹

    每一個類都有一個對應它的類加載器。系統中的 ClassLoder 在協同工作的時候會默認使用 雙親委派模型 。即在類加載的時候,系統會首先判斷當前類是否被加載過。已經被加載的類會直接返回,否則才會嘗試加載。加載的時候,首先會把該請求委派該父類加載器的 loadClass() 處理,因此所有的請求最終都應該傳送到頂層的啟動類加載器 BootstrapClassLoader 中。當父類加載器無法處理時,才由自己來處理。當父類加載器為null時,會使用啟動類加載器 BootstrapClassLoader 作為父類加載器。

    8. 雙親委派模型的好處

    雙親委派模型保證了Java程序的穩定運行,可以避免類的重復加載(JVM 區分不同類的方式不僅僅根據類名,相同的類文件被不同的類加載器加載產生的是兩個不同的類),也保證了 Java 的核心 API 不被篡改。如果沒有使用雙親委派模型,而是每個類加載器加載自己的話就會出現一些問題,比如我們編寫一個稱為 java.lang.Object 類的話,那么程序運行的時候,系統就會出現多個不同的 Object 類。

    總結

    以上是生活随笔為你收集整理的面经——JVM的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    男女超爽视频免费播放 | 丁香啪啪综合成人亚洲 | 中文无码成人免费视频在线观看 | 激情综合激情五月俺也去 | 国产av无码专区亚洲awww | 亚洲熟熟妇xxxx | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 性欧美牲交在线视频 | 伊人久久大香线蕉亚洲 | 亚洲欧美日韩综合久久久 | 99国产精品白浆在线观看免费 | 暴力强奷在线播放无码 | 一二三四社区在线中文视频 | 亚洲一区av无码专区在线观看 | 久久精品视频在线看15 | 久久精品国产日本波多野结衣 | 丰满少妇高潮惨叫视频 | 欧美日韩视频无码一区二区三 | 精品国产乱码久久久久乱码 | 中文字幕 人妻熟女 | 亚洲午夜福利在线观看 | 亚洲精品一区三区三区在线观看 | 色噜噜亚洲男人的天堂 | 内射欧美老妇wbb | 撕开奶罩揉吮奶头视频 | 2020久久香蕉国产线看观看 | 又粗又大又硬毛片免费看 | 日本欧美一区二区三区乱码 | 特大黑人娇小亚洲女 | 97久久精品无码一区二区 | 日韩av激情在线观看 | 国产人妻久久精品二区三区老狼 | 欧美人与禽猛交狂配 | 2020最新国产自产精品 | 色婷婷av一区二区三区之红樱桃 | 国产欧美精品一区二区三区 | 日韩 欧美 动漫 国产 制服 | 一本无码人妻在中文字幕免费 | 狠狠综合久久久久综合网 | 亚洲精品中文字幕乱码 | 人妻少妇精品久久 | 久激情内射婷内射蜜桃人妖 | 国产午夜亚洲精品不卡下载 | 大地资源中文第3页 | 日本欧美一区二区三区乱码 | 亚洲日韩av一区二区三区四区 | 国产av久久久久精东av | 十八禁真人啪啪免费网站 | 久久久亚洲欧洲日产国码αv | 成年美女黄网站色大免费全看 | 人妻无码αv中文字幕久久琪琪布 | 亚洲va欧美va天堂v国产综合 | 久久综合狠狠综合久久综合88 | 亚洲精品国产品国语在线观看 | 日本xxxx色视频在线观看免费 | 国内精品人妻无码久久久影院蜜桃 | 国产亚洲精品久久久闺蜜 | 国产人妻精品一区二区三区 | 图片小说视频一区二区 | 欧美一区二区三区 | 亚洲欧洲日本无在线码 | 日本精品人妻无码免费大全 | 午夜熟女插插xx免费视频 | 久久综合激激的五月天 | 狂野欧美性猛xxxx乱大交 | yw尤物av无码国产在线观看 | 97夜夜澡人人爽人人喊中国片 | 久久精品99久久香蕉国产色戒 | 欧美老妇交乱视频在线观看 | 99久久精品无码一区二区毛片 | 国产精品亚洲一区二区三区喷水 | 少妇性l交大片 | 丰满少妇熟乱xxxxx视频 | 成人无码视频免费播放 | 国产精品二区一区二区aⅴ污介绍 | 日本又色又爽又黄的a片18禁 | 亚洲天堂2017无码 | 久久这里只有精品视频9 | 久久国产精品萌白酱免费 | 国产精品成人av在线观看 | 内射后入在线观看一区 | 亚洲一区二区三区国产精华液 | 无遮挡国产高潮视频免费观看 | 亚洲成av人片天堂网无码】 | 成人一区二区免费视频 | 中文字幕av无码一区二区三区电影 | 久久精品国产一区二区三区肥胖 | 一本无码人妻在中文字幕免费 | 色综合视频一区二区三区 | 欧美日韩一区二区综合 | 国产va免费精品观看 | 欧美一区二区三区 | 天下第一社区视频www日本 | 无码人妻久久一区二区三区不卡 | 日本一区二区三区免费播放 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 天天摸天天透天天添 | 亚洲国产精品美女久久久久 | 亚洲精品一区国产 | 国产精品美女久久久久av爽李琼 | av小次郎收藏 | 国产在热线精品视频 | 亚洲欧美日韩国产精品一区二区 | 国产精品久久福利网站 | 国产熟妇高潮叫床视频播放 | 99久久无码一区人妻 | 97精品人妻一区二区三区香蕉 | 无套内射视频囯产 | 欧美一区二区三区视频在线观看 | 高清不卡一区二区三区 | 亚洲人成影院在线观看 | 成人片黄网站色大片免费观看 | 午夜精品久久久久久久久 | 天堂一区人妻无码 | 欧美人与动性行为视频 | 人妻与老人中文字幕 | 中文字幕无码日韩欧毛 | 国产偷国产偷精品高清尤物 | 老熟妇仑乱视频一区二区 | 天天综合网天天综合色 | 1000部啪啪未满十八勿入下载 | 国产综合久久久久鬼色 | 精品厕所偷拍各类美女tp嘘嘘 | 亚洲男女内射在线播放 | 日本欧美一区二区三区乱码 | 丰满人妻翻云覆雨呻吟视频 | 无码成人精品区在线观看 | 内射欧美老妇wbb | 人妻少妇被猛烈进入中文字幕 | 精品熟女少妇av免费观看 | 又大又硬又黄的免费视频 | 亚洲精品久久久久久一区二区 | 97夜夜澡人人爽人人喊中国片 | 亚洲高清偷拍一区二区三区 | 国产精品国产三级国产专播 | 亚洲精品美女久久久久久久 | 丰满少妇熟乱xxxxx视频 | 亚洲 激情 小说 另类 欧美 | 亚洲精品中文字幕久久久久 | 国产精品第一国产精品 | 亚洲成av人影院在线观看 | 伊人久久大香线焦av综合影院 | 久久久久久亚洲精品a片成人 | 天天拍夜夜添久久精品 | 色婷婷综合中文久久一本 | 三级4级全黄60分钟 | 欧美熟妇另类久久久久久多毛 | 中文字幕人妻丝袜二区 | 国产超级va在线观看视频 | 色窝窝无码一区二区三区色欲 | 日韩无码专区 | 无码国产色欲xxxxx视频 | 欧美精品一区二区精品久久 | 国产成人无码专区 | 巨爆乳无码视频在线观看 | 亚洲精品欧美二区三区中文字幕 | 老熟女乱子伦 | 在线а√天堂中文官网 | 久久亚洲精品中文字幕无男同 | 亚洲乱亚洲乱妇50p | 无码人妻出轨黑人中文字幕 | 婷婷丁香六月激情综合啪 | 成人一在线视频日韩国产 | 日韩av无码中文无码电影 | 国产精品无码久久av | 成人一区二区免费视频 | 亚洲综合久久一区二区 | 无码人妻av免费一区二区三区 | 欧美喷潮久久久xxxxx | 久久久久人妻一区精品色欧美 | 99精品视频在线观看免费 | 丰满妇女强制高潮18xxxx | 妺妺窝人体色www婷婷 | 日本又色又爽又黄的a片18禁 | 疯狂三人交性欧美 | 国产精品va在线播放 | 无码播放一区二区三区 | 中文字幕亚洲情99在线 | 性欧美牲交xxxxx视频 | 人人妻人人澡人人爽人人精品浪潮 | 欧美怡红院免费全部视频 | 日韩精品无码一区二区中文字幕 | 中文字幕无码视频专区 | 午夜免费福利小电影 | 欧洲欧美人成视频在线 | 日韩欧美成人免费观看 | 天下第一社区视频www日本 | 色综合久久久无码中文字幕 | 又大又黄又粗又爽的免费视频 | 国产两女互慰高潮视频在线观看 | 水蜜桃亚洲一二三四在线 | 免费看男女做好爽好硬视频 | 久久综合香蕉国产蜜臀av | 乱人伦人妻中文字幕无码 | 青青草原综合久久大伊人精品 | 亚洲爆乳无码专区 | 国产真实乱对白精彩久久 | 日韩成人一区二区三区在线观看 | 精品国偷自产在线视频 | 丰满岳乱妇在线观看中字无码 | 久久综合九色综合欧美狠狠 | 国产欧美精品一区二区三区 | 亚洲国产精品无码一区二区三区 | 精品无码国产一区二区三区av | 精品无码国产一区二区三区av | 亚洲色欲色欲天天天www | 精品久久久久久人妻无码中文字幕 | 在线欧美精品一区二区三区 | 99精品久久毛片a片 | 一本久久a久久精品亚洲 | 性欧美熟妇videofreesex | 亚洲精品久久久久中文第一幕 | 六十路熟妇乱子伦 | 午夜男女很黄的视频 | 精品国产一区av天美传媒 | 免费观看黄网站 | 亚洲人亚洲人成电影网站色 | 麻豆国产人妻欲求不满谁演的 | 图片小说视频一区二区 | 爽爽影院免费观看 | 亚洲 另类 在线 欧美 制服 | 久久精品国产99精品亚洲 | 性欧美牲交xxxxx视频 | 啦啦啦www在线观看免费视频 | 国产莉萝无码av在线播放 | 激情国产av做激情国产爱 | 国产特级毛片aaaaaaa高清 | 亚洲一区二区三区在线观看网站 | 国产精品无码mv在线观看 | 国产口爆吞精在线视频 | 欧美色就是色 | 国产av一区二区精品久久凹凸 | 国内精品人妻无码久久久影院蜜桃 | 欧美xxxx黑人又粗又长 | 波多野结衣av一区二区全免费观看 | 中国女人内谢69xxxxxa片 | 国产精品久久福利网站 | 天堂亚洲免费视频 | 7777奇米四色成人眼影 | 欧美人与善在线com | 国产亚洲精品久久久久久大师 | 亚洲国产精品毛片av不卡在线 | 国产熟妇高潮叫床视频播放 | 国产精品福利视频导航 | 女人被男人躁得好爽免费视频 | 又粗又大又硬又长又爽 | 国精产品一区二区三区 | 国产无遮挡吃胸膜奶免费看 | 十八禁视频网站在线观看 | 又紧又大又爽精品一区二区 | 亚洲欧洲日本综合aⅴ在线 | 亚洲 欧美 激情 小说 另类 | а√天堂www在线天堂小说 | 亚洲精品久久久久avwww潮水 | 玩弄人妻少妇500系列视频 | 日本www一道久久久免费榴莲 | 一本久道久久综合婷婷五月 | 国产黄在线观看免费观看不卡 | 色婷婷av一区二区三区之红樱桃 | 国产无套内射久久久国产 | 国产精品对白交换视频 | 欧洲熟妇精品视频 | 在教室伦流澡到高潮hnp视频 | 亚洲熟妇色xxxxx欧美老妇 | 国产无av码在线观看 | 97精品国产97久久久久久免费 | 老熟女重囗味hdxx69 | 免费无码av一区二区 | 丰满人妻翻云覆雨呻吟视频 | 亚欧洲精品在线视频免费观看 | 久久婷婷五月综合色国产香蕉 | 国产猛烈高潮尖叫视频免费 | 2020久久超碰国产精品最新 | 国产亚洲人成a在线v网站 | 国产香蕉97碰碰久久人人 | 草草网站影院白丝内射 | 欧美xxxx黑人又粗又长 | 男人扒开女人内裤强吻桶进去 | av人摸人人人澡人人超碰下载 | 日韩人妻无码中文字幕视频 | 日韩人妻系列无码专区 | 亚洲乱码中文字幕在线 | 色一情一乱一伦一视频免费看 | 无码人妻av免费一区二区三区 | 久久精品人妻少妇一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | аⅴ资源天堂资源库在线 | 丁香啪啪综合成人亚洲 | 领导边摸边吃奶边做爽在线观看 | 国产高潮视频在线观看 | 天堂一区人妻无码 | 人妻少妇精品无码专区二区 | 国产无av码在线观看 | 婷婷丁香五月天综合东京热 | 国产无遮挡又黄又爽又色 | 天干天干啦夜天干天2017 | 国产成人精品三级麻豆 | 国产肉丝袜在线观看 | 欧美成人高清在线播放 | 亚洲国产成人a精品不卡在线 | 色综合久久网 | 99久久精品国产一区二区蜜芽 | 丁香花在线影院观看在线播放 | 成人免费视频一区二区 | 无码福利日韩神码福利片 | 国产精品.xx视频.xxtv | 亚洲中文字幕av在天堂 | 日韩无套无码精品 | 窝窝午夜理论片影院 | 99久久久国产精品无码免费 | 乱人伦中文视频在线观看 | 欧美zoozzooz性欧美 | 久久精品丝袜高跟鞋 | 色五月五月丁香亚洲综合网 | 99久久99久久免费精品蜜桃 | 欧美精品无码一区二区三区 | 国产婷婷色一区二区三区在线 | 精品国产一区二区三区四区 | 精品欧洲av无码一区二区三区 | 无码一区二区三区在线 | 中文字幕人妻无码一区二区三区 | 久久久中文久久久无码 | 4hu四虎永久在线观看 | 色窝窝无码一区二区三区色欲 | 精品无人国产偷自产在线 | 亚洲爆乳无码专区 | 国产在线无码精品电影网 | 成人无码视频免费播放 | 国产亚洲精品久久久久久久久动漫 | 国模大胆一区二区三区 | 国产av无码专区亚洲awww | 亚洲色www成人永久网址 | 欧美成人高清在线播放 | 中文字幕亚洲情99在线 | 又大又硬又爽免费视频 | 亚洲欧美国产精品久久 | 午夜无码区在线观看 | 国产精品爱久久久久久久 | 无码av岛国片在线播放 | 无码av最新清无码专区吞精 | 欧美 日韩 亚洲 在线 | 精品一区二区不卡无码av | 无码人妻丰满熟妇区毛片18 | 亚洲の无码国产の无码步美 | 亚洲成av人在线观看网址 | 超碰97人人做人人爱少妇 | 国产人妻精品一区二区三区 | 成人无码视频在线观看网站 | 国产成人综合在线女婷五月99播放 | 国产成人无码区免费内射一片色欲 | 国产麻豆精品一区二区三区v视界 | 精品国产青草久久久久福利 | 国产人妻人伦精品1国产丝袜 | 久青草影院在线观看国产 | 一本大道久久东京热无码av | 日本丰满熟妇videos | 国产人妻大战黑人第1集 | 少妇一晚三次一区二区三区 | 四虎影视成人永久免费观看视频 | 熟妇人妻无码xxx视频 | 国内揄拍国内精品人妻 | 人妻少妇精品视频专区 | 亚洲一区二区三区在线观看网站 | 中文字幕+乱码+中文字幕一区 | 成在人线av无码免观看麻豆 | 无码播放一区二区三区 | 精品无码国产自产拍在线观看蜜 | 中文精品久久久久人妻不卡 | 久久久久av无码免费网 | 日韩精品无码免费一区二区三区 | 真人与拘做受免费视频一 | 装睡被陌生人摸出水好爽 | 熟女俱乐部五十路六十路av | 亚洲精品国产精品乱码视色 | 欧美怡红院免费全部视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 午夜精品久久久久久久久 | 色婷婷av一区二区三区之红樱桃 | 77777熟女视频在线观看 а天堂中文在线官网 | 日韩视频 中文字幕 视频一区 | 亚洲色偷偷男人的天堂 | 精品国偷自产在线视频 | 成人精品视频一区二区三区尤物 | 好爽又高潮了毛片免费下载 | 久久国产精品偷任你爽任你 | 啦啦啦www在线观看免费视频 | 扒开双腿吃奶呻吟做受视频 | 丰满岳乱妇在线观看中字无码 | 欧美变态另类xxxx | 久久综合色之久久综合 | 天天综合网天天综合色 | 婷婷六月久久综合丁香 | 领导边摸边吃奶边做爽在线观看 | 国产香蕉尹人综合在线观看 | 一本久久a久久精品vr综合 | 国产又爽又猛又粗的视频a片 | 欧美日韩久久久精品a片 | 野外少妇愉情中文字幕 | 精品久久久久久人妻无码中文字幕 | 激情亚洲一区国产精品 | 窝窝午夜理论片影院 | 欧美国产日韩亚洲中文 | 丰满诱人的人妻3 | 亚洲热妇无码av在线播放 | 日日碰狠狠躁久久躁蜜桃 | 啦啦啦www在线观看免费视频 | 久久无码中文字幕免费影院蜜桃 | 无码人妻丰满熟妇区毛片18 | 国产福利视频一区二区 | 亚洲中文无码av永久不收费 | 丝袜美腿亚洲一区二区 | 久久久久人妻一区精品色欧美 | 亚洲s色大片在线观看 | 亚洲精品中文字幕 | 亚洲人成网站色7799 | 久久久久国色av免费观看性色 | 啦啦啦www在线观看免费视频 | 亚洲成av人综合在线观看 | 人妻熟女一区 | 性生交大片免费看l | 日本熟妇大屁股人妻 | 六月丁香婷婷色狠狠久久 | 奇米影视888欧美在线观看 | 成人欧美一区二区三区 | 久久久久成人片免费观看蜜芽 | 久久精品女人的天堂av | a片免费视频在线观看 | 亚洲精品中文字幕久久久久 | 国产乱人伦偷精品视频 | 日韩欧美群交p片內射中文 | 男人扒开女人内裤强吻桶进去 | 人妻少妇被猛烈进入中文字幕 | 一本久久伊人热热精品中文字幕 | 老司机亚洲精品影院 | 强辱丰满人妻hd中文字幕 | 久久精品人妻少妇一区二区三区 | 爆乳一区二区三区无码 | 婷婷综合久久中文字幕蜜桃三电影 | 中文字幕人妻无码一区二区三区 | 国产无套内射久久久国产 | 色噜噜亚洲男人的天堂 | 欧美放荡的少妇 | 日韩人妻系列无码专区 | 午夜福利试看120秒体验区 | 免费国产成人高清在线观看网站 | 一二三四社区在线中文视频 | 亚洲一区二区三区 | 丰满妇女强制高潮18xxxx | 免费看男女做好爽好硬视频 | 狠狠综合久久久久综合网 | 国产精品人人妻人人爽 | 国内揄拍国内精品少妇国语 | 九一九色国产 | 99久久久国产精品无码免费 | 欧美丰满熟妇xxxx | a国产一区二区免费入口 | 国产在线一区二区三区四区五区 | 中国女人内谢69xxxxxa片 | 狠狠色丁香久久婷婷综合五月 | 久久久久免费看成人影片 | 两性色午夜免费视频 | 亚洲一区二区三区四区 | 国产乡下妇女做爰 | 免费国产成人高清在线观看网站 | 狠狠色噜噜狠狠狠7777奇米 | 波多野结衣一区二区三区av免费 | 给我免费的视频在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 天天躁日日躁狠狠躁免费麻豆 | 久久精品女人的天堂av | 亚洲精品中文字幕久久久久 | 国产电影无码午夜在线播放 | 丰满诱人的人妻3 | 红桃av一区二区三区在线无码av | 久久久久亚洲精品男人的天堂 | 欧美老熟妇乱xxxxx | 无码人妻av免费一区二区三区 | 午夜无码区在线观看 | 亚洲日韩一区二区三区 | 久久久久免费看成人影片 | 精品久久久久久亚洲精品 | 国产精品久久久 | 国产精品手机免费 | 最近的中文字幕在线看视频 | 蜜桃av抽搐高潮一区二区 | 国产又粗又硬又大爽黄老大爷视 | 欧美35页视频在线观看 | 亚洲欧美中文字幕5发布 | 欧洲精品码一区二区三区免费看 | 欧美兽交xxxx×视频 | 亚洲男人av香蕉爽爽爽爽 | 成在人线av无码免观看麻豆 | 伊人久久大香线蕉av一区二区 | 国产凸凹视频一区二区 | 国产亚洲美女精品久久久2020 | 久久天天躁夜夜躁狠狠 | 麻豆果冻传媒2021精品传媒一区下载 | www国产亚洲精品久久网站 | 牛和人交xxxx欧美 | 日韩精品无码免费一区二区三区 | 强伦人妻一区二区三区视频18 | 国内少妇偷人精品视频 | 国产精品a成v人在线播放 | 俺去俺来也在线www色官网 | 欧美日韩视频无码一区二区三 | 狂野欧美性猛交免费视频 | 少妇人妻大乳在线视频 | 精品国产一区二区三区四区 | 天天拍夜夜添久久精品 | √8天堂资源地址中文在线 | 国产女主播喷水视频在线观看 | 日韩成人一区二区三区在线观看 | 天天躁日日躁狠狠躁免费麻豆 | 久久精品成人欧美大片 | 无码午夜成人1000部免费视频 | 欧美亚洲日韩国产人成在线播放 | 欧美国产日产一区二区 | 人人爽人人爽人人片av亚洲 | 中文字幕日韩精品一区二区三区 | 人妻无码αv中文字幕久久琪琪布 | 国产做国产爱免费视频 | 国产成人综合在线女婷五月99播放 | 国产综合久久久久鬼色 | 日韩视频 中文字幕 视频一区 | 国产无遮挡吃胸膜奶免费看 | 特黄特色大片免费播放器图片 | 98国产精品综合一区二区三区 | 天下第一社区视频www日本 | 永久免费精品精品永久-夜色 | 日本大香伊一区二区三区 | 国产免费久久久久久无码 | 我要看www免费看插插视频 | 国产午夜无码视频在线观看 | 玩弄中年熟妇正在播放 | 国产真人无遮挡作爱免费视频 | 日韩 欧美 动漫 国产 制服 | 国产做国产爱免费视频 | 国内精品久久久久久中文字幕 | 亚洲熟妇自偷自拍另类 | 亚洲va欧美va天堂v国产综合 | 青青久在线视频免费观看 | 色窝窝无码一区二区三区色欲 | 国产成人无码区免费内射一片色欲 | 亚洲高清偷拍一区二区三区 | 成年美女黄网站色大免费全看 | 男女猛烈xx00免费视频试看 | 亚洲精品国产品国语在线观看 | 内射白嫩少妇超碰 | 妺妺窝人体色www婷婷 | 少妇愉情理伦片bd | 免费中文字幕日韩欧美 | 亚洲欧美国产精品专区久久 | 日韩av无码中文无码电影 | 久久精品女人的天堂av | 色欲久久久天天天综合网精品 | 欧美熟妇另类久久久久久多毛 | 日韩精品无码免费一区二区三区 | 国产激情精品一区二区三区 | 激情爆乳一区二区三区 | 未满小14洗澡无码视频网站 | 无码成人精品区在线观看 | 亚洲 a v无 码免 费 成 人 a v | 无码人妻精品一区二区三区不卡 | 久久综合九色综合97网 | 亚洲狠狠婷婷综合久久 | 成人影院yy111111在线观看 | 又大又黄又粗又爽的免费视频 | 久久综合九色综合欧美狠狠 | 妺妺窝人体色www在线小说 | 久久精品无码一区二区三区 | 亚洲国产精品成人久久蜜臀 | 中文亚洲成a人片在线观看 | 老子影院午夜伦不卡 | 少妇性l交大片欧洲热妇乱xxx | 欧美黑人性暴力猛交喷水 | 日本一卡二卡不卡视频查询 | 亚洲欧美精品aaaaaa片 | 亚洲精品鲁一鲁一区二区三区 | 一个人看的视频www在线 | 成在人线av无码免费 | 2020久久超碰国产精品最新 | 亚洲色偷偷偷综合网 | 亚洲精品www久久久 | 久久精品成人欧美大片 | 人妻aⅴ无码一区二区三区 | 国产免费无码一区二区视频 | 亚洲中文字幕av在天堂 | 日韩视频 中文字幕 视频一区 | 国产精品爱久久久久久久 | 蜜桃视频韩日免费播放 | 亚洲の无码国产の无码步美 | 国产亚洲精品久久久久久久 | 国产亚洲精品久久久久久久久动漫 | 蜜桃臀无码内射一区二区三区 | 婷婷五月综合缴情在线视频 | 欧美乱妇无乱码大黄a片 | 欧美激情综合亚洲一二区 | 狠狠色丁香久久婷婷综合五月 | 粉嫩少妇内射浓精videos | 两性色午夜免费视频 | 免费观看激色视频网站 | 欧美人妻一区二区三区 | 亚洲人成影院在线观看 | 少妇一晚三次一区二区三区 | 牛和人交xxxx欧美 | 性生交大片免费看l | 亚洲一区二区三区无码久久 | 婷婷五月综合缴情在线视频 | 亚洲人成影院在线无码按摩店 | 久久视频在线观看精品 | 久久综合网欧美色妞网 | 少妇久久久久久人妻无码 | 久久亚洲中文字幕无码 | 成人欧美一区二区三区黑人免费 | 国产sm调教视频在线观看 | 国内少妇偷人精品视频 | 宝宝好涨水快流出来免费视频 | 无码国产色欲xxxxx视频 | 亚洲日韩av一区二区三区四区 | 亚洲色偷偷偷综合网 | 国产乱人伦偷精品视频 | 偷窥日本少妇撒尿chinese | 国产69精品久久久久app下载 | 婷婷丁香六月激情综合啪 | 免费国产黄网站在线观看 | 久久午夜无码鲁丝片秋霞 | √天堂资源地址中文在线 | 人妻无码αv中文字幕久久琪琪布 | 宝宝好涨水快流出来免费视频 | 亚洲精品综合一区二区三区在线 | 中文精品久久久久人妻不卡 | 国产超碰人人爽人人做人人添 | 亚洲欧美中文字幕5发布 | 免费无码一区二区三区蜜桃大 | 麻豆人妻少妇精品无码专区 | 国产亚洲人成a在线v网站 | 色爱情人网站 | 欧美日本日韩 | 国产97在线 | 亚洲 | 暴力强奷在线播放无码 | 欧美老熟妇乱xxxxx | 日韩精品无码免费一区二区三区 | 久久综合香蕉国产蜜臀av | 精品久久久久香蕉网 | 日本xxxx色视频在线观看免费 | 在线视频网站www色 | 亚洲 欧美 激情 小说 另类 | 国产一区二区不卡老阿姨 | 亚洲无人区一区二区三区 | 成 人 网 站国产免费观看 | 亚洲精品一区三区三区在线观看 | 99精品国产综合久久久久五月天 | 亚洲综合在线一区二区三区 | 成人性做爰aaa片免费看 | 99久久久无码国产aaa精品 | 中文无码伦av中文字幕 | 中文字幕人妻无码一区二区三区 | 激情爆乳一区二区三区 | 无码人妻精品一区二区三区下载 | 亚洲精品欧美二区三区中文字幕 | 76少妇精品导航 | 国产精品人人爽人人做我的可爱 | 色婷婷久久一区二区三区麻豆 | 亚欧洲精品在线视频免费观看 | 久久久久久九九精品久 | 老熟妇仑乱视频一区二区 | 国产69精品久久久久app下载 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 精品人妻人人做人人爽夜夜爽 | 偷窥村妇洗澡毛毛多 | 国产情侣作爱视频免费观看 | 三上悠亚人妻中文字幕在线 | 熟女少妇在线视频播放 | 中文字幕人妻无码一区二区三区 | 国产精品久久国产精品99 | 国产xxx69麻豆国语对白 | 性生交大片免费看女人按摩摩 | 国产麻豆精品一区二区三区v视界 | 免费人成网站视频在线观看 | 久久综合网欧美色妞网 | 麻豆蜜桃av蜜臀av色欲av | 久青草影院在线观看国产 | 亚洲啪av永久无码精品放毛片 | 国产欧美熟妇另类久久久 | 精品水蜜桃久久久久久久 | 久久亚洲中文字幕精品一区 | 欧美刺激性大交 | 精品人妻人人做人人爽夜夜爽 | 国产乱码精品一品二品 | 亚洲午夜久久久影院 | 人妻中文无码久热丝袜 | 97精品国产97久久久久久免费 | 无码人妻丰满熟妇区五十路百度 | 日本欧美一区二区三区乱码 | 日本欧美一区二区三区乱码 | 免费无码午夜福利片69 | 日韩欧美中文字幕在线三区 | 东京热无码av男人的天堂 | 一本一道久久综合久久 | 亚洲一区二区三区香蕉 | 樱花草在线播放免费中文 | 久热国产vs视频在线观看 | 无码国产激情在线观看 | 国产成人无码区免费内射一片色欲 | 精品无码av一区二区三区 | 熟女体下毛毛黑森林 | 97夜夜澡人人爽人人喊中国片 | 国产99久久精品一区二区 | 久久综合久久自在自线精品自 | 樱花草在线社区www | 久久久www成人免费毛片 | 国产精品欧美成人 | 无码免费一区二区三区 | 日本一卡二卡不卡视频查询 | 伊人色综合久久天天小片 | 久久精品视频在线看15 | 国产高清不卡无码视频 | 在线观看欧美一区二区三区 | 亚洲国产精华液网站w | 亚洲精品一区二区三区四区五区 | 国产免费久久久久久无码 | 国产女主播喷水视频在线观看 | 久久综合香蕉国产蜜臀av | 日日鲁鲁鲁夜夜爽爽狠狠 | 99久久人妻精品免费一区 | 久久久婷婷五月亚洲97号色 | 日本又色又爽又黄的a片18禁 | 好爽又高潮了毛片免费下载 | 日本熟妇大屁股人妻 | 欧美兽交xxxx×视频 | 丝袜人妻一区二区三区 | 久久综合狠狠综合久久综合88 | 国产做国产爱免费视频 | 97精品国产97久久久久久免费 | 老司机亚洲精品影院无码 | 成在人线av无码免观看麻豆 | 精品一区二区三区波多野结衣 | 日本大乳高潮视频在线观看 | 天堂а√在线地址中文在线 | 麻豆国产97在线 | 欧洲 | 国产午夜无码视频在线观看 | 亚洲综合在线一区二区三区 | 亚洲欧美日韩国产精品一区二区 | 亚洲精品国产第一综合99久久 | 四虎永久在线精品免费网址 | 国产精品美女久久久 | 国内精品一区二区三区不卡 | 国产特级毛片aaaaaa高潮流水 | 国产精品成人av在线观看 | 熟妇激情内射com | 97se亚洲精品一区 | 成人免费视频在线观看 | 又色又爽又黄的美女裸体网站 | 天天燥日日燥 | 熟妇人妻中文av无码 | 撕开奶罩揉吮奶头视频 | 久久99精品国产麻豆蜜芽 | 亚洲国产欧美日韩精品一区二区三区 | 日韩欧美中文字幕在线三区 | 国产麻豆精品精东影业av网站 | 中文字幕 人妻熟女 | 成年女人永久免费看片 | 日本饥渴人妻欲求不满 | 成年美女黄网站色大免费全看 | 一个人看的www免费视频在线观看 | 精品人妻中文字幕有码在线 | 福利一区二区三区视频在线观看 | 亚洲色欲色欲欲www在线 | 日本大香伊一区二区三区 | 波多野结衣乳巨码无在线观看 | 欧美人与物videos另类 | 亚洲乱码日产精品bd | 老熟妇仑乱视频一区二区 | 欧美日本免费一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 3d动漫精品啪啪一区二区中 | 亚洲精品综合一区二区三区在线 | 熟妇人妻无码xxx视频 | 日韩少妇内射免费播放 | 丰满人妻被黑人猛烈进入 | 少妇无套内谢久久久久 | 国产精品久久久久久久9999 | 沈阳熟女露脸对白视频 | 国产亚洲精品久久久久久 | 久久精品人妻少妇一区二区三区 | 丰满肥臀大屁股熟妇激情视频 | 亚洲中文字幕无码一久久区 | 无码毛片视频一区二区本码 | 四虎4hu永久免费 | 国产精品人人妻人人爽 | 中文字幕无码人妻少妇免费 | 婷婷六月久久综合丁香 | 装睡被陌生人摸出水好爽 | 亚洲国产精品久久人人爱 | √天堂资源地址中文在线 | 国产亚洲精品久久久久久大师 | 两性色午夜免费视频 | 欧美黑人巨大xxxxx | 国产精品久久久久9999小说 | 亚洲日韩av一区二区三区四区 | 99精品久久毛片a片 | 日日躁夜夜躁狠狠躁 | 久热国产vs视频在线观看 | 四虎永久在线精品免费网址 | 国产精品99爱免费视频 | 国产电影无码午夜在线播放 | 强辱丰满人妻hd中文字幕 | 精品国产av色一区二区深夜久久 | 性开放的女人aaa片 | 一本色道婷婷久久欧美 | 国产一区二区三区日韩精品 | 久久人人爽人人爽人人片ⅴ | 欧美性生交xxxxx久久久 | 久久午夜夜伦鲁鲁片无码免费 | 国产特级毛片aaaaaaa高清 | 人妻少妇精品无码专区二区 | 野外少妇愉情中文字幕 | 久久久中文久久久无码 | 亚洲精品中文字幕乱码 | 国产97人人超碰caoprom | 无码国模国产在线观看 | 97夜夜澡人人爽人人喊中国片 | 国产精品美女久久久 | 亚洲欧美中文字幕5发布 | 又粗又大又硬毛片免费看 | 少妇无套内谢久久久久 | 大肉大捧一进一出好爽视频 | 狠狠噜狠狠狠狠丁香五月 | 人人妻人人藻人人爽欧美一区 | 国产精品视频免费播放 | 久久综合久久自在自线精品自 | 精品国产国产综合精品 | 熟妇人妻无乱码中文字幕 | 一个人看的www免费视频在线观看 | 国产激情艳情在线看视频 | 熟妇人妻中文av无码 | 乱中年女人伦av三区 | 欧美人与禽zoz0性伦交 | 亚洲精品久久久久avwww潮水 | 99麻豆久久久国产精品免费 | 午夜无码人妻av大片色欲 | 99精品久久毛片a片 | 久久人妻内射无码一区三区 | 图片区 小说区 区 亚洲五月 | 国产综合在线观看 | 国产成人久久精品流白浆 | 欧美日韩视频无码一区二区三 | 性开放的女人aaa片 | 国产农村乱对白刺激视频 | 欧美色就是色 | 在线看片无码永久免费视频 | 精品水蜜桃久久久久久久 | 少妇久久久久久人妻无码 | 亚洲一区二区三区含羞草 | 久久久久亚洲精品中文字幕 | 中文无码精品a∨在线观看不卡 | 在线成人www免费观看视频 | 免费播放一区二区三区 | 狠狠综合久久久久综合网 | 天天综合网天天综合色 | 在教室伦流澡到高潮hnp视频 | 青青草原综合久久大伊人精品 | 国内精品久久久久久中文字幕 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 人妻与老人中文字幕 | 无码av岛国片在线播放 | 国产又粗又硬又大爽黄老大爷视 | 欧美老妇交乱视频在线观看 | 日韩少妇内射免费播放 | 色偷偷人人澡人人爽人人模 | 内射老妇bbwx0c0ck | 国产69精品久久久久app下载 | 无码av岛国片在线播放 | 人妻少妇精品视频专区 | 久久综合网欧美色妞网 | 久久99国产综合精品 | 我要看www免费看插插视频 | 日产精品99久久久久久 | 久久婷婷五月综合色国产香蕉 | 国产精品无套呻吟在线 | 亚洲а∨天堂久久精品2021 | 妺妺窝人体色www在线小说 | 成人影院yy111111在线观看 | 日本高清一区免费中文视频 | 国产成人综合色在线观看网站 | 国产午夜无码精品免费看 | 欧美日韩一区二区三区自拍 | 国产成人av免费观看 | 午夜精品一区二区三区在线观看 | 亚洲欧洲无卡二区视頻 | 国产一区二区三区四区五区加勒比 | 国产成人无码a区在线观看视频app | 日本www一道久久久免费榴莲 | 午夜精品一区二区三区在线观看 | 俺去俺来也在线www色官网 | 国产无遮挡吃胸膜奶免费看 | 无码纯肉视频在线观看 | 欧美35页视频在线观看 | 国产色视频一区二区三区 | 亚洲乱码国产乱码精品精 | 国产熟妇另类久久久久 | 鲁大师影院在线观看 | 国产精品免费大片 | 人妻插b视频一区二区三区 | 日本xxxx色视频在线观看免费 | 天天拍夜夜添久久精品大 | 精品午夜福利在线观看 | 女高中生第一次破苞av | 欧美三级a做爰在线观看 | 国产suv精品一区二区五 | 欧美人与禽猛交狂配 | 欧美黑人性暴力猛交喷水 | 女人色极品影院 | 亚洲日韩av一区二区三区四区 | 国产成人无码区免费内射一片色欲 | 久久久久人妻一区精品色欧美 | 高潮毛片无遮挡高清免费视频 | 日本一卡2卡3卡四卡精品网站 | 日日摸天天摸爽爽狠狠97 | 国产乱人偷精品人妻a片 | av在线亚洲欧洲日产一区二区 | 国内少妇偷人精品视频 | 久久久久久久久888 | 熟妇人妻无码xxx视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产熟女一区二区三区四区五区 | 男女爱爱好爽视频免费看 | 狠狠综合久久久久综合网 | 两性色午夜视频免费播放 | 欧美日韩亚洲国产精品 | 国产精品毛多多水多 | 亚洲精品成人福利网站 | 蜜桃视频插满18在线观看 | 国产高清av在线播放 | 国产亚洲精品久久久ai换 | 国产精品久免费的黄网站 | 任你躁在线精品免费 | 成 人 网 站国产免费观看 | 欧美丰满老熟妇xxxxx性 | 亚洲精品一区二区三区大桥未久 | 国产九九九九九九九a片 | 国产婷婷色一区二区三区在线 | 日韩av无码一区二区三区 | 日本成熟视频免费视频 | 国产精品手机免费 | 中文字幕精品av一区二区五区 | 全球成人中文在线 | 女人被爽到呻吟gif动态图视看 | 亚洲狠狠色丁香婷婷综合 | 国产午夜视频在线观看 | 蜜桃视频插满18在线观看 | 久热国产vs视频在线观看 | 波多野结衣一区二区三区av免费 | 亚洲国产精品美女久久久久 | 免费乱码人妻系列无码专区 | 亚洲中文字幕无码中文字在线 | 蜜桃无码一区二区三区 | 国产乱码精品一品二品 | 亚洲国产成人av在线观看 | 97夜夜澡人人爽人人喊中国片 | 国产卡一卡二卡三 | 久久精品国产大片免费观看 | 国产内射老熟女aaaa | 麻花豆传媒剧国产免费mv在线 | 免费视频欧美无人区码 | 久久人人爽人人爽人人片av高清 | 牛和人交xxxx欧美 | 俄罗斯老熟妇色xxxx | 日日摸天天摸爽爽狠狠97 | 在线观看国产一区二区三区 | 久久成人a毛片免费观看网站 | 天下第一社区视频www日本 | 人妻少妇精品久久 | aⅴ亚洲 日韩 色 图网站 播放 | 爱做久久久久久 | 131美女爱做视频 | 少妇人妻大乳在线视频 | 亚洲精品国产品国语在线观看 | 老太婆性杂交欧美肥老太 | 97人妻精品一区二区三区 | 国产精品鲁鲁鲁 | 兔费看少妇性l交大片免费 | 中文字幕日韩精品一区二区三区 | 午夜性刺激在线视频免费 | 丁香花在线影院观看在线播放 | 台湾无码一区二区 | 精品国产一区二区三区四区在线看 | 日本xxxx色视频在线观看免费 | 99er热精品视频 | 国产精品久久久 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久久久免费看成人影片 | 婷婷色婷婷开心五月四房播播 | 一本久久a久久精品亚洲 | 欧美人与动性行为视频 | 中文字幕乱码亚洲无线三区 | 国产小呦泬泬99精品 | 99久久精品日本一区二区免费 | 国产午夜无码精品免费看 | 久久久久久久女国产乱让韩 | 国产网红无码精品视频 | 国产在线一区二区三区四区五区 | 久久天天躁夜夜躁狠狠 | 国产午夜视频在线观看 | 玩弄中年熟妇正在播放 | 国产精品丝袜黑色高跟鞋 | 性欧美牲交xxxxx视频 | 亚洲一区二区三区无码久久 | 亚洲熟悉妇女xxx妇女av | 亚洲国产精品成人久久蜜臀 | 亚洲精品国偷拍自产在线麻豆 | 无码任你躁久久久久久久 | av人摸人人人澡人人超碰下载 | 国产精品久久久久7777 | 国产午夜福利100集发布 | 男女爱爱好爽视频免费看 | 少妇无码av无码专区在线观看 | 成人精品一区二区三区中文字幕 | 亚拍精品一区二区三区探花 | 55夜色66夜色国产精品视频 | √8天堂资源地址中文在线 | 大地资源中文第3页 | 1000部啪啪未满十八勿入下载 | 国语自产偷拍精品视频偷 | 少妇无码一区二区二三区 | 曰韩少妇内射免费播放 | 国产一精品一av一免费 | 欧美丰满熟妇xxxx性ppx人交 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲人成网站免费播放 | 四虎永久在线精品免费网址 | 中文毛片无遮挡高清免费 | 国产莉萝无码av在线播放 | 精品无人区无码乱码毛片国产 | 又大又黄又粗又爽的免费视频 | 麻豆国产97在线 | 欧洲 | 波多野结衣乳巨码无在线观看 | 美女极度色诱视频国产 | 亚洲色成人中文字幕网站 | 亚洲精品久久久久久一区二区 | 久久久精品国产sm最大网站 | 人人妻人人澡人人爽人人精品浪潮 | 国产精品亚洲一区二区三区喷水 | 国产av无码专区亚洲a∨毛片 | 精品国精品国产自在久国产87 | 中文字幕无码av激情不卡 | 熟女体下毛毛黑森林 | 自拍偷自拍亚洲精品10p | 一个人看的www免费视频在线观看 | 日韩av无码一区二区三区不卡 | 综合网日日天干夜夜久久 | 一本色道婷婷久久欧美 | 色一情一乱一伦一区二区三欧美 | 久久国产精品二国产精品 | 国产又粗又硬又大爽黄老大爷视 | 一本无码人妻在中文字幕免费 | 少妇久久久久久人妻无码 | 国产乡下妇女做爰 | 日本爽爽爽爽爽爽在线观看免 | 午夜福利不卡在线视频 | 性色欲情网站iwww九文堂 | 三上悠亚人妻中文字幕在线 | 岛国片人妻三上悠亚 | 日本va欧美va欧美va精品 | 亚洲 激情 小说 另类 欧美 | 乱人伦中文视频在线观看 | 丁香啪啪综合成人亚洲 | 小泽玛莉亚一区二区视频在线 | av无码电影一区二区三区 | 国产精品免费大片 | 欧美日本精品一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 国产精品免费大片 | 亚洲熟悉妇女xxx妇女av | 亚洲国产成人a精品不卡在线 | 狠狠色噜噜狠狠狠狠7777米奇 | 又粗又大又硬毛片免费看 | 日日碰狠狠躁久久躁蜜桃 | 在线播放免费人成毛片乱码 | 成人免费视频在线观看 | 国内精品久久毛片一区二区 | 亚洲色在线无码国产精品不卡 | av无码电影一区二区三区 | 无码一区二区三区在线 | 内射爽无广熟女亚洲 | 精品人妻人人做人人爽 | 亚洲区欧美区综合区自拍区 | 国产成人午夜福利在线播放 | 鲁鲁鲁爽爽爽在线视频观看 | 精品国产av色一区二区深夜久久 | 国产真实乱对白精彩久久 | 国产两女互慰高潮视频在线观看 | 一本久久伊人热热精品中文字幕 | 久久精品国产大片免费观看 | 黑人巨大精品欧美黑寡妇 | 久久精品中文闷骚内射 | 中文无码伦av中文字幕 | 久久国语露脸国产精品电影 | 亚洲国产精品一区二区第一页 | 曰韩少妇内射免费播放 | 中文无码成人免费视频在线观看 | 人妻有码中文字幕在线 | 欧美人与禽zoz0性伦交 | 成人一在线视频日韩国产 | 色综合久久网 | 国产卡一卡二卡三 | 国精品人妻无码一区二区三区蜜柚 | 国产熟女一区二区三区四区五区 | 中文精品久久久久人妻不卡 | 亚洲日韩中文字幕在线播放 | 中文字幕色婷婷在线视频 | 国内精品人妻无码久久久影院蜜桃 | 亚洲人成影院在线观看 | 未满成年国产在线观看 | 精品亚洲韩国一区二区三区 | 久久99精品久久久久久动态图 | 少妇太爽了在线观看 | 国产精品久久久一区二区三区 | 国产激情综合五月久久 | 国产精品高潮呻吟av久久 | 麻豆精品国产精华精华液好用吗 | 性欧美熟妇videofreesex | 亚洲乱码中文字幕在线 | 麻花豆传媒剧国产免费mv在线 | 狠狠色欧美亚洲狠狠色www | 人人妻人人澡人人爽欧美一区九九 | www国产精品内射老师 | 77777熟女视频在线观看 а天堂中文在线官网 | 成熟人妻av无码专区 | 精品国产乱码久久久久乱码 | 精品人妻人人做人人爽夜夜爽 | 日本va欧美va欧美va精品 | 中文久久乱码一区二区 | 亚洲a无码综合a国产av中文 | 1000部啪啪未满十八勿入下载 | 天天拍夜夜添久久精品 | 天天av天天av天天透 | 一本久道久久综合婷婷五月 | 日本一卡2卡3卡四卡精品网站 | 奇米影视888欧美在线观看 | 欧美黑人性暴力猛交喷水 | 中文字幕av无码一区二区三区电影 | 国产成人无码一二三区视频 | 美女张开腿让人桶 | 丰满少妇弄高潮了www | 婷婷丁香六月激情综合啪 | 国产成人久久精品流白浆 | 超碰97人人做人人爱少妇 | 久久天天躁夜夜躁狠狠 | 亚洲熟女一区二区三区 | 99精品视频在线观看免费 | 亚洲爆乳大丰满无码专区 | 任你躁国产自任一区二区三区 | 国内揄拍国内精品少妇国语 | 在线a亚洲视频播放在线观看 | 成人精品视频一区二区 | 精品久久综合1区2区3区激情 | 色综合久久久久综合一本到桃花网 | 日韩亚洲欧美中文高清在线 | 欧美第一黄网免费网站 | √天堂中文官网8在线 | 亚洲区欧美区综合区自拍区 | 一个人免费观看的www视频 | 国产成人人人97超碰超爽8 | 国产又爽又猛又粗的视频a片 | 色婷婷综合激情综在线播放 | 精品国精品国产自在久国产87 | 国产香蕉尹人视频在线 | 成人一在线视频日韩国产 | 成人无码视频在线观看网站 | 丰满岳乱妇在线观看中字无码 | 国产无遮挡又黄又爽免费视频 | 亚洲码国产精品高潮在线 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产精品亚洲一区二区三区喷水 | 无码人妻少妇伦在线电影 | 国产人妻精品午夜福利免费 | 天堂无码人妻精品一区二区三区 | 久久99精品国产.久久久久 | 高中生自慰www网站 | 两性色午夜视频免费播放 | 窝窝午夜理论片影院 | 天堂无码人妻精品一区二区三区 | 精品欧美一区二区三区久久久 | 荫蒂添的好舒服视频囗交 | 中文字幕乱码亚洲无线三区 | 成人av无码一区二区三区 | 永久免费精品精品永久-夜色 | 亚洲人成网站在线播放942 | 偷窥日本少妇撒尿chinese | 日日摸天天摸爽爽狠狠97 | 久久亚洲国产成人精品性色 | 久久 国产 尿 小便 嘘嘘 | 成人毛片一区二区 | 牛和人交xxxx欧美 | 色欲综合久久中文字幕网 | 精品无码一区二区三区的天堂 | 精品无码一区二区三区的天堂 | 天天做天天爱天天爽综合网 | 日日碰狠狠躁久久躁蜜桃 | 狂野欧美激情性xxxx | 精品无码av一区二区三区 | 狂野欧美性猛xxxx乱大交 | 人妻无码αv中文字幕久久琪琪布 | 亚洲熟妇色xxxxx欧美老妇y | 精品偷自拍另类在线观看 | 人妻天天爽夜夜爽一区二区 | 欧美日韩在线亚洲综合国产人 | 高潮毛片无遮挡高清免费视频 | 一个人看的www免费视频在线观看 | 精品无码一区二区三区的天堂 | 中文字幕日产无线码一区 | 中国女人内谢69xxxx | 欧美黑人巨大xxxxx | 欧美熟妇另类久久久久久不卡 | 亚洲娇小与黑人巨大交 | 亚洲 激情 小说 另类 欧美 | 精品国精品国产自在久国产87 | 乱人伦中文视频在线观看 | 精品国产福利一区二区 | 色噜噜亚洲男人的天堂 | 亚洲精品国产a久久久久久 | 久久国产劲爆∧v内射 | 黑人巨大精品欧美一区二区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 久久综合网欧美色妞网 | 亚洲国产精品一区二区第一页 | 清纯唯美经典一区二区 | 一本大道久久东京热无码av | 日欧一片内射va在线影院 | 欧美日本精品一区二区三区 | 人妻少妇精品久久 | av小次郎收藏 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产suv精品一区二区五 | 蜜臀aⅴ国产精品久久久国产老师 | 久久精品视频在线看15 | 中文字幕av无码一区二区三区电影 | 妺妺窝人体色www在线小说 | 女人被男人爽到呻吟的视频 | 亚洲一区二区三区香蕉 | 青青青爽视频在线观看 | 波多野42部无码喷潮在线 | 丰满人妻一区二区三区免费视频 | 性生交大片免费看女人按摩摩 | 精品亚洲韩国一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 奇米影视7777久久精品人人爽 | 色噜噜亚洲男人的天堂 | 领导边摸边吃奶边做爽在线观看 | 又黄又爽又色的视频 | 久久综合色之久久综合 | 精品一区二区三区无码免费视频 | 久久久久av无码免费网 | 亚洲国产精品美女久久久久 | 国产乱人无码伦av在线a | 亚洲综合在线一区二区三区 | 中文无码精品a∨在线观看不卡 | 亚洲熟妇自偷自拍另类 | 亚洲成av人影院在线观看 | 欧美人与牲动交xxxx | 国产人妻久久精品二区三区老狼 | 亚洲精品一区二区三区在线 | 伊人久久大香线蕉亚洲 | 国产精品沙发午睡系列 | 亚洲娇小与黑人巨大交 | 精品久久久久久人妻无码中文字幕 | 亚洲日韩精品欧美一区二区 | 国内揄拍国内精品人妻 | 国产性生交xxxxx无码 | 无码播放一区二区三区 | 国产精品久久久久久久影院 | 精品国产一区二区三区四区在线看 | 色一情一乱一伦一视频免费看 | 夜夜影院未满十八勿进 | 日日碰狠狠躁久久躁蜜桃 | 99久久精品午夜一区二区 | 亚洲综合伊人久久大杳蕉 | 久久综合网欧美色妞网 | 国产午夜亚洲精品不卡下载 | 国产精品无码一区二区三区不卡 | 免费人成网站视频在线观看 | 国产免费无码一区二区视频 | 日本www一道久久久免费榴莲 | 国产精品香蕉在线观看 | 在线欧美精品一区二区三区 | 一本精品99久久精品77 | 午夜福利试看120秒体验区 | 无码人妻精品一区二区三区不卡 | 亚洲s码欧洲m码国产av | 精品国产av色一区二区深夜久久 | 日韩少妇内射免费播放 | 成人av无码一区二区三区 | 性欧美videos高清精品 | 国产午夜福利亚洲第一 | 精品偷拍一区二区三区在线看 | 人妻夜夜爽天天爽三区 | 水蜜桃av无码 | 国产69精品久久久久app下载 | 国产精品18久久久久久麻辣 | 午夜精品久久久内射近拍高清 | 久久精品国产一区二区三区肥胖 | 国产精品va在线观看无码 | 成在人线av无码免观看麻豆 | 久久久婷婷五月亚洲97号色 | 精品成人av一区二区三区 | 欧美成人家庭影院 | 亚洲国产欧美国产综合一区 | 一区二区三区高清视频一 | 中文精品无码中文字幕无码专区 | 国产性生大片免费观看性 | 亚洲最大成人网站 | 国产精品亚洲一区二区三区喷水 | 亚洲成a人片在线观看日本 | 西西人体www44rt大胆高清 | 午夜男女很黄的视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产绳艺sm调教室论坛 | 国产成人无码区免费内射一片色欲 | 成年女人永久免费看片 | 青青草原综合久久大伊人精品 | 99精品视频在线观看免费 | 久久久久久九九精品久 | 色诱久久久久综合网ywww | 成人欧美一区二区三区黑人免费 | 亚洲区欧美区综合区自拍区 | 亚洲精品综合五月久久小说 | 亚无码乱人伦一区二区 | 久久zyz资源站无码中文动漫 | 精品久久久无码中文字幕 | 国产午夜精品一区二区三区嫩草 | 亚洲精品中文字幕久久久久 | 99久久精品国产一区二区蜜芽 | 色妞www精品免费视频 | 亚洲人成人无码网www国产 | 亚洲综合在线一区二区三区 | 999久久久国产精品消防器材 | 国产xxx69麻豆国语对白 | 少妇高潮一区二区三区99 | 国产偷自视频区视频 | 狠狠亚洲超碰狼人久久 | 88国产精品欧美一区二区三区 | 夜夜高潮次次欢爽av女 | 樱花草在线播放免费中文 | 精品久久久久久人妻无码中文字幕 | 国产精品久久久久无码av色戒 | 欧美 亚洲 国产 另类 | 性欧美大战久久久久久久 | 国产suv精品一区二区五 | 国产xxx69麻豆国语对白 | 中文无码成人免费视频在线观看 | 少妇激情av一区二区 | 蜜桃av抽搐高潮一区二区 | 人妻少妇精品无码专区二区 | 久久午夜夜伦鲁鲁片无码免费 | 国产综合久久久久鬼色 | 久久国语露脸国产精品电影 | 水蜜桃色314在线观看 | 99视频精品全部免费免费观看 | 国产精品高潮呻吟av久久 | 国产乱码精品一品二品 | 免费国产成人高清在线观看网站 | 99er热精品视频 | 欧美性生交活xxxxxdddd | 在线 国产 欧美 亚洲 天堂 | 精品人妻中文字幕有码在线 | 少妇邻居内射在线 | 中文字幕乱码中文乱码51精品 | 无码福利日韩神码福利片 | 国产成人精品一区二区在线小狼 | 国产精品a成v人在线播放 | 日本一卡2卡3卡四卡精品网站 | 国产另类ts人妖一区二区 | 东京热一精品无码av | 亚洲国产综合无码一区 | 国产成人亚洲综合无码 | 亚洲国精产品一二二线 | 嫩b人妻精品一区二区三区 | 午夜性刺激在线视频免费 | 欧美人与善在线com | 蜜桃臀无码内射一区二区三区 | 久久亚洲日韩精品一区二区三区 | 东京无码熟妇人妻av在线网址 | 国产成人综合美国十次 | 欧美老熟妇乱xxxxx | 国产成人精品一区二区在线小狼 | 精品久久久无码中文字幕 | 久久精品国产日本波多野结衣 | 无码人妻少妇伦在线电影 | 国产成人av免费观看 | 97夜夜澡人人双人人人喊 | 熟妇人妻无乱码中文字幕 | 中文无码精品a∨在线观看不卡 | 久久久久99精品成人片 | √8天堂资源地址中文在线 | 亚洲综合伊人久久大杳蕉 | 国产九九九九九九九a片 | 国产亚洲精品久久久久久 | 福利一区二区三区视频在线观看 | 亚洲日韩av一区二区三区中文 | 久久视频在线观看精品 | 国产麻豆精品一区二区三区v视界 | 女高中生第一次破苞av | 亚洲国产av精品一区二区蜜芽 | 亚洲综合色区中文字幕 | 午夜精品一区二区三区在线观看 | 亚洲人成无码网www | 老子影院午夜精品无码 | 人人妻人人澡人人爽人人精品浪潮 | 久久精品成人欧美大片 | 亲嘴扒胸摸屁股激烈网站 | 久久久久se色偷偷亚洲精品av | 久久综合香蕉国产蜜臀av | 日本一区二区更新不卡 | 无码中文字幕色专区 | 永久免费观看美女裸体的网站 | 亚洲乱码日产精品bd | 麻豆国产丝袜白领秘书在线观看 | 一本久久a久久精品vr综合 | 午夜时刻免费入口 | 欧美日韩一区二区三区自拍 | 国产精品久久久久无码av色戒 | 熟妇人妻无乱码中文字幕 | 亚洲欧洲无卡二区视頻 | 无码人妻丰满熟妇区五十路百度 | 国产精品亚洲lv粉色 | 性做久久久久久久久 | 2020久久香蕉国产线看观看 | 国产乱人伦av在线无码 | 熟女体下毛毛黑森林 | 影音先锋中文字幕无码 | 日韩欧美中文字幕公布 | 免费乱码人妻系列无码专区 | 无码国模国产在线观看 | 国产人妻精品一区二区三区不卡 | 丝袜人妻一区二区三区 | 国产明星裸体无码xxxx视频 | 国产手机在线αⅴ片无码观看 | 亚洲日韩av一区二区三区四区 | 成人无码影片精品久久久 | 成年女人永久免费看片 | 欧美日本精品一区二区三区 | 日本一区二区三区免费高清 | 狠狠噜狠狠狠狠丁香五月 | 国产午夜精品一区二区三区嫩草 | 国产亚洲精品久久久久久久久动漫 | 久久国产精品精品国产色婷婷 | 黑森林福利视频导航 | 呦交小u女精品视频 | 免费播放一区二区三区 | 国产午夜福利亚洲第一 | 人妻尝试又大又粗久久 | 婷婷综合久久中文字幕蜜桃三电影 | 永久免费观看国产裸体美女 | 97se亚洲精品一区 | 夫妻免费无码v看片 | 国产亚洲美女精品久久久2020 | 鲁一鲁av2019在线 | 丰满岳乱妇在线观看中字无码 | 鲁一鲁av2019在线 | 曰本女人与公拘交酡免费视频 | 久久久久亚洲精品中文字幕 | 日本欧美一区二区三区乱码 | 亚洲经典千人经典日产 | 亚洲精品www久久久 | 中文字幕乱码人妻二区三区 | 亚洲一区av无码专区在线观看 | 国产va免费精品观看 | 国内少妇偷人精品视频 | 亚洲国产精品一区二区美利坚 | 欧美35页视频在线观看 | 亚洲国产欧美在线成人 | 无码人妻黑人中文字幕 | 成人免费无码大片a毛片 | 亚洲综合伊人久久大杳蕉 | 无码毛片视频一区二区本码 | 精品厕所偷拍各类美女tp嘘嘘 | 欧美亚洲日韩国产人成在线播放 | 久久久久av无码免费网 | 日本精品人妻无码免费大全 | 久久午夜无码鲁丝片午夜精品 | 日韩欧美中文字幕公布 | 亚洲a无码综合a国产av中文 | 黑森林福利视频导航 | 5858s亚洲色大成网站www | 日韩少妇内射免费播放 | 亚洲中文字幕成人无码 | 国产成人午夜福利在线播放 | 婷婷丁香六月激情综合啪 | 国产精品久久久久久亚洲影视内衣 | 性生交大片免费看l | 一个人看的www免费视频在线观看 | 亚洲精品一区二区三区婷婷月 | 亲嘴扒胸摸屁股激烈网站 | 国产精品美女久久久 | 大乳丰满人妻中文字幕日本 | 国产熟女一区二区三区四区五区 | 亚洲爆乳大丰满无码专区 | 成年女人永久免费看片 | 巨爆乳无码视频在线观看 | 久久久久久久人妻无码中文字幕爆 | 久久精品国产99久久6动漫 | 在线а√天堂中文官网 | 国产精品丝袜黑色高跟鞋 | 国产舌乚八伦偷品w中 | 欧美黑人性暴力猛交喷水 | 扒开双腿疯狂进出爽爽爽视频 | 男人和女人高潮免费网站 | 日本一卡2卡3卡四卡精品网站 | 久久无码人妻影院 | 成人免费视频视频在线观看 免费 | 午夜免费福利小电影 | 无人区乱码一区二区三区 | 国产69精品久久久久app下载 | 无遮挡啪啪摇乳动态图 | 色综合久久久无码中文字幕 | 欧美放荡的少妇 | 内射巨臀欧美在线视频 | 98国产精品综合一区二区三区 | 丁香花在线影院观看在线播放 | 国产人妻久久精品二区三区老狼 | 玩弄人妻少妇500系列视频 | 亚洲爆乳精品无码一区二区三区 | 国产色xx群视频射精 | 中文字幕色婷婷在线视频 | 日韩av无码中文无码电影 | 天天燥日日燥 | 日本成熟视频免费视频 | 一本色道久久综合亚洲精品不卡 | 蜜桃视频插满18在线观看 | 在教室伦流澡到高潮hnp视频 | 免费观看激色视频网站 | 乱人伦中文视频在线观看 | 日韩少妇内射免费播放 | 国产9 9在线 | 中文 | 国产精品a成v人在线播放 | 性做久久久久久久免费看 | 国产精品高潮呻吟av久久 | 国产精品无套呻吟在线 | 欧美喷潮久久久xxxxx | 日本va欧美va欧美va精品 | 精品久久久久久人妻无码中文字幕 | 国产成人一区二区三区在线观看 | 少妇性俱乐部纵欲狂欢电影 | 未满成年国产在线观看 | 免费看男女做好爽好硬视频 | 99久久无码一区人妻 | 亚洲 a v无 码免 费 成 人 a v | 丝袜足控一区二区三区 | 无人区乱码一区二区三区 | 无码国产激情在线观看 | 午夜精品久久久久久久久 | 老熟妇仑乱视频一区二区 | 国精品人妻无码一区二区三区蜜柚 | 超碰97人人射妻 | 欧美国产日产一区二区 | 无码精品国产va在线观看dvd | a国产一区二区免费入口 | 亚洲天堂2017无码 | 日日橹狠狠爱欧美视频 | 欧美性生交xxxxx久久久 | 99久久亚洲精品无码毛片 | 国产精品美女久久久久av爽李琼 | 日韩亚洲欧美精品综合 | 欧美成人免费全部网站 | 欧美亚洲国产一区二区三区 | 国产深夜福利视频在线 | 国产成人精品一区二区在线小狼 | 国语精品一区二区三区 | 亚洲男人av天堂午夜在 | 亚洲精品中文字幕乱码 | 亚洲一区二区三区香蕉 | 麻豆精品国产精华精华液好用吗 | 人妻中文无码久热丝袜 | 国内精品九九久久久精品 | 色综合久久中文娱乐网 | 人人澡人摸人人添 | 精品无码一区二区三区的天堂 | 亚洲欧美国产精品专区久久 | 日韩av无码中文无码电影 | 国产精品无码一区二区三区不卡 | 久久久久se色偷偷亚洲精品av | 日韩精品成人一区二区三区 | 午夜无码区在线观看 | 日日天日日夜日日摸 | 色偷偷人人澡人人爽人人模 | 小sao货水好多真紧h无码视频 | 免费无码的av片在线观看 | 98国产精品综合一区二区三区 | 沈阳熟女露脸对白视频 | 无遮挡国产高潮视频免费观看 | 一本无码人妻在中文字幕免费 | √天堂资源地址中文在线 | 麻豆蜜桃av蜜臀av色欲av | 日本免费一区二区三区最新 | 久久久久免费看成人影片 | 亚洲熟妇色xxxxx欧美老妇y | 国产乱人无码伦av在线a | 久久99精品国产麻豆蜜芽 | 九九综合va免费看 | 最新国产麻豆aⅴ精品无码 | 亚洲性无码av中文字幕 | 亚洲伊人久久精品影院 | 日本在线高清不卡免费播放 | 久久人妻内射无码一区三区 | 亚洲中文字幕无码中文字在线 | 人妻插b视频一区二区三区 | 亲嘴扒胸摸屁股激烈网站 | 正在播放东北夫妻内射 | 中文字幕日韩精品一区二区三区 | 国产成人精品必看 | 欧美 日韩 人妻 高清 中文 | 天堂久久天堂av色综合 | 亚洲乱码日产精品bd | 无码精品人妻一区二区三区av | 欧美成人免费全部网站 | 中文字幕无码人妻少妇免费 | 亚洲天堂2017无码中文 | 少妇久久久久久人妻无码 | 亚洲精品一区二区三区大桥未久 | 无码人妻丰满熟妇区五十路百度 | 中文字幕无码热在线视频 | 日韩视频 中文字幕 视频一区 | 亚洲乱码国产乱码精品精 | 国产手机在线αⅴ片无码观看 | 国产乱码精品一品二品 | 亚洲日韩av一区二区三区四区 | 亚洲中文无码av永久不收费 | 蜜桃av抽搐高潮一区二区 | 久久无码专区国产精品s | 亚洲欧美精品aaaaaa片 | 亚洲精品午夜国产va久久成人 | 国产免费无码一区二区视频 | 国产精品美女久久久网av | 国内少妇偷人精品视频免费 | 内射巨臀欧美在线视频 | 97夜夜澡人人爽人人喊中国片 | 欧美激情内射喷水高潮 | 国产偷国产偷精品高清尤物 | 无码吃奶揉捏奶头高潮视频 | 国产精品久久久午夜夜伦鲁鲁 | 日韩人妻系列无码专区 | 天天拍夜夜添久久精品大 | 麻豆精品国产精华精华液好用吗 | 亚洲 欧美 激情 小说 另类 | 日韩人妻系列无码专区 | 99久久久无码国产aaa精品 | 男女性色大片免费网站 | 呦交小u女精品视频 | 久热国产vs视频在线观看 | 无码午夜成人1000部免费视频 | 7777奇米四色成人眼影 | 六月丁香婷婷色狠狠久久 | 7777奇米四色成人眼影 | 麻豆精品国产精华精华液好用吗 | 成人免费视频视频在线观看 免费 | 亚洲精品成人av在线 | 人妻体内射精一区二区三四 | 国产激情艳情在线看视频 | 亚洲另类伦春色综合小说 | 成人性做爰aaa片免费看不忠 | 欧美成人家庭影院 | 女人被男人躁得好爽免费视频 | 国产亚洲精品久久久久久大师 | 亚洲精品国偷拍自产在线麻豆 | 日本xxxx色视频在线观看免费 | 国产精品毛多多水多 | 国产精品久久精品三级 | 国产成人综合在线女婷五月99播放 | 欧美xxxxx精品 | 天天燥日日燥 | 亚洲成av人在线观看网址 | 国产无遮挡又黄又爽又色 | 西西人体www44rt大胆高清 | 中文无码伦av中文字幕 |