久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

為什么jvm要性能調(diào)優(yōu)?

為什么jvm要性能調(diào)優(yōu)?

JVM調(diào)優(yōu)目標:使用較小的內(nèi)存占用來獲得較高的吞吐量或者較低的延遲。

程序在上線前的測試或運行中有時會出現(xiàn)一些大大小小的JVM問題,比如cpu load過高、請求延遲、tps降低等,甚至出現(xiàn)內(nèi)存泄漏(每次垃圾收集使用的時間越來越長,垃圾收集頻率越來越高,每次垃圾收集清理掉的垃圾數(shù)據(jù)越來越少)、內(nèi)存溢出導致系統(tǒng)崩潰,因此需要對JVM進行調(diào)優(yōu),使得程序在正常運行的前提下,獲得更高的用戶體驗和運行效率。

這里有幾個比較重要的指標:

  • 內(nèi)存占用:程序正常運行需要的內(nèi)存大小。

  • 延遲:由于垃圾收集而引起的程序停頓時間。

  • 吞吐量:用戶程序運行時間占用戶程序和垃圾收集占用總時間的比值。

當然,和CAP原則一樣,同時滿足一個程序內(nèi)存占用小、延遲低、高吞吐量是不可能的,程序的目標不同,調(diào)優(yōu)時所考慮的方向也不同,在調(diào)優(yōu)之前,必須要結合實際場景,有明確的的優(yōu)化目標,找到性能瓶頸,對瓶頸有針對性的優(yōu)化,最后進行測試,通過各種監(jiān)控工具確認調(diào)優(yōu)后的結果是否符合目標。

JVM調(diào)優(yōu)工具

(1)調(diào)優(yōu)可以依賴、參考的數(shù)據(jù)有系統(tǒng)運行日志、堆棧錯誤信息、gc日志、線程快照、堆轉(zhuǎn)儲快照等。

①系統(tǒng)運行日志:系統(tǒng)運行日志就是在程序代碼中打印出的日志,描述了代碼級別的系統(tǒng)運行軌跡(執(zhí)行的方法、入?yún)ⅰ⒎祷刂档龋话阆到y(tǒng)出現(xiàn)問題,系統(tǒng)運行日志是首先要查看的日志。

②堆棧錯誤信息:當系統(tǒng)出現(xiàn)異常后,可以根據(jù)堆棧信息初步定位問題所在,比如根據(jù)“java.lang.OutOfMemoryError: Java heap space”可以判斷是堆內(nèi)存溢出;根據(jù)“java.lang.StackOverflowError”可以判斷是棧溢出;根據(jù)“java.lang.OutOfMemoryError: PermGen space”可以判斷是方法區(qū)溢出等。

③GC日志:程序啟動時用 -XX:+PrintGCDetails 和 -Xloggc:/data/jvm/gc.log 可以在程序運行時把gc的詳細過程記錄下來,或者直接配置“-verbose:gc”參數(shù)把gc日志打印到控制臺,通過記錄的gc日志可以分析每塊內(nèi)存區(qū)域gc的頻率、時間等,從而發(fā)現(xiàn)問題,進行有針對性的優(yōu)化。

比如如下一段GC日志:

2018-08-02T14:39:11.560-0800: 10.171: [GC [PSYoungGen: 30128K->4091K(30208K)] 51092K->50790K(98816K), 0.0140970 secs] [Times: user=0.02 sys=0.03, real=0.01 secs] 2018-08-02T14:39:11.574-0800: 10.185: [Full GC [PSYoungGen: 4091K->0K(30208K)] [ParOldGen: 46698K->50669K(68608K)] 50790K->50669K(98816K) [PSPermGen: 2635K->2634K(21504K)], 0.0160030 secs] [Times: user=0.03 sys=0.00, real=0.02 secs] 2018-08-02T14:39:14.045-0800: 12.656: [GC [PSYoungGen: 14097K->4064K(30208K)] 64766K->64536K(98816K), 0.0117690 secs] [Times: user=0.02 sys=0.01, real=0.01 secs] 2018-08-02T14:39:14.057-0800: 12.668: [Full GC [PSYoungGen: 4064K->0K(30208K)] [ParOldGen: 60471K->401K(68608K)] 64536K->401K(98816K) [PSPermGen: 2634K->2634K(21504K)], 0.0102020 secs] [Times: user=0.01 sys=0.00, real=0.01 secs]

