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

【死磕JVM】這可能是最全的JVM面試題了

開發 前端
本篇帶給大家一篇全網最全的JVM面試題,希望對你有所幫助!

[[404599]]

1. 描述一下jvm內存模型


2.堆內存劃分的空間

垃圾回收算法: 標記清除、復制(多為新生代垃圾回收使用)、標記整理

3.如何解決線上gc頻繁的問題?

  1. 查看監控,以了解出現問題的時間點以及當前FGC的頻率(可對比正常情況看頻率是否正常)
  2. 了解該時間點之前有沒有程序上線、基礎組件升級等情況。
  3. 了解JVM的參數設置,包括:堆空間各個區域的大小設置,新生代和老年代分別采用了哪些垃 圾收集器,然后分析JVM參數設置是否合理。
  4. 再對步驟1中列出的可能原因做排除法,其中元空間被打滿、內存泄漏、代碼顯式調用gc方法 比較容易排查。
  5. 針對大對象或者長生命周期對象導致的FGC,可通過 jmap -histo 命令并結合dump堆內存文件作進一步分析,需要先定位到可疑對象。
  6. 通過可疑對象定位到具體代碼再次分析,這時候要結合GC原理和JVM參數設置,弄清楚可疑 對象是否滿足了進入到老年代的條件才能下結論。

4.描述一下class初始化過程?

一個類初始化就是執行clinit()方法,過程如下:

  • 父類初始化
  • static變量初始化/static塊(按照文本順序執行)

Java Language Specification中,類初始化詳細過程如下(最重要的是類初始化是線程安全的):

  1. 每個類都有一個初始化鎖LC,進程獲取LC(如果沒有獲取到,就一直等待)
  2. 如果C正在被其他線程初始化,釋放LC并等待C初始化完成
  3. 如果C正在被本線程初始化,即遞歸初始化,釋放LC
  4. 如果C已經被初始化了,釋放LC
  5. 如果C處于erroneous狀態,釋放LC并拋出異常NoClassDefFoundError
  6. 否則,將C標記為正在被本線程初始化,釋放LC;然后, 初始化那些final且為基礎類型的類成員變量
  7. 初始化C的父類SC和各個接口SI_n(按照implements子句中的順序來) ;如果SC或SIn初始化過程中拋出異常,則獲取LC,將C標記為erroneous,并通知所有線程,然后釋放LC,然后 再拋出同樣的異常。
  8. 從classloader處獲取assertion是否被打開
  9. 接下來, 按照文本順序執行類變量初始化和靜態代碼塊,或接口的字段初始化,把它們當作是一個個單獨的代碼塊。
  10. 如果執行正常,獲取LC,標記C為已初始化,并通知所有線程,然后釋放LC
  11. 否則,如果拋出了異常E。若E不是Error,則以E為參數創建新的異常ExceptionInInitializerError作為E。如果因為OutOfMemoryError導致無法創建ExceptionInInitializerError,則將OutOfMemoryError作為E。
  12. 獲取LC,將C標記為erroneous,通知所有等待的線程,釋放LC,并拋出異常E

5.簡述一下內存溢出的原因,如何排查線上問題?

內存溢出的原因

  • java.lang.OutOfMemoryError: ......java heap space. 堆棧溢出,代碼問題的可能性極大
  • java.lang.OutOfMemoryError: GC over head limit exceeded 系統處于高頻的GC狀態,而且回收的效果依然不佳的情況,就會開始報這個錯誤,這種情況一般是產生了很多不可以被釋放 的對象,有可能是引用使用不當導致,或申請大對象導致,但是java heap space的內存溢出有可能提前不會報這個錯誤,也就是可能內存就直接不夠導致,而不是高頻GC.
  • java.lang.OutOfMemoryError: PermGen space jdk1.7之前才會出現的問題 ,原因是系統的代碼非常多或引用的第三方包非常多、或代碼中使用了大量的常量、或通過intern注入常量、 或者通過動態代碼加載等方法,導致常量池的膨脹
  • java.lang.OutOfMemoryError: Direct buffer memory 直接內存不足,因為jvm垃圾回收不會回收掉直接內存這部分的內存,所以可能原因是直接或間接使用了ByteBuffer中的allocateDirect方法的時候,而沒有做clear
  • java.lang.StackOverflowError - Xss設置的太小了
  • java.lang.OutOfMemoryError: unable to create new native thread 堆外內存不足,無法為線程分配內存區域
  • java.lang.OutOfMemoryError: request {} byte for {}out of swap 地址空間不夠

6.jvm有哪些垃圾回收器,實際中如何選擇?

圖中展示了7種作用于不同分代的收集器,如果兩個收集器之間存在連線,則說明它們可以搭配使用。虛 擬機所處的區域則表示它是屬于新生代還是老年代收集器。

新生代收集器(全部的都是復制算法):Serial、ParNew、Parallel Scavenge

老年代收集器:CMS(標記-清理)、Serial Old(標記-整理)、Parallel Old(標記整理) 整堆收集器:G1(一個Region中是標記-清除算法,2個Region之間是復制算法)

同時,先解釋幾個名詞:

  1. 并行(Parallel):多個垃圾收集線程并行工作,此時用戶線程處于等待狀態
  2. 并發(Concurrent):用戶線程和垃圾收集線程同時執行
  3. 吞吐量:運行用戶代碼時間/(運行用戶代碼時間+垃圾回收時間)

1.Serial收集器是最基本的、發展歷史最悠久的收集器

特點: 單線程、簡單高效(與其他收集器的單線程相比),對于限定單個CPU的環境來說,Serial收集器 由于沒有線程交互的開銷,專心做垃圾收集自然可以獲得最高的單線程手機效率。收集器進行垃圾回收 時,必須暫停其他所有的工作線程,直到它結束(Stop The World)。

應用場景: 適用于Client模式下的虛擬機。

Serial / Serial Old收集器運行示意圖:

2.ParNew收集器其實就是Serial收集器的多線程版本。

除了使用多線程外其余行為均和Serial收集器一模一樣(參數控制、收集算法、Stop The World、對象分配規則、回收策略等)。

特點: 多線程、ParNew收集器默認開啟的收集線程數與CPU的數量相同,在CPU非常多的環境中,可以 使用-XX:ParallelGCThreads參數來限制垃圾收集的線程數。

和Serial收集器一樣存在Stop The World問題

應用場景: ParNew收集器是許多運行在Server模式下的虛擬機中首選的新生代收集器,因為它是除了 Serial收集器外,唯一一個能與CMS收集器配合工作的。

ParNew/Serial Old組合收集器運行示意圖如下:

3.Parallel Scavenge 收集器與吞吐量關系密切,故也稱為吞吐量優先收集器。

特點: 屬于新生代收集器也是采用復制算法的收集器,又是并行的多線程收集器(與ParNew收集器類 似)。該收集器的目標是達到一個可控制的吞吐量。還有一個值得關注的點是:GC自適應調節策略(與 ParNew收集器最重要的一個區別)

GC自適應調節策略: Parallel Scavenge收集器可設置-XX:+UseAdptiveSizePolicy參數。當開關打開時不需要手動指定新生代的大小(-Xmn)、Eden與Survivor區的比例(-XX:SurvivorRation)、晉升老年代 的對象年齡(-XX:PretenureSizeThreshold)等,虛擬機會根據系統的運行狀況收集性能監控信息,動 態設置這些參數以提供最優的停頓時間和最高的吞吐量,這種調節方式稱為GC的自適應調節策略。

Parallel Scavenge收集器使用兩個參數控制吞吐量:XX:MaxGCPauseMillis 控制最大的垃圾收集停頓時間 XX:GCRatio 直接設置吞吐量的大小。

4.Serial Old是Serial收集器的老年代版本。

特點: 同樣是單線程收集器,采用標記-整理算法。

應用場景: 主要也是使用在Client模式下的虛擬機中。也可在Server模式下使用。Server模式下主要的兩大用途(在后續中詳細講解···):

在JDK1.5以及以前的版本中與Parallel Scavenge收集器搭配使用。

作為CMS收集器的后備方案,在并發收集Concurent Mode Failure時使用。

Serial / Serial Old收集器工作過程圖(Serial收集器圖示相同):

5.Parallel Old是Parallel Scavenge收集器的老年代版本。

特點: 多線程,采用標記-整理算法。

應用場景: 注重高吞吐量以及CPU資源敏感的場合,都可以優先考慮Parallel Scavenge+Parallel Old 收集器。

6.CMS收集器是一種以獲取最短回收停頓時間為目標的收集器。

特點: 基于標記-清除算法實現。并發收集、低停頓。

應用場景: 適用于注重服務的響應速度,希望系統停頓時間最短,給用戶帶來更好的體驗等場景下。如web程序、b/s服務。

CMS收集器的運行過程分為下列4步:

初始標記: 標記GC Roots能直接到的對象。速度很快但是仍存在Stop The World問題。

并發標記: 進行GC Roots Tracing 的過程,找出存活對象且用戶線程可并發執行。