上面一共是4條GC日志,來看第一行日志,“2018-08-02T14:39:11.560-0800”是精確到了毫秒級別的UTC 通用標準時間格式,配置了“-XX:+PrintGCDateStamps”這個參數(shù)可以跟隨gc日志打印出這種時間戳,“10.171”是從JVM啟動到發(fā)生gc經(jīng)過的秒數(shù)。第一行日志正文開頭的“[GC”說明這次GC沒有發(fā)生Stop-The-World(用戶線程停頓),第二行日志正文開頭的“[Full GC”說明這次GC發(fā)生了Stop-The-World,所以說,[GC和[Full GC跟新生代和老年代沒關系,和垃圾收集器的類型有關系,如果直接調(diào)用System.gc(),將顯示[Full GC(System)。接下來的“[PSYoungGen”、“[ParOldGen”表示GC發(fā)生的區(qū)域,具體顯示什么名字也跟垃圾收集器有關,比如這里的“[PSYoungGen”表示Parallel Scavenge收集器,“[ParOldGen”表示Serial Old收集器,此外,Serial收集器顯示“[DefNew”,ParNew收集器顯示“[ParNew”等。再往后的“30128K->4091K(30208K)”表示進行了這次gc后,該區(qū)域的內(nèi)存使用空間由30128K減小到4091K,總內(nèi)存大小為30208K。每個區(qū)域gc描述后面的“51092K->50790K(98816K), 0.0140970 secs”進行了這次垃圾收集后,整個堆內(nèi)存的內(nèi)存使用空間由51092K減小到50790K,整個堆內(nèi)存總空間為98816K,gc耗時0.0140970秒。

④線程快照:顧名思義,根據(jù)線程快照可以看到線程在某一時刻的狀態(tài),當系統(tǒng)中可能存在請求超時、死循環(huán)、死鎖等情況是,可以根據(jù)線程快照來進一步確定問題。通過執(zhí)行虛擬機自帶的“jstack pid”命令,可以dump出當前進程中線程的快照信息,更詳細的使用和分析網(wǎng)上有很多例,這篇文章寫到這里已經(jīng)很長了就不過多敘述了,貼一篇博客供參考:http://www.cnblogs.com/kongzhongqijing/articles/3630264.html

⑤堆轉(zhuǎn)儲快照:程序啟動時可以使用 “-XX:+HeapDumpOnOutOfMemory” 和 “-XX:HeapDumpPath=/data/jvm/dumpfile.hprof”,當程序發(fā)生內(nèi)存溢出時,把當時的內(nèi)存快照以文件形式進行轉(zhuǎn)儲(也可以直接用jmap命令轉(zhuǎn)儲程序運行時任意時刻的內(nèi)存快照),事后對當時的內(nèi)存使用情況進行分析。

(2)JVM調(diào)優(yōu)工具

①用 jps(JVM process Status)可以查看虛擬機啟動的所有進程、執(zhí)行主類的全名、JVM啟動參數(shù),比如當執(zhí)行了JPSTest類中的main方法后(main方法持續(xù)執(zhí)行),執(zhí)行 jps -l可看到下面的JPSTest類的pid為31354,加上-v參數(shù)還可以看到JVM啟動參數(shù)。

3265  32914 sun.tools.jps.Jps 31353 org.jetbrains.jps.cmdline.Launcher 31354 com.danny.test.code.jvm.JPSTest 380

②用jstat(JVM Statistics Monitoring Tool)監(jiān)視虛擬機信息
jstat -gc pid 500 10 :每500毫秒打印一次Java堆狀況(各個區(qū)的容量、使用容量、gc時間等信息),打印10次

S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT 11264.0 11264.0 11202.7  0.0   11776.0   1154.3   68608.0    36238.7     -      -      -      -        14    0.077   7      0.049    0.126 11264.0 11264.0 11202.7  0.0   11776.0   4037.0   68608.0    36238.7     -      -      -      -        14    0.077   7      0.049    0.126 11264.0 11264.0 11202.7  0.0   11776.0   6604.5   68608.0    36238.7     -      -      -      -        14    0.077   7      0.049    0.126 11264.0 11264.0 11202.7  0.0   11776.0   9487.2   68608.0    36238.7     -      -      -      -        14    0.077   7      0.049    0.126 11264.0 11264.0  0.0    0.0   11776.0   258.1    68608.0    58983.4     -      -      -      -        15    0.082   8      0.059    0.141 11264.0 11264.0  0.0    0.0   11776.0   3076.8   68608.0    58983.4     -      -      -      -        15    0.082   8      0.059    0.141 11264.0 11264.0  0.0    0.0   11776.0    0.0     68608.0     390.0      -      -      -      -        16    0.084   9      0.066    0.149 11264.0 11264.0  0.0    0.0   11776.0    0.0     68608.0     390.0      -      -      -      -        16    0.084   9      0.066    0.149 11264.0 11264.0  0.0    0.0   11776.0   258.1    68608.0     390.0      -      -      -      -        16    0.084   9      0.066    0.149 11264.0 11264.0  0.0    0.0   11776.0   3012.8   68608.0     390.0      -      -      -      -        16    0.084   9      0.066    0.149

jstat還可以以其他角度監(jiān)視各區(qū)內(nèi)存大小、監(jiān)視類裝載信息等,具體可以google jstat的詳細用法。

③用jmap(Memory Map for Java)查看堆內(nèi)存信息
執(zhí)行jmap -histo pid可以打印出當前堆中所有每個類的實例數(shù)量和內(nèi)存占用,如下,class name是每個類的類名([B是byte類型,[C是char類型,[I是int類型),bytes是這個類的所有示例占用內(nèi)存大小,instances是這個類的實例數(shù)量:

num     #instances         #bytes  class name ----------------------------------------------   1:          2291       29274080  [B   2:         15252        1961040  <methodKlass>   3:         15252        1871400  <constMethodKlass>   4:         18038         721520  java.util.TreeMap$Entry   5:          6182         530088  [C   6:         11391         273384  java.lang.Long   7:          5576         267648  java.util.TreeMap   8:            50         155872  [I   9:          6124         146976  java.lang.String  10:          3330         133200  java.util.LinkedHashMap$Entry  11:          5544         133056  javax.management.openmbean.CompositeDataSupport

執(zhí)行 jmap -dump 可以轉(zhuǎn)儲堆內(nèi)存快照到指定文件,比如執(zhí)行 jmap -dump:format=b,file=/data/jvm/dumpfile_jmap.hprof 3361 可以把當前堆內(nèi)存的快照轉(zhuǎn)儲到dumpfile_jmap.hprof文件中,然后可以對內(nèi)存快照進行分析。

④利用jconsole、jvisualvm分析內(nèi)存信息(各個區(qū)如Eden、Survivor、Old等內(nèi)存變化情況),如果查看的是遠程服務器的JVM,程序啟動需要加上如下參數(shù):

"-Dcom.sun.management.jmxremote=true"  "-Djava.rmi.server.hostname=12.34.56.78"  "-Dcom.sun.management.jmxremote.port=18181"  "-Dcom.sun.management.jmxremote.authenticate=false"  "-Dcom.sun.management.jmxremote.ssl=false"

下圖是jconsole界面,概覽選項可以觀測堆內(nèi)存使用量、線程數(shù)、類加載數(shù)和CPU占用率;內(nèi)存選項可以查看堆中各個區(qū)域的內(nèi)存使用量和左下角的詳細描述(內(nèi)存大小、GC情況等);線程選項可以查看當前JVM加載的線程,查看每個線程的堆棧信息,還可以檢測死鎖;VM概要描述了虛擬機的各種詳細參數(shù)。(jconsole功能演示)

為什么jvm要性能調(diào)優(yōu)?

下圖是jvisualvm的界面,功能比jconsole略豐富一些,不過大部分功能都需要安裝插件。概述跟jconsole的VM概要差不多,描述的是jvm的詳細參數(shù)和程序啟動參數(shù);監(jiān)視展示的和jconsole的概覽界面差不多(CPU、堆/方法區(qū)、類加載、線程);線程和jconsole的線程界面差不多;抽樣器可以展示當前占用內(nèi)存的類的排行榜及其實例的個數(shù);Visual GC可以更豐富地展示當前各個區(qū)域的內(nèi)存占用大小及歷史信息(下圖)。(jvisualvm功能演示)

為什么jvm要性能調(diào)優(yōu)?

⑤分析堆轉(zhuǎn)儲快照

前面說到配置了 “-XX:+HeapDumpOnOutOfMemory” 參數(shù)可以在程序發(fā)生內(nèi)存溢出時dump出當前的內(nèi)存快照,也可以用jmap命令隨時dump出當時內(nèi)存狀態(tài)的快照信息,dump的內(nèi)存快照一般是以.hprof為后綴的二進制格式文件。
可以直接用 jhat(JVM Heap Analysis Tool) 命令來分析內(nèi)存快照,它的本質(zhì)實際上內(nèi)嵌了一個微型的服務器,可以通過瀏覽器來分析對應的內(nèi)存快照,比如執(zhí)行 jhat -port 9810 -J-Xmx4G /data/jvm/dumpfile_jmap.hprof 表示以9810端口啟動 jhat 內(nèi)嵌的服務器:

Reading from /Users/dannyhoo/data/jvm/dumpfile_jmap.hprof... Dump file created Fri Aug 03 15:48:27 CST 2018 Snapshot read, resolving... Resolving 276472 objects... Chasing references, expect 55 dots....................................................... Eliminating duplicate references....................................................... Snapshot resolved. Started HTTP server on port 9810 Server is ready.

在控制臺可以看到服務器啟動了,訪問 http://127.0.0.1:9810/ 可以看到對快照中的每個類進行分析的結果(界面略low),下圖是我隨便選擇了一個類的信息,有這個類的父類,加載這個類的類加載器和占用的空間大小,下面還有這個類的每個實例(References)及其內(nèi)存地址和大小,點進去會顯示這個實例的一些成員變量等信息:

為什么jvm要性能調(diào)優(yōu)?

jvisualvm也可以分析內(nèi)存快照,在jvisualvm菜單的“文件”-“裝入”,選擇堆內(nèi)存快照,快照中的信息就以圖形界面展示出來了,如下,主要可以查看每個類占用的空間、實例的數(shù)量和實例的詳情等:

為什么jvm要性能調(diào)優(yōu)?

還有很多分析內(nèi)存快照的第三方工具,比如eclipse mat,它比jvisualvm功能更專業(yè),出了查看每個類及對應實例占用的空間、數(shù)量,還可以查詢對象之間的調(diào)用鏈,可以查看某個實例到GC Root之間的鏈,等等。可以在eclipse中安裝mat插件,也可以下載獨立的版本(http://www.eclipse.org/mat/downloads.php ),我在mac上安裝后運行起來老卡死~下面是在windows上的截圖(MAT功能演示):

為什么jvm要性能調(diào)優(yōu)?

(3)JVM調(diào)優(yōu)經(jīng)驗

JVM配置方面,一般情況可以先用默認配置(基本的一些初始參數(shù)可以保證一般的應用跑的比較穩(wěn)定了),在測試中根據(jù)系統(tǒng)運行狀況(會話并發(fā)情況、會話時間等),結合gc日志、內(nèi)存監(jiān)控、使用的垃圾收集器等進行合理的調(diào)整,當老年代內(nèi)存過小時可能引起頻繁Full GC,當內(nèi)存過大時Full GC時間會特別長。

那么JVM的配置比如新生代、老年代應該配置多大最合適呢?答案是不一定,調(diào)優(yōu)就是找答案的過程,物理內(nèi)存一定的情況下,新生代設置越大,老年代就越小,F(xiàn)ull GC頻率就越高,但Full GC時間越短;相反新生代設置越小,老年代就越大,F(xiàn)ull GC頻率就越低,但每次Full GC消耗的時間越大。建議如下:

  • -Xms和-Xmx的值設置成相等,堆大小默認為-Xms指定的大小,默認空閑堆內(nèi)存小于40%時,JVM會擴大堆到-Xmx指定的大小;空閑堆內(nèi)存大于70%時,JVM會減小堆到-Xms指定的大小。如果在Full GC后滿足不了內(nèi)存需求會動態(tài)調(diào)整,這個階段比較耗費資源。

  • 新生代盡量設置大一些,讓對象在新生代多存活一段時間,每次Minor GC 都要盡可能多的收集垃圾對象,防止或延遲對象進入老年代的機會,以減少應用程序發(fā)生Full GC的頻率。

  • 老年代如果使用CMS收集器,新生代可以不用太大,因為CMS的并行收集速度也很快,收集過程比較耗時的并發(fā)標記和并發(fā)清除階段都可以與用戶線程并發(fā)執(zhí)行。

  • 方法區(qū)大小的設置,1.6之前的需要考慮系統(tǒng)運行時動態(tài)增加的常量、靜態(tài)變量等,1.7只要差不多能裝下啟動時和后期動態(tài)加載的類信息就行。

代碼實現(xiàn)方面,性能出現(xiàn)問題比如程序等待、內(nèi)存泄漏除了JVM配置可能存在問題,代碼實現(xiàn)上也有很大關系:

  • 避免創(chuàng)建過大的對象及數(shù)組:過大的對象或數(shù)組在新生代沒有足夠空間容納時會直接進入老年代,如果是短命的大對象,會提前出發(fā)Full GC。

  • 避免同時加載大量數(shù)據(jù),如一次從數(shù)據(jù)庫中取出大量數(shù)據(jù),或者一次從Excel中讀取大量記錄,可以分批讀取,用完盡快清空引用。

  • 當集合中有對象的引用,這些對象使用完之后要盡快把集合中的引用清空,這些無用對象盡快回收避免進入老年代。

  • 可以在合適的場景(如實現(xiàn)緩存)采用軟引用、弱引用,比如用軟引用來為ObjectA分配實例:SoftReference objectA=new SoftReference(); 在發(fā)生內(nèi)存溢出前,會將objectA列入回收范圍進行二次回收,如果這次回收還沒有足夠內(nèi)存,才會拋出內(nèi)存溢出的異常。
    避免產(chǎn)生死循環(huán),產(chǎn)生死循環(huán)后,循環(huán)體內(nèi)可能重復產(chǎn)生大量實例,導致內(nèi)存空間被迅速占滿。

  • 盡量避免長時間等待外部資源(數(shù)據(jù)庫、網(wǎng)絡、設備資源等)的情況,縮小對象的生命周期,避免進入老年代,如果不能及時返回結果可以適當采用異步處理的方式等。

(4)JVM問題排查記錄案例

JVM服務問題排查 https://blog.csdn.net/jacin1/article/details/44837595

次讓人難以忘懷的排查頻繁Full GC過程 http://caogen81.iteye.com/blog/1513345

線上FullGC頻繁的排查 https://blog.csdn.net/wilsonpeng3/article/details/70064336/

【JVM】線上應用故障排查 https://www.cnblogs.com/Dhouse/p/7839810.html

一次JVM中FullGC問題排查過程 http://iamzhongyong.iteye.com/blog/1830265

JVM內(nèi)存溢出導致的CPU過高問題排查案例 https://blog.csdn.net/nielinqi520/article/details/78455614

一個java內(nèi)存泄漏的排查案例 https://blog.csdn.net/aasgis6u/article/details/54928744

(5)常用JVM參數(shù)參考:

參數(shù) 說明 實例
-Xms 初始堆大小,默認物理內(nèi)存的1/64 -Xms512M
-Xmx 最大堆大小,默認物理內(nèi)存的1/4 -Xms2G
-Xmn 新生代內(nèi)存大小,官方推薦為整個堆的3/8 -Xmn512M
-Xss 線程堆棧大小,jdk1.5及之后默認1M,之前默認256k -Xss512k
-XX:NewRatio=n 設置新生代和年老代的比值。如:為3,表示年輕代與年老代比值為1:3,年輕代占整個年輕代年老代和的1/4 -XX:NewRatio=3
-XX:SurvivorRatio=n 年輕代中Eden區(qū)與兩個Survivor區(qū)的比值。注意Survivor區(qū)有兩個。如:8,表示Eden:Survivor=8:1:1,一個Survivor區(qū)占整個年輕代的1/8 -XX:SurvivorRatio=8
-XX:PermSize=n 永久代初始值,默認為物理內(nèi)存的1/64 -XX:PermSize=128M
-XX:MaxPermSize=n 永久代最大值,默認為物理內(nèi)存的1/4 -XX:MaxPermSize=256M
-verbose:class 在控制臺打印類加載信息
-verbose:gc 在控制臺打印垃圾回收日志
-XX:+PrintGC 打印GC日志,內(nèi)容簡單
-XX:+PrintGCDetails 打印GC日志,內(nèi)容詳細
-XX:+PrintGCDateStamps 在GC日志中添加時間戳
-Xloggc:filename 指定gc日志路徑 -Xloggc:/data/jvm/gc.log
-XX:+UseSerialGC 年輕代設置串行收集器Serial
-XX:+UseParallelGC 年輕代設置并行收集器Parallel Scavenge
-XX:ParallelGCThreads=n 設置Parallel Scavenge收集時使用的CPU數(shù)。并行收集線程數(shù)。 -XX:ParallelGCThreads=4
-XX:MaxGCPauseMillis=n 設置Parallel Scavenge回收的最大時間(毫秒) -XX:MaxGCPauseMillis=100
-XX:GCTimeRatio=n 設置Parallel Scavenge垃圾回收時間占程序運行時間的百分比。公式為1/(1+n) -XX:GCTimeRatio=19
-XX:+UseParallelOldGC 設置老年代為并行收集器ParallelOld收集器
-XX:+UseConcMarkSweepGC 設置老年代并發(fā)收集器CMS
-XX:+CMSIncrementalMode 設置CMS收集器為增量模式,適用于單CPU情況。

本文來自php中文網(wǎng),java教程欄目,歡迎學習!

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
亚洲一区日韩在线| 国产乱码精品一区二区亚洲| 日韩中文字幕无砖| 中文无码日韩欧| 欧美日韩视频| 激情久久中文字幕| 国产综合色区在线观看| 日韩毛片视频| 国产精品嫩草99av在线| 欧美在线亚洲综合一区| 午夜欧美精品久久久久久久| 99国产成+人+综合+亚洲欧美| 欧美日韩激情| 免费人成精品欧美精品| 丝袜美腿高跟呻吟高潮一区| 亚洲一区二区日韩| 亚洲欧洲一区| 日本亚洲最大的色成网站www | 91日韩免费| 宅男在线一区| 日日夜夜免费精品视频| 久久精品国产在热久久| 999久久久国产精品| 蜜臀精品久久久久久蜜臀 | 久久理论电影| 亚洲一区二区免费在线观看| 久久亚洲电影| 国产精品成人自拍| 国产99精品| 青青草精品视频| 中文在线中文资源| 在线精品一区二区| 国产在线观看www| 蜜臀av在线播放一区二区三区| 国产精品大片免费观看| 久久国产免费| 美女久久久久久| 日韩中文字幕av电影| 国产aⅴ精品一区二区三区久久| 蜜桃91丨九色丨蝌蚪91桃色| 黄色在线观看www| 在线观看一区| av亚洲一区二区三区| 国产精品99久久久久久董美香| 精品一区免费| 日韩av有码| 国产欧美亚洲一区| 中文字幕av一区二区三区人| 日韩电影在线视频| 麻豆国产精品| 日韩精品一区二区三区免费视频| 国产综合精品| 久久精品亚洲人成影院 | 亚洲午夜精品久久久久久app| 国产精品一二| 欧美日韩午夜| 日韩和欧美的一区| 亚洲精品女人| 鲁大师成人一区二区三区| 久久久精品网| 欧美日韩视频网站| 久久男人天堂| 日本欧美不卡| 成人免费电影网址| 久久视频一区| 欧美 日韩 国产一区二区在线视频| 日韩精品麻豆| 午夜欧美精品| 日韩网站中文字幕| 国产v综合v| 国产精品日本| 亚洲人成精品久久久| 伊人www22综合色| 日韩一区二区三区在线看| 欧美日韩一区二区高清| 日韩av成人高清| 久久av中文| 成人国产综合| 国产一区日韩一区| 天堂成人免费av电影一区| 日韩一区免费| xxxxx性欧美特大| 一级欧洲+日本+国产| 国产精品免费看| 日韩av不卡一区二区| 成人国产精品一区二区免费麻豆| 88xx成人免费观看视频库| 夜夜嗨一区二区| 国产精品免费不| 特黄毛片在线观看| 国产精品社区| 久久精品国产久精国产爱| 欧美日韩视频免费观看| 久久国产精品毛片| 国产福利资源一区| jiujiure精品视频播放| 日本91福利区| 欧美~级网站不卡| 亚洲伊人精品酒店| 福利片在线一区二区| 免费美女久久99| 一本大道色婷婷在线| 欧美偷窥清纯综合图区| 国模 一区 二区 三区| 国产精品蜜月aⅴ在线| 99国产精品久久久久久久| 国产精品尤物| 欧美一区=区| 福利视频一区| 日本午夜精品久久久| 欧美日韩国产传媒| 欧美91在线| 日韩精品视频在线看| 国产精品久久久久av电视剧| 午夜性色一区二区三区免费视频| 久久免费国产| 久久中文在线| 日本午夜免费一区二区 | 亚洲精品成人| 日韩成人精品一区| 国产精品www994| 日韩va亚洲va欧美va久久| 91国语精品自产拍| 亚洲播播91| 久久久久免费av| 日韩一区欧美| 午夜精品久久久久久久久久蜜桃| 男女男精品视频网| 久久香蕉精品| 中文字幕一区二区三区日韩精品 | 国产在线日韩精品| 麻豆成人91精品二区三区| 91欧美极品| 欧美精品不卡| caoporn视频在线| 久久要要av| 蜜桃视频在线观看一区| 亚洲不卡视频| 91精品国产自产观看在线 | 欧美精品99| 久久精品国产99国产| 欧美国产另类| 青青青免费在线视频| 成人在线网站| 在线亚洲观看| 亚洲精品在线二区| 久久国内精品| 免费在线播放第一区高清av| 九九九精品视频| 亚洲高清二区| 日本不卡视频一二三区| 国产日韩免费| 欧美成人精品三级网站| 久久久久久久久丰满| 美女国产精品| 精品国产一区二| 伊人成人在线视频| 日韩中出av| 美女一区网站| 日韩中文字幕视频网| 91日韩欧美| 中文字幕一区二区精品区| 日韩1区2区日韩1区2区| av亚洲一区二区三区| 91精品一区| 午夜精品网站| 日韩黄色免费网站| 免费国产自久久久久三四区久久| 欧美三级第一页| 亚洲一级高清| 国产精品久久久久久久久久妞妞| 88xx成人免费观看视频库| 欧美日韩一区二区高清| 久久精品国内一区二区三区水蜜桃| 亚洲精品观看| 亚洲欧美久久久| 精品亚洲美女网站| 免费视频一区二区三区在线观看 | 亚洲免费福利一区| 国产综合精品| 亚洲天堂av影院| 日韩av网站在线免费观看| 久久久9色精品国产一区二区三区| 国产亚洲精品美女久久| 中文字幕乱码亚洲无线精品一区| 国产va免费精品观看精品视频| 综合国产视频| 水蜜桃久久夜色精品一区的特点| 国产a久久精品一区二区三区| 欧美日韩伊人| 国产日韩欧美一区二区三区| 免费欧美在线视频| 国产理论在线| 日韩和的一区二在线| 亚洲综合在线电影| 香蕉成人av| 久久视频精品| 午夜精品影院| 久久亚洲电影| 国产色99精品9i|