重新標記: 為了修正并發標記期間因用戶程序繼續運行而導致標記產生變動的那一部分對象的標記記 錄。仍然存在Stop The World問題。

并發清除: 對標記的對象進行清除回收。CMS收集器的內存回收過程是與用戶線程一起并發執行的。

CMS收集器的工作過程圖:

CMS收集器的缺點:

  • 對CPU資源非常敏感。
  • 無法處理浮動垃圾,可能出現Concurrent Model Failure失敗而導致另一次Full GC的產生。
  • 因為采用標記-清除算法所以會存在空間碎片的問題,導致大對象無法分配空間,不得不提前觸發 一次Full GC。

7.G1收集器一款面向服務端應用的垃圾收集器。

特點如下:

并行與并發:G1能充分利用多CPU、多核環境下的硬件優勢,使用多個CPU來縮短Stop-The-World停頓時間。部分收集器原本需要停頓Java線程來執行GC動作,G1收集器仍然可以通過并發的方式讓Java程序繼續運行。

分代收集:G1能夠獨自管理整個Java堆,并且采用不同的方式去處理新創建的對象和已經存活了一段時間、熬過多次GC的舊對象以獲取更好的收集效果。

空間整合:G1運作期間不會產生空間碎片,收集后能提供規整的可用內存。

可預測的停頓:G1除了追求低停頓外,還能建立可預測的停頓時間模型。能讓使用者明確指定在一個長度為M毫秒的時間段內,消耗在垃圾收集上的時間不得超過N毫秒。

G1收集器運行示意圖:

關于gc的選擇除非應用程序有非常嚴格的暫停時間要求,否則請先運行應用程序并允許VM選擇收集器(如果沒有特別要求。使用VM提供給的默認GC就好)。

如有必要,調整堆大小以提高性能。如果性能仍然不能滿足目標,請使用以下準則作為選擇收集器的起點:

  • 如果應用程序的數據集較小(最大約100 MB),則選擇帶有選項-XX:+ UseSerialGC的串行收集器。
  • 如果應用程序將在單個處理器上運行,并且沒有暫停時間要求,則選擇帶有選項-XX:+UseSerialGC的串行收集器
  • 如果(a)峰值應用程序性能是第一要務,并且(b)沒有暫停時間要求或可接受一秒或更長時間的暫停,則讓VM選擇收集器或使用-XX:+ UseParallelGC選擇并行收集器 。
  • 如果響應時間比整體吞吐量更重要,并且垃圾收集暫停時間必須保持在大約一秒鐘以內,則選擇具有-XX:+ UseG1GC。(值得注意的是JDK9中CMS已經被Deprecated,不可使用!移除該選項)
  • 如果使用的是jdk8,并且堆內存達到了16G,那么推薦使用G1收集器,來控制每次垃圾收集的時間。
  • 如果響應時間是高優先級,或使用的堆非常大,請使用-XX:UseZGC選擇完全并發的收集器。(值得注意的是JDK11開始可以啟動ZGC,但是此時ZGC具有實驗性質,在JDK15中
  • [202009發布]才取消實驗性質的標簽,可以直接顯示啟用,但是JDK15默認GC仍然是G1)

這些準則僅提供選擇收集器的起點,因為性能取決于堆的大小,應用程序維護的實時數據量以及可用處理器的數量和速度。如果推薦的收集器沒有達到所需的性能,則首先嘗試調整堆和新生代大小以達到所需的目標。如果性能仍然不足,嘗試使用其他收集器總體原則:減少STOP THE WORD時間,使用并發收集器(比如CMS+ParNew,G1)來減少暫停時間,加快響應時間,并使用并行收集器來增加多處理器硬件上的總體吞吐量。

7. 簡述一下Java類加載模型?


雙親委派模型在某個類加載器加載class文件時,它首先委托父加載器去加載這個類,依次傳遞到頂層類加載器(Bootstrap)。如果頂層加載不了(它的搜索范圍中找不到此類),子加載器才會嘗試加載這個類。雙親委派的好處

  • 每一個類都只會被加載一次,避免了重復加載
  • 每一個類都會被盡可能的加載(從引導類加載器往下,每個加載器都可能會根據優先次序嘗試加載它)
  • 有效避免了某些惡意類的加載(比如自定義了Java.lang.Object類,一般而言在雙親委派模型下會加載系統的Object類而不是自定義的Object類)

8. JVM8為什么要增加元空間,帶來什么好處?

原因:

  1. 字符串存在永久代中,容易出現性能問題和內存溢出。
  2. 類及方法的信息等比較難確定其大小,因此對于永久代的大小指定比較困難,太小容易出現永久代溢 出,太大則容易導致老年代溢出。
  3. 永久代會為 GC 帶來不必要的復雜度,并且回收效率偏低。

元空間的特點:

  1. 每個加載器有專門的存儲空間。
  2. 不會單獨回收某個類。
  3. 元空間里的對象的位置是固定的。
  4. 如果發現某個加載器不再存貨了,會把相關的空間整個回收。

9. 堆G1垃圾收集器有了解么,有什么特點

G1的特點:

  1. G1的設計原則是"首先收集盡可能多的垃圾(Garbage First)"。因此,G1并不會等內存耗盡(串行、并行)或者快耗盡(CMS)的時候開始垃圾收集,而是在內部采用了啟發式算法,在老年代找出具有高收集收益的分區進行收集。同時G1可以根據用戶設置的暫停時間目標自動調整年輕代和總堆大小,暫停目標越短年輕代空間越小、總空間就越大;
  2. G1采用內存分區(Region)的思路,將內存劃分為一個個相等大小的內存分區,回收時則以分區為單位進行回收,存活的對象復制到另一個空閑分區中。由于都是以相等大小的分區為單位進行操作,因此G1天然就是一種壓縮方案(局部壓縮);
  3. G1雖然也是分代收集器,但整個內存分區不存在物理上的年輕代與老年代的區別,也不需要完全獨立的survivor(to space)堆做復制準備。G1只有邏輯上的分代概念,或者說每個分區都可能隨G1的運行在不同代之間前后切換;
  4. G1的收集都是STW的,但年輕代和老年代的收集界限比較模糊,采用了混合(mixed)收集的方式。即每次收集既可能只收集年輕代分區(年輕代收集),也可能在收集年輕代的同時,包含部分老年代分區(混合收集),這樣即使堆內存很大時,也可以限制收集范圍,從而降低停頓。
  5. 因為G1建立可預測的停頓時間模型,所以每一次的垃圾回收時間都可控,那么對于大堆(16G左右)的垃圾收集會有明顯優勢

10. 介紹一下垃圾回收算法?

標記-清除

缺點: 產生內存碎片,如上圖,如果清理了兩個1kb的對象,再添加一個2kb的對象,無法放入這兩個位置

標記-整理(老年代)

缺點:移動對象開銷較大

復制(新生代)

11. Happens-Before規則?

先行發生原則(Happens-Before)是判斷數據是否存在競爭、線程是否安全的主要依據。先行發生是Java內存,模型中定義的兩項操作之間的偏序關系,如果操作A先行發生于操作B,那么操作A產生的影響能夠被操作B觀察到。

口訣:如果兩個操作之間具有happen-before關系,那么前一個操作的結果就會對后面的一個操作可見。是Java內存模型中定義的兩個操作之間的偏序關系。

常見的happen-before規則:

1.程序順序規則:一個線程中的每個操作,happen-before在該線程中的任意后續操作。(注解:如果只有一個線程的操作,那么前一個操作的結果肯定會對后續的操作可見。)程序順序規則中所說的每個操作happen-before于該線程中的任意后續操作并不是說前一個操作必須要在后一個操作之前執行,而是指前一個操作的執行結果必須對后一個操作可見,如果不滿足這個要求那就不允許這兩個操作進行重排序

2.鎖規則:對一個鎖的解鎖,happen-before在隨后對這個鎖加鎖。(注解:這個最常見的就是synchronized方法和syncronized塊)

3.volatile變量規則:對一個volatile域的寫,happen-before在任意后續對這個volatile域的讀。該規則在CurrentHashMap的讀操作中不需要加鎖有很好的體現。

4.傳遞性:如果A happen-before B,且B happen-before C,那么A happen - before C.

5.線程啟動規則:Thread對象的start()方法happen-before此線程的每一個動作。

6.線程終止規則:線程的所有操作都happen-before對此線程的終止檢測,可以通過Thread.join()方法結束,Thread.isAlive()的返回值等手段檢測到線程已經終止執行。

7.線程中斷規則:對線程interrupt()方法的調用happen-before發生于被中斷線程的代碼檢測到中斷時事件的發生。

12. 描述一下java類加載和初始化的過程?

JAVA類的加載機制:Java類加載分為5個過程,分別為:加載,鏈接(驗證,準備,解析),初始化,使用,卸載。

加載:加載主要是將.class文件通過二進制字節流讀入到JVM中。在加載階段,JVM需要完成3件事:1)通過classloader在classpath中獲取XXX.class文件,將其以二進制流的形式讀入內存。2)將字節流所代表的靜態存儲結構轉化為方法區的運行時數據結構;3)在內存中生成一個該類的java.lang.Class對象,作為方法區這個類的各種數據的訪問入口。

鏈接

2.1. 驗證 主要確保加載進來的字節流符合JVM規范。驗證階段會完成以下4個階段的檢驗動作:

1)文件格式驗證

2)元數據驗證(是否符合Java語言規范)

3)字節碼驗證(確定程序語義合法,符合邏輯)

4)符號引用驗證(確保下一步的解析能正常執行

2.2. 準備 準備是連接階段的第二步,主要為靜態變量在方法區分配內存,并設置默認初始值。

2.3. 解析 解析是連接階段的第三步,是虛擬機將常量池內的符號引用替換為直接引用的過程。

初始化 初始化階段是類加載過程的最后一步,主要是根據程序中的賦值語句主動為類變量賦值。當有繼承關系時,先初始化父類再初始化子類,所以創建一個子類時其實內存中存在兩個對象實 例。

使用 程序之間的相互調用。

卸載 即銷毀一個對象,一般情況下中有JVM垃圾回收器完成。代碼層面的銷毀只是將引用置為null。

13. 吞吐量優先和響應時間優先的回收器是哪些?

  • 吞吐量優先:Parallel Scavenge+Parallel Old(多線程并行)
  • 響應時間優先:cms+par new(并發回收垃圾)

14. 什么叫做阻塞隊列的有界和無界,實際中有用過嗎?

  • ArrayBlockingQueue:一個由數組結構組成的有界阻塞隊列,線程池,生產者消費者
  • LinkedBlockingQueue:一個由鏈表結構組成的無界阻塞隊列,線程池,生產者消費者
  • PriorityBlockingQueue:一個支持優先級排序的無界阻塞隊列,可以實現精確的定時任務
  • DelayQueue:一個使用優先級隊列實現的無界阻塞隊列,可以實現精確的定時任務
  • SynchronousQueue:一個不存儲元素的阻塞隊列,線程池
  • LinkedTransferQueue:一個由鏈表結構組成的無界阻塞隊列
  • LinkedBlockingDeque:一個由鏈表結構組成的雙向無界阻塞隊列,可以用在“工作竊取”模式 中

15. jvm監控系統是通過jmx做的么?

一般都是,但是要是記錄比較詳細的性能定位指標,都會導致進入 safepoint,從而降低了線上應用性能例如 jstack,jmap打印堆棧,打印內存使用情況,都會讓 jvm 進入safepoint,才能獲取線程穩定狀態從而采集信息。同時,JMX暴露向外的接口采集信息,例如使用jvisualvm,還會涉及rpc和網絡消耗,以及JVM忙時,無法采集到信息從而有指標斷點。這些都是基于 JMX 的外部監控很難解決的問題。所以,推薦使用JVM內部采集 JFR,這樣即使在JVM很忙時,也能采集到有用的信息

16. 內存屏障的匯編指令是啥?

  1. 硬件內存屏障 X86
  2. sfence: store| 在sfence指令前的寫操作當必須在sfence指令后的寫操作前完成。
  3. lfence: load | 在lfence指令前的讀操作當必須在lfence指令后的讀操作前完成。
  4. mfence: modify/mix | 在mfence指令前的讀寫操作當必須在mfence指令后的讀寫操作前完成。2.原子指令,如x86上的”lock …” 指令是一個Full Barrier,執行時會鎖住內存子系統來確保執行順序,甚至跨多個CPU。Software Locks通常使用了內存屏障或原子指令來實現變量可見性和保持程序順序。3.JVM級別如何規范(JSR133)

LoadLoad屏障:對于這樣的語句Load1; LoadLoad; Load2, 在Load2及后續讀取操作要讀取的數據被訪問前,保證Load1要讀取的數據被讀取完畢。

StoreStore屏障:對于這樣的語句Store1; StoreStore; Store2, 在Store2及后續寫入操作執行前,保證Store1的寫入操作對其它處理器可見。

LoadStore屏障:對于這樣的語句Load1; LoadStore; Store2, 在Store2及后續寫入操作被刷出前,保證Load1要讀取的數據被讀取完畢。

StoreLoad屏障:對于這樣的語句Store1; StoreLoad; Load2, 在Load2及后續所有讀取操作執行前,保證Store1的寫入對所有處理器可見。

本文轉載自微信公眾號「 牧小農」,可以通過以下二維碼關注。轉載本文請聯系 牧小農公眾號。

 

責任編輯:姜華 來源: 牧小農
相關推薦

2021-06-03 08:32:18

JVM調優虛擬機

2021-03-16 05:44:26

JVM面試題運行時數據

2019-11-12 13:16:37

GitHub代碼開發者

2021-08-27 10:14:22

機器學習工具手冊人工智能

2021-02-25 07:21:00

JVMJavaava虛擬機

2020-04-14 10:50:47

FlutterGithub

2021-06-01 09:29:43

ArthasJVM內存

2021-05-25 09:56:42

Jvm類加載機制Java

2017-05-15 12:58:00

編程javaapl

2021-02-28 11:58:33

JVM機制語言

2021-02-26 10:16:55

鴻蒙HarmonyOS應用開發

2017-10-17 12:43:17

前端CSS布局

2023-10-08 15:23:12

2021-06-02 09:55:20

JVM排查JVM內存過高技術

2018-10-25 09:37:02

Docker入門容器

2024-08-28 11:56:33

2021-11-03 16:10:16

RedisJava內存

2023-01-11 08:24:32

2018-11-05 08:10:30

Netty架構模型

2020-05-17 16:06:47

ICMPIP協議網絡協議
點贊
收藏

51CTO技術棧公眾號

中文字幕剧情在线观看| 欧美日本韩国国产| 国产一级理论片| 青青一区二区| 欧美视频一二三区| 青青草国产精品97视觉盛宴| 日韩欧美aaa| 中文字幕日韩精品一区二区| 亚洲男女视频在线观看| 丝瓜av网站精品一区二区| 久久成人免费视频| 亚洲一区二区三区蜜桃| 国产精品国产三级在线观看| 欧美日韩国产一区在线| 在线观看成人一级片| 无码精品人妻一区二区三区影院 | 久久久999精品| 亚洲欧美日韩偷拍| 国产精品传媒麻豆hd| 午夜在线成人av| 色综合电影网| 天堂在线视频免费观看| 精品在线免费观看| 欧美孕妇与黑人孕交| 午夜精品一区二区三区视频| 精品72久久久久中文字幕| 欧美zozozo| 欧美激情第3页| 成人性生交大片免费观看网站| 亚洲精品国久久99热| 亚洲国产一区二区精品视频| 天堂在线免费av| 国产成人精品免费在线| 国产在线精品一区免费香蕉| 波多野结衣二区三区| 一本久久综合| 隔壁老王国产在线精品| 一级片久久久久| 伊人久久大香线蕉综合网站| 亚洲成**性毛茸茸| 永久av免费在线观看| 亚洲午夜剧场| 欧美精品久久久久久久多人混战 | 亚洲成色最大综合在线| 日韩精品视频无播放器在线看| 国产精品性做久久久久久| 国产999精品久久久影片官网| 97人人澡人人爽人人模亚洲 | 欧美精品手机在线| 成年人二级毛片| 91亚洲一区| 中文字幕一区日韩电影| 娇妻被老王脔到高潮失禁视频| 天堂综合网久久| 亚洲精品国产精品久久清纯直播| 男人女人拔萝卜视频| 综合伊人久久| 精品处破学生在线二十三| 中文字幕人妻无码系列第三区| 性欧美video另类hd尤物| 欧美日韩综合在线免费观看| 污视频免费在线观看网站| 久久久人成影片一区二区三区在哪下载| 精品久久久视频| 俄罗斯av网站| 欧美性理论片在线观看片免费| 在线区一区二视频| 国产成人黄色网址| aa亚洲一区一区三区| 欧美一区二区免费视频| 中文字幕99页| 欧美大胆a级| 亚洲天堂色网站| 日本不卡一区视频| 一本一道久久a久久精品蜜桃| 欧美猛少妇色xxxxx| 国产大片中文字幕| 久久三级视频| 成人久久精品视频| 一区二区三区的久久的视频| av黄色在线免费观看| 精品一区二区三区在线 | 欧美日韩第一区日日骚| 亚洲理论中文字幕| 精品亚洲自拍| 在线观看日韩视频| 国产波霸爆乳一区二区| 亚洲美女黄色| 国产精品稀缺呦系列在线| 精品人妻无码一区二区色欲产成人 | 97在线观看免费高清| 无码人妻精品一区二区| 韩国女主播成人在线观看| 成人久久18免费网站漫画| 男人的天堂在线免费视频| 亚洲三级小视频| 99精品人妻少妇一区二区| 国产欧美自拍| 日韩av综合网站| 来吧亚洲综合网| 亚洲麻豆视频| 92国产精品视频| 久色视频在线| 一区二区三区不卡在线观看| 99免费视频观看| 亚洲精品国产九九九| 国产亚洲精品美女久久久久| 加勒比婷婷色综合久久| 久久国产精品久久w女人spa| 91在线视频一区| 蜜桃视频在线观看视频| 一区二区三区四区中文字幕| 日本黄网站免费| 婷婷综合国产| 自拍亚洲一区欧美另类| 日韩av女优在线观看| 九色|91porny| 久久久久久久久四区三区| 三级外国片在线观看视频| 欧美日韩国产精品一区二区不卡中文 | 欧美乱妇20p| 捆绑凌虐一区二区三区| 久久久久久久久久久久久久| 日本一区二区在线免费播放| www.亚洲黄色| 中文字幕中文字幕一区| 国产精品宾馆在线精品酒店| 18国产精品| 久久精品国产69国产精品亚洲| 久久精品无码av| 成人免费电影视频| 欧美 国产 精品| 国产精品久久乐| 夜夜嗨av一区二区三区免费区 | 91久久亚洲| 91精品国产99久久久久久红楼| 色开心亚洲综合| 在线观看亚洲精品视频| 日韩网站在线播放| 国产精品毛片| 精品视频免费观看| a√中文在线观看| 精品国产污网站| 国产亚洲精品久久777777| 国产成人一级电影| 男人添女荫道口喷水视频| 日韩激情欧美| 欧美极品美女视频网站在线观看免费| 国产麻豆免费观看| 亚洲啪啪综合av一区二区三区| 色乱码一区二区三区在线| 精品一区二区三| 国产免费一区二区三区在线观看 | 欧美激情视频在线| 国产激情视频在线播放| 亚洲综合一区二区精品导航| 免费观看污网站| 国语精品一区| 精品日本一区二区| 国产超碰精品| 中文字幕不卡av| 国产精品国产一区二区三区四区| 亚洲视频免费观看| 国产清纯白嫩初高中在线观看性色| 伊人精品在线| 日韩.欧美.亚洲| 欧美性www| 欧美成人四级hd版| 手机看片1024国产| 色诱亚洲精品久久久久久| www亚洲色图| 黑人巨大精品欧美黑白配亚洲| 9色视频在线观看| 女一区二区三区| 日韩av黄色在线观看| 在线免费观看黄| 欧美一区永久视频免费观看| 在线免费观看毛片| 久久久精品一品道一区| 夜夜夜夜夜夜操| 黄色成人在线网址| 欧美大陆一区二区| 香蕉久久久久久| 亚洲91精品在线| www.久久热.com| 日韩欧美亚洲国产精品字幕久久久| 日韩女同强女同hd| 欧美国产一区二区| 亚洲一二三四五| 天使萌一区二区三区免费观看| 中文字幕日韩一区二区三区不卡 | 91麻豆精品成人一区二区| 成人高清视频在线| 天天碰免费视频 | 国内外成人激情视频| 成人91在线| 国产精品swag| se69色成人网wwwsex| 欧美日韩国产成人在线观看| 国内精品在线视频| 精品日产卡一卡二卡麻豆| 亚洲精品国产无码| 亚洲自拍与偷拍| av免费播放网站| aa级大片欧美| www.日本久久| 肉色丝袜一区二区| 欧美乱大交xxxxx潮喷l头像| 99精品视频在线| 欧美凹凸一区二区三区视频| 亚洲精品a区| 国产在线久久久| 日韩欧美一区二区三区免费观看 | 亚洲男人第一网站| 国产成人毛毛毛片| 欧美天堂一区二区三区| 成年人午夜视频| 亚洲欧美视频在线观看视频| 在线免费观看视频| 91在线视频观看| 性感美女一区二区三区| 国产在线国偷精品免费看| 亚洲人成无码www久久久| 亚洲激情一区| 日本人妻伦在线中文字幕| 99精品电影| 亚洲国产午夜伦理片大全在线观看网站| 日韩精品亚洲aⅴ在线影院| 99国产超薄肉色丝袜交足的后果| 久久精品国产福利| 国产精品第8页| 中文在线а√天堂| 777777777亚洲妇女| 肉体视频在线| 欧美成人免费全部观看天天性色| 日本蜜桃在线观看| 在线精品视频视频中文字幕| 黄色片在线看| 亚洲欧美激情四射在线日| 日韩美女一级视频| 亚洲摸下面视频| 久久久久久女乱国产| 亚洲乱码一区二区| 久久米奇亚洲| 国产午夜精品全部视频播放| 暖暖视频在线免费观看| 亚洲精品一区中文| 韩国免费在线视频| 色悠悠久久88| 免费看a在线观看| 久久九九国产精品怡红院| a视频在线观看免费| 欧美刺激性大交免费视频| 50度灰在线| 欧美华人在线视频| 成人黄色动漫| 日本精品一区二区三区在线| 欧美美女日韩| 国产精品麻豆va在线播放| 农村妇女一区二区| 91亚洲精品久久久| 亚洲日本va中文字幕| 国产伦精品一区二区三区视频黑人 | 精品免费国产| 国产成人ay| 一区二区三区的久久的视频| 女生裸体视频一区二区三区 | 麻豆9191精品国产| 欧美伦理片在线看| 久久激情综合网| 免费高清视频在线观看| 不卡的电视剧免费网站有什么| 菠萝菠萝蜜网站| 国产日韩一级二级三级| 二区三区四区视频| 亚洲小说欧美激情另类| 国产超碰人人爽人人做人人爱| 欧洲一区二区av| 国产麻豆精品一区| 日韩精品一二三四区| 成人午夜电影在线观看| 欧美xxxx做受欧美| 中文字幕成在线观看| 国产精品视频最多的网站| 亚洲五码在线| 日韩免费电影一区二区| 亚洲欧美综合| 东京热加勒比无码少妇| 久草在线在线精品观看| 色婷婷免费视频| 国产精品久久久久久亚洲伦| 久久免费精彩视频| 欧美视频你懂的| 特级丰满少妇一级aaaa爱毛片| 这里只有精品视频在线| av片在线观看永久免费| 日本久久精品视频| 国产精品一区二区精品| 欧美激情论坛| 国产精品豆花视频| www午夜视频| 91一区二区在线观看| 日韩精品123区| 日本道色综合久久| 黄色一级a毛片| 日韩亚洲在线观看| 亚洲精品mv| 成人在线免费网站| 91视频综合| 十八禁视频网站在线观看| 国产 日韩 欧美大片| 日日碰狠狠添天天爽| 欧美性生活大片免费观看网址| 精品国产伦一区二区三| 在线视频中文亚洲| 男人av在线播放| 97国产超碰| 天天色天天射综合网| 中文字幕第80页| 91蝌蚪国产九色| 免费人成年激情视频在线观看| 欧美日韩一级二级| 国产小视频免费在线观看| 91精品国产精品| 凹凸成人在线| 91精品国产吴梦梦| 久久狠狠亚洲综合| 免费观看a级片| 日本乱人伦aⅴ精品| 天天影院图片亚洲| 97超级碰碰碰久久久| 波多野结衣欧美| 黄色a级在线观看| 另类中文字幕网| 亚洲一级理论片| 欧美视频在线不卡| 高清在线观看av| 国产精品白嫩初高中害羞小美女| 婷婷成人在线| 久久国产亚洲精品无码| 91一区一区三区| 毛片在线免费视频| 日韩精品久久久久久久玫瑰园| 国产ktv在线视频| 久久精品magnetxturnbtih| 最新亚洲激情| 91精品黄色| 国产美女主播在线观看| 亚洲欧美中文日韩v在线观看| heyzo在线欧美播放| 超碰97人人在线| 亚洲手机在线| 完美搭档在线观看| 精品成人乱色一区二区| 无码国产色欲xxxx视频| 欧美在线性爱视频 | 99伊人久久| 一区福利视频| 喷水视频在线观看| 欧美日韩中文字幕综合视频| 欧美日韩视频精品二区| 国产精品v片在线观看不卡| 精品香蕉视频| 日韩中文字幕a| 亚洲黄色小说网站| 日本精品久久久久| 日本成人免费在线| 欧美日韩中字| 亚洲国产日韩在线一区| 亚洲综合在线免费观看| 深夜福利在线看| 国产精品久久久久久久久久久久| 99精品美女| 国产大尺度视频| 91黄视频在线| 性欧美video高清bbw| 久久99国产精品99久久| 免费在线成人网| 久久精品免费在线| 亚洲欧洲日本专区| 久久精品九色| 内射国产内射夫妻免费频道| 中文字幕欧美激情| 成人av一区二区三区在线观看| 欧美亚洲国产视频| 欧美r级电影| 看全色黄大色黄女片18| 在线这里只有精品| 日本无删减在线| 日本午夜精品一区二区三区| 国产精品一区一区| 五月婷婷激情视频| 色综合天天综合网国产成人网 | 一本色道久久综合亚洲精品婷婷 | 国产欧美在线一区二区| 日本视频免费一区| 不卡的免费av| 日韩在线免费观看视频| 亚洲精品推荐| 精品伦一区二区三区|