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

JVM 實戰 OutOfMemoryError 異常

運維 數據庫運維 虛擬化
Java堆用于儲存對象實例,我們只要不斷地創建對象,并且保證GC Roots到對象之間有可達路徑來避免垃圾回收機制清除這些對象,那么隨著對象數量的增加,總容量觸及最大堆的容量限制后就會產生內存溢出異常。

[[420231]]

在《Java虛擬機規范》的規定里,除了程序計數器外,虛擬機內存的其他幾個運行時區域都有發生OutOfMemoryError(下文稱OOM)異常的可能。(本文主要是基于 jdk1.8 展開探討)

Java 堆溢出

Java堆用于儲存對象實例,我們只要不斷地創建對象,并且保證GC Roots到對象之間有可達路徑來避免垃圾回收機制清除這些對象,那么隨著對象數量的增加,總容量觸及最大堆的容量限制后就會產生內存溢出異常。

模擬代碼

下面是簡單的模擬堆內存溢出的代碼:

  1. /** 
  2.  * VM Args:-Xms10m -Xmx10m -XX:+HeapDumpOnOutOfMemoryError 
  3.  * @author zhengsh 
  4.  * @date 2021-8-13 
  5.  */ 
  6. public class HeapOOM { 
  7.      
  8.     public static void main(String[] args) { 
  9.         List<byte[]> list = new ArrayList<>(); 
  10.         while (true) { 
  11.             list.add(new byte[2048]); 
  12.         } 
  13.     } 

返回結果信息如下所示:

  1. Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
  2.  at cn.zhengsh.jvm.oom.HeapOOM.main(HeapOOM.java:16) 

問題分析

我們需要定位是內存泄漏(Memory Leak)還是,內存溢出(Memory Overflow)

  • 內存泄漏
  • 內存溢出

內存泄漏

我們可以通過 jdk 自帶的 jvisualvm 工具來加載堆快照文件進行分析。如果是內存泄漏,可進一步通過工具查看泄漏對象到GC Roots的引用鏈,找到泄漏對象是通過怎樣的引用路徑、與哪些GC Roots相關聯,才導致垃圾收集器無法回收它們,根據泄漏對象的類型信息 以及它到GC Roots引用鏈的信息,一般可以比較準確地定位到這些對象創建的位置,進而找出產生內存泄漏的代碼的具體位置。

內存溢出

如果不是內存泄漏,換句話說就是內存中的對象確實都是必須存活的,那就應當檢查Java虛擬機的堆參數(-Xmx與-Xms)設置,與機器的內存對比,看看是否還有向上調整的空間。再從代碼上檢查是否存在某些對象生命周期過長、持有狀態時間過長、存儲結構設計不合理等情況,盡量減少程序運 行期的內存消耗。

虛擬機棧和本地方法棧溢出

HotSpot虛擬機中并不區分虛擬機棧和本地方法棧,因此對于HotSpot來說,-Xoss參數(設置 本地方法棧大小)雖然存在,但實際上是沒有任何效果的,棧容量只能由-Xss參數來設定。關于虛擬機棧和本地方法棧,在《Java虛擬機規范》中描述了兩種異常:

  1. 如果線程請求的棧深度大于虛擬機所允許的最大深度,將拋出StackOverflowError異常。
  2. 如果虛擬機的棧內存允許動態擴展,當擴展棧容量無法申請到足夠的內存時,將拋出 OutOfMemoryError異常。

《Java虛擬機規范》明確允許Java虛擬機實現自行選擇是否支持棧的動態擴展,而HotSpot虛擬機 的選擇是不支持擴展,所以除非在創建線程申請內存時就因無法獲得足夠內存而出現 OutOfMemoryError異常,否則在線程運行時是不會因為擴展而導致內存溢出的,只會因為棧容量無法 容納新的棧幀而導致StackOverflowError異常。

虛擬機棧內存溢出

StackOverflowError

示例代碼:

  1. /** 
  2.  * VM Args:-Xss128k 
  3.  * 
  4.  * @author zhengsh 
  5.  * @date 2021-08-13 
  6.  */ 
  7. public class JavaVMStackSOF { 
  8.     private int stackLength = 1; 
  9.  
  10.     public void stackLeak() { 
  11.         stackLength++; 
  12.         stackLeak(); 
  13.     } 
  14.  
  15.     public static void main(String[] args) throws Throwable { 
  16.         JavaVMStackSOF oom = new JavaVMStackSOF(); 
  17.         try { 
  18.             oom.stackLeak(); 
  19.         } catch (Throwable e) { 
  20.             System.out.println("stack length:" + oom.stackLength); 
  21.             throw e; 
  22.         } 
  23.     } 

返回異常信息

  1. Exception in thread "main" java.lang.StackOverflowError 
  2. stack length:992 
  3.  at cn.zhengsh.jvm.oom.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:13) 
  4.  at cn.zhengsh.jvm.oom.JavaVMStackSOF.stackLeak(JavaVMStackSOF.java:14) 
  5.   //.... 省略更多 

OutOfMemoryError

  1. package cn.zhengsh.jvm.oom; 
  2.  
  3. /** 
  4.  * @author zhengsh 
  5.  * @date 2021-08-13 
  6.  */ 
  7. public class JavaVMStackSOF2 { 
  8.     private static int stackLength = 0; 
  9.  
  10.     public static void test() { 
  11.         long unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8, unused9, unused10, unused11, 
  12.             unused12, unused13, unused14, unused15, unused16, unused17, unused18, unused19, unused20, unused21, 
  13.             unused22, unused23, unused24, unused25, unused26, unused27, unused28, unused29, unused30, unused31, 
  14.             unused32, unused33, unused34, unused35, unused36, unused37, unused38, unused39, unused40, unused41, 
  15.             unused42, unused43, unused44, unused45, unused46, unused47, unused48, unused49, unused50, unused51, 
  16.             unused52, unused53, unused54, unused55, unused56, unused57, unused58, unused59, unused60, unused61, 
  17.             unused62, unused63, unused64, unused65, unused66, unused67, unused68, unused69, unused70, unused71, 
  18.             unused72, unused73, unused74, unused75, unused76, unused77, unused78, unused79, unused80, unused81, 
  19.             unused82, unused83, unused84, unused85, unused86, unused87, unused88, unused89, unused90, unused91, 
  20.             unused92, unused93, unused94, unused95, unused96, unused97, unused98, unused99, unused100; 
  21.         stackLength++; 
  22.         test(); 
  23.         unused1 = unused2 = unused3 = unused4 = unused5 = unused6 = unused7 = unused8 = unused9 = unused10 = unused11 = 
  24.             unused12 = unused13 = unused14 = unused15 = unused16 = unused17 = unused18 = unused19 = unused20 = 
  25.                 unused21 = unused22 = unused23 = unused24 = unused25 = unused26 = unused27 = unused28 = unused29 = 
  26.                     unused30 = unused31 = unused32 = unused33 = unused34 = unused35 = unused36 = unused37 = unused38 = 
  27.                         unused39 = unused40 = unused41 = unused42 = unused43 = 
  28.                             unused44 = unused45 = unused46 = unused47 = unused48 = unused49 = unused50 = unused51 = 
  29.                                 unused52 = unused53 = unused54 = unused55 = unused56 = unused57 = unused58 = unused59 = 
  30.                                     unused60 = unused61 = unused62 = unused63 = unused64 = unused65 = unused66 = 
  31.                                         unused67 = unused68 = unused69 = unused70 = unused71 = unused72 = unused73 = 
  32.                                             unused74 = unused75 = unused76 = unused77 = unused78 = unused79 = unused80 = 
  33.                                                 unused81 = unused82 = unused83 = unused84 = unused85 = unused86 = 
  34.                                                     unused87 = unused88 = unused89 = unused90 = unused91 = unused92 = 
  35.                                                         unused93 = unused94 = unused95 = 
  36.                                                             unused96 = unused97 = unused98 = unused99 = unused100 = 0; 
  37.     } 
  38.  
  39.     public static void main(String[] args) { 
  40.         try { 
  41.             test(); 
  42.         } catch (Error e) { 
  43.             System.out.println("stack length:" + stackLength); 
  44.             throw e; 
  45.         } 
  46.     } 

輸出結果:

  1. stack length:6986 
  2. Exception in thread "main" java.lang.StackOverflowError 
  3.  at cn.zhengsh.jvm.oom.JavaVMStackSOF2.test(JavaVMStackSOF2.java:22) 
  4.  at cn.zhengsh.jvm.oom.JavaVMStackSOF2.test(JavaVMStackSOF2.java:22) 

總結

無論是由于棧幀太大還是虛擬機棧容量太小,當新的棧幀內存無法分配的時候, HotSpot虛擬機拋出的都是StackOverflowError異常??墒侨绻谠试S動態擴展棧容量大小的虛擬機上,相同代碼則會導致不一樣的情況。

創建線程導致內存溢出

注意:下面的這個實驗可能導致操作系統卡死,建議大家在虛擬機中執行

  1. /** 
  2.  * VM Args:-Xss512k 
  3.  * 
  4.  * @author zhengsh 
  5.  * @date 2021-08-13 
  6.  */ 
  7. public class JavaVMStackOOM { 
  8.      
  9.     private void dontStop() { 
  10.         while (true) { 
  11.         } 
  12.     } 
  13.  
  14.     public void stackLeakByThread() { 
  15.         while (true) { 
  16.             Thread thread = new Thread(new Runnable() { 
  17.                 @Override 
  18.                 public void run() { 
  19.                     dontStop(); 
  20.                 } 
  21.             }); 
  22.             thread.start(); 
  23.         } 
  24.     } 
  25.  
  26.     public static void main(String[] args) throws Throwable { 
  27.         JavaVMStackOOM oom = new JavaVMStackOOM(); 
  28.         oom.stackLeakByThread(); 
  29.     } 

方法區和運行時常量池溢出

由于運行時常量池是方法區的一部分,所以這兩個區域的溢出測試可以放到一起進行。HotSpot從JDK 7 開始逐步“去永久代”的計劃,并在JDK 8中完全使用元空間來代替永久代。

方法區內存溢出

方法區的主要職責是用于存放類型的相關信息,如類 名、訪問修飾符、常量池、字段描述、方法描述等。對于這部分區域的測試,基本的思路是運行時產 生大量的類去填滿方法區,直到溢出為止。雖然直接使用Java SE API也可以動態產生類(如反射時的 GeneratedConstructorAccessor和動態代理等),但在本次實驗中借助了CGLib直接操作字節碼運行時生成了大量的動態類。

  1. /** 
  2.  * VM Args:-XX:MetaspaceSize=21m -XX:MaxMetaspaceSize=21m 
  3.  * 
  4.  * @author zhengsh 
  5.  * @date 2021-08-13 
  6.  */ 
  7. public class JavaMethodAreaOOM { 
  8.     public static void main(String[] args) { 
  9.         while (true) { 
  10.             Enhancer enhancer = new Enhancer(); 
  11.             enhancer.setSuperclass(OOMObject.class); 
  12.             enhancer.setUseCache(false); 
  13.             enhancer.setCallback(new MethodInterceptor() { 
  14.                 @Override 
  15.                 public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { 
  16.                     return proxy.invokeSuper(obj, args); 
  17.                 } 
  18.             }); 
  19.             enhancer.create(); 
  20.         } 
  21.     } 
  22.  
  23.     static class OOMObject { 
  24.     } 

輸出代碼

  1. Caused by: java.lang.OutOfMemoryError: Metaspace 
  2. Caused by: java.lang.OutOfMemoryError: Metaspace 

常量池案例

String::intern()是一個本地方法,它的作用是如果字符串常量池中已經包含一個等于此String對象的 字符串,則返回代表池中這個字符串的String對象的引用;否則,會將此String對象包含的字符串添加 到常量池中,并且返回此String對象的引用。在JDK 6或更早之前的HotSpot虛擬機中,常量池都是分配在永久代中,我們可以通過-XX:PermSize和-XX:MaxPermSize限制永久代的大小,即可間接限制其中常量池的容量。

  1. /** 
  2.  * @author zhengsh 
  3.  * @date 2021-08-13 
  4.  */ 
  5. public class RuntimeConstantPoolOOM2 { 
  6.     public static void main(String[] args) { 
  7.         String str1 = new StringBuilder("計算機").append("軟件").toString(); 
  8.         System.out.println(str1.intern() == str1); 
  9.         String str2 = new StringBuilder("ja").append("va").toString(); 
  10.         System.out.println(str2.intern() == str2); 
  11.     } 

這段代碼在JDK 6中運行,會得到兩個false,而在JDK 7中運行,會得到一個true和一個false。產生差異的原因是,在JDK 6中,intern()方法會把首次遇到的字符串實例復制到永久代的字符串常量池中存儲,返回的也是永久代里面這個字符串實例的引用,而由StringBuilder創建的字符串對象實例在 Java堆上,所以必然不可能是同一個引用,結果將返回 false。而JDK 7(以及部分其他虛擬機,例如JRockit)的intern()方法實現就不需要再拷貝字符串的實例到永久代了,既然字符串常量池已經移到Java堆中,那只需要在常量池里記錄一下首次出現的實例引用即可,因此intern()返回的引用和由StringBuilder創建的那個字符串實例就是同一個。而對str2比較返 回false,這是因為“java”這個字符串在執行String-Builder.toString()之前就已經出現過了,字符串常量 池中已經有它的引用,不符合intern()方法要求“首次遇到”的原則,“計算機軟件”這個字符串則是首次出現的,因此結果返回true。

本機直接內存溢出

直接內存(Direct Memory)的容量大小可通過 -XX:MaxDirectMemorySize參數來指定,默認與Java堆最大值(由-Xmx指定)一致,代碼越過了DirectByteBuffer類直接通過反射獲取Unsafe實例進行內存分配(Unsafe類的getUnsafe()方法指定只有引導類加載器才會返回實例,體現了設計者希望只有虛擬機標準類庫里面的類才能使用Unsafe的功能,在JDK 10時才將Unsafe 的部分功能通過VarHandle開放給外部使用),因為雖然 DirectByteBuffer分配內存也會拋出內存溢出異常,但它拋出異常時并沒有真正向操作系統申請分配內存,而是通過計算得知內存無法分配就會在代碼里手動拋出溢出異常,真正申請分配內存的方法是 Unsafe::allocateMemory()。

  1. /** 
  2.  * VM Args:-Xmx20M -XX:MaxDirectMemorySize=10M 
  3.  * 
  4.  * @author zhengsh 
  5.  * @date 2021-08-13 
  6.  */ 
  7. public class DirectMemoryOOM { 
  8.     private static final int _1MB = 1024 * 1024; 
  9.  
  10.     public static void main(String[] args) throws Exception { 
  11.         Field unsafeField = Unsafe.class.getDeclaredFields()[0]; 
  12.         unsafeField.setAccessible(true); 
  13.         Unsafe unsafe = (Unsafe)unsafeField.get(null); 
  14.         while (true) { 
  15.             unsafe.allocateMemory(_1MB); 
  16.         } 
  17.     } 

輸出內容:

  1. Exception in thread "main" java.lang.OutOfMemoryError 
  2. Exception in thread "main" java.lang.OutOfMemoryError 
  3.  
  4.  at java.base/jdk.internal.misc.Unsafe.allocateMemory(Unsafe.java:616) 
  5.  at jdk.unsupported/sun.misc.Unsafe.allocateMemory(Unsafe.java:462) 
  6.  at cn.zhengsh.jvm.oom.DirectMemoryOOM.main(DirectMemoryOOM.java:21) 

參考資料

《深入理解 JVM 虛擬機-第三版》 周志明

 

https://docs.oracle.com/javase/specs/jls/se8/html/index.html

 

責任編輯:武曉燕 來源: 運維開發故事
相關推薦

2023-08-01 08:20:42

JVM優化虛擬機

2012-03-01 10:51:37

JavaJVM

2012-05-15 02:04:22

JVMJava

2023-10-12 22:35:08

2023-11-15 16:46:04

內存Java

2024-12-04 15:49:29

2024-12-04 16:44:51

2010-09-27 13:33:26

JVM異常

2016-10-31 19:41:29

Java垃圾回收

2020-08-10 17:49:25

JVM內存溢出

2021-12-05 18:18:20

linux

2024-10-15 08:37:08

2017-05-19 15:13:05

過濾器Spring ClouZuul

2017-05-18 14:14:25

過濾器Spring ClouZuul

2017-07-31 15:47:50

Zuul統一處理

2009-07-15 15:09:18

2012-01-11 13:04:40

JavaJVM

2010-09-27 08:38:49

JVM堆JVM棧

2017-09-20 08:48:09

JVM內存結構

2015-01-09 10:01:50

Spring MVC
點贊
收藏

51CTO技術棧公眾號

国产中文一区| 亚洲精品一区av| 久久亚洲影视婷婷| 国产精品jizz在线观看麻豆| 女教师淫辱の教室蜜臀av软件| 欧美成人黄色| 亚洲电影激情视频网站| 欧美另类高清视频在线| 亚洲天堂手机在线| 亚洲国产日本| 少妇高潮久久久久久潘金莲| 乱码一区二区三区| 在线观看精品| 亚洲国产欧美在线人成| 视频在线99| 日本免费不卡视频| 美女在线一区二区| 4p变态网欧美系列| 麻豆明星ai换脸视频| 中文字幕av一区二区三区人| 在线综合+亚洲+欧美中文字幕| 青青青免费在线| 成a人片在线观看| 91视频免费看| 粉嫩精品一区二区三区在线观看 | 一区二区三区在线视频观看 | 亚洲一区二区偷拍| 欧美momandson| 亚洲成人精品一区| 久久久成人精品一区二区三区| 日本天堂在线| 白白色亚洲国产精品| 91精品啪aⅴ在线观看国产| 欧美亚洲精品天堂| 亚洲国产一区二区三区a毛片| 日韩亚洲第一页| 亚洲午夜久久久久久久国产| 国产精东传媒成人av电影| 欧美精品久久99久久在免费线| 妞干网在线免费视频| 成人一级福利| 亚洲午夜在线电影| 8x8ⅹ国产精品一区二区二区| 欧美精品日韩少妇| 国产精品水嫩水嫩| 四虎一区二区| 粉嫩av在线播放| 国产色婷婷亚洲99精品小说| 美女主播视频一区| 三级视频在线| 91免费小视频| 免费久久一级欧美特大黄| 日本免费网站在线观看| 成人综合激情网| dy888夜精品国产专区| jlzzjlzzjlzz亚洲人| 国产一区二区三区在线观看免费视频| 国产精品人人做人人爽| 日本成人一级片| 蜜桃一区二区三区在线观看| 国产精品免费久久久| 在线观看亚洲国产| 久久丁香综合五月国产三级网站| 国产免费一区二区三区在线能观看 | 91精品国产自产91精品| 影音先锋亚洲天堂| 午夜在线一区二区| 国产精品久久久久久久9999| 这里只有久久精品视频| 久久99蜜桃精品| 99re在线观看视频| 色欲av永久无码精品无码蜜桃| 不卡高清视频专区| 欧美日韩在线不卡一区| 粉嫩一区二区三区国产精品| 亚洲色图视频免费播放| 国产玉足脚交久久欧美| 久草在线资源站手机版| 在线观看免费视频综合| 中文字幕线观看| 大型av综合网站| 亚洲免费一级电影| 亚洲色图27p| 国产精品久久| 日本精品中文字幕| 国产精品福利电影| 成人aa视频在线观看| 久久精品二区| 麻豆传媒在线完整视频| 午夜影院久久久| 青青草精品视频在线观看| 国产精品18| 亚洲精品理论电影| 国产无遮挡在线观看| 午夜激情一区| 日本亚洲精品在线观看| 国产精品毛片一区视频播| av电影在线观看一区| 视频一区不卡| sm久久捆绑调教精品一区| 欧美综合久久久| 亚洲天堂小视频| 国产精品嫩草影院在线看| 久久精品电影网站| 亚洲s码欧洲m码国产av| 国产精品综合久久| 日韩欧美视频一区二区三区四区| 怡红院av在线| 欧美丝袜自拍制服另类| 国产伦精品一区二区三区精品| 欧美日韩老妇| 奇米4444一区二区三区| 国产精品乱码久久久| 久久精品夜色噜噜亚洲aⅴ| 中国一级大黄大黄大色毛片| 三级成人在线| 亚洲成人久久网| 老湿机69福利| 青青国产91久久久久久| 精品国产一区二区三区麻豆小说| 麻豆网站在线观看| 在线看一区二区| 国产精品伦子伦| 欧美日韩p片| 国产在线播放91| 国产午夜在线观看| 午夜电影一区二区三区| 亚洲国产综合av| 久久一区二区三区电影| 日韩av免费在线观看| 欧美性猛交 xxxx| 一区二区久久久久| www.久久com| 色综合久久网| 国产欧美精品日韩精品| 黄色在线小视频| 欧美日韩中文字幕在线视频| 男人女人拔萝卜视频| 91精品在线观看国产| 国产美女久久久| 视频一区二区三区不卡 | 国产三级小视频| 国产精品久久三区| 伊人影院综合在线| 国产高清一区| 91美女片黄在线观看游戏| 老司机午夜在线视频| 欧美日韩一区二区三区高清| 超薄肉色丝袜一二三| 日韩精品五月天| 色综合视频二区偷拍在线| 久九九久频精品短视频| 亚洲欧美中文在线视频| 久久亚洲精品石原莉奈| 国产亚洲一区二区三区在线观看| 日本女优爱爱视频| 日韩一区二区中文| 国产日产欧美a一级在线| 免费av毛片在线看| 91精品国产色综合久久不卡电影 | 欧美va天堂在线| 99中文视频在线| www.综合网.com| 亚洲国产精品va| 狠狠人妻久久久久久综合| 国产亚洲精品aa| 成人综合久久网| 欧美私人啪啪vps| 国产欧美一区二区三区不卡高清| 韩国精品一区| 亚洲午夜性刺激影院| 伊人久久一区二区| 亚洲欧美日韩国产另类专区| 91福利视频免费观看| 亚洲另类自拍| 欧美尤物一区| 3d动漫一区二区三区在线观看| 九九精品视频在线观看| 性猛交xxxx| 欧美无乱码久久久免费午夜一区 | 老司机免费视频| 另类天堂av| 精品一区二区成人免费视频| 国产劲爆久久| 国产精品网站视频| 欧美aaaaaaa| 亚洲人永久免费| 99久久精品国产一区色| 亚洲成人免费影院| 夫妇交换中文字幕| 成人av资源在线观看| 激情婷婷综合网| 亚洲精品国产成人影院| 国产在线欧美日韩| 欧美日韩伦理一区二区| 久久久久久久久久久成人| 精品美女视频在线观看免费软件 | 成人精品一区二区三区校园激情 | 黄色网址在线播放| 欧美一卡二卡在线观看| 综合激情网五月| 亚洲激情图片一区| 免费一级黄色录像| av激情综合网| 欧美在线a视频| 日日欢夜夜爽一区| 精品无码一区二区三区在线| 先锋资源久久| 日本一区二区久久精品| 澳门精品久久国产| 91精品国产综合久久香蕉最新版| 松下纱荣子在线观看| 欧美成人手机在线| av女优在线| 亚洲欧美国产一区二区三区| 亚洲av综合色区无码一区爱av | 99riav国产精品视频| 免费高清不卡av| 精品中文字幕av| 国产精品激情电影| 国产免费xxx| 国产精品国产三级国产在线观看 | 日韩欧美中文第一页| 精品一区在线观看视频| 国产精品欧美一级免费| 精品少妇一区二区三区免费观| 国产成人激情av| 激情五月婷婷基地| 蜜臀久久久久久久| 成人一级片网站| 国产欧美日韩综合一区在线播放| 免费看日本黄色| 伊人久久大香线蕉综合四虎小说 | jizz日本免费| www.久久精品| 国产污在线观看| 不卡一区中文字幕| 男女性杂交内射妇女bbwxz| 国产精品1024久久| 中文字幕第10页| 国产乱人伦精品一区二区在线观看 | 爱情岛亚洲播放路线| 成年无码av片在线| 超碰人人在线| 精品视频9999| 国产美女一区视频| 高清欧美性猛交xxxx| av影院在线| 97超碰国产精品女人人人爽| 国产美女精品写真福利视频| 97国产在线视频| 蜜桃麻豆影像在线观看| 91精品国产91久久久久久吃药| 国产精品vvv| 日本精品久久久| 午夜日韩成人影院| 国产精品久久色| 亚洲成人毛片| 97人人干人人| 欧美黑人巨大videos精品| 国产乱码一区| 看全色黄大色大片免费久久久| 精品视频在线观看| 嫩草影视亚洲| 亚洲欧美久久久久一区二区三区| 性xxxx欧美老肥妇牲乱| 91嫩草国产丨精品入口麻豆| 影音先锋亚洲电影| 亚洲熟妇av一区二区三区| 三级欧美在线一区| 三级一区二区三区| 成人福利视频在线看| 亚洲熟妇一区二区三区| 中文字幕中文在线不卡住| 欧美国产日韩综合| 福利二区91精品bt7086| 加勒比在线一区| 欧美精品一二三| 亚洲欧美黄色片| 亚洲免费一在线| 欧美激情二区| 韩日精品中文字幕| 成人国产激情在线| 97久久天天综合色天天综合色hd | 又大又硬又爽免费视频| 亚洲欧美网站| 久久6免费视频| 91亚洲精品久久久蜜桃网站| 欧美aaa级片| 亚洲一区二区三区三| av手机天堂网| 精品免费日韩av| 国产女人在线观看| 欧美精品久久久久久久久久| 先锋欧美三级| 国产亚洲一区在线播放| 色一区二区三区四区| 久久亚洲精品无码va白人极品| 日韩专区一卡二卡| 超碰caoprom| 中文字幕亚洲在| 日韩三级小视频| 欧美日韩成人综合在线一区二区 | 久久亚洲道色| 偷拍盗摄高潮叫床对白清晰| 一区二区三区国产盗摄| 久久成年人网站| 国产情人综合久久777777| 国产亚洲欧美精品久久久www| 欧洲激情一区二区| 四虎永久在线观看| 美女福利精品视频| 精品亚洲a∨| 欧美日韩综合久久| 在线观看视频免费一区二区三区| 亚洲高清免费在线观看| 91色porny| 日韩欧美中文字幕一区二区| 91精品久久久久久久99蜜桃| 激情在线视频| 欧美整片在线观看| 极品国产人妖chinesets亚洲人妖| 潘金莲一级淫片aaaaa免费看| 秋霞电影网一区二区| 中日韩精品一区二区三区| 亚洲一区二区三区视频在线| 精品区在线观看| 爱福利视频一区| 99精品国自产在线| 日本一区二区三区免费看| 亚洲欧洲一区二区天堂久久| 亚洲综合中文网| 一区二区视频免费在线观看| 国产乱码久久久| 久久九九全国免费精品观看| 国产成人精选| 亚洲高清精品中出| 青娱乐精品视频在线| 免费一级特黄3大片视频| 色呦呦国产精品| 久草在线网址| 国产成人精品免高潮费视频| 天堂网av成人| 播放灌醉水嫩大学生国内精品| av网站一区二区三区| 日韩av男人天堂| 亚洲精品乱码久久久久久按摩观| 欧美13videosex性极品| 久久精品国产第一区二区三区最新章节 | 欧性猛交ⅹxxx乱大交| 国语自产精品视频在线看一大j8 | 国产人伦精品一区二区| www.com亚洲| 在线看福利67194| 欧洲精品久久久久毛片完整版| 在线看成人av电影| 国模一区二区三区白浆| 黄色一级视频免费观看| 日韩精品专区在线影院重磅| 97在线视频免费观看完整版| 久久精品国产99精品国产亚洲性色| 久久久精品五月天| 色偷偷男人天堂| 日韩午夜中文字幕| 爱啪啪综合导航| 欧美中日韩免费视频| 久久精品国产精品亚洲精品 | 91在线视频免费看| 成人精品在线视频| 国内自拍一区| v8888av| 午夜在线精品| 热久久免费国产视频| 免费成人av| 亚洲激情在线看| 亚洲午夜三级在线| 男同在线观看| 国产又爽又黄的激情精品视频| 国内久久精品| 91久久免费视频| 欧美一区二区视频在线观看2020 | 色欧美片视频在线观看| www.亚洲资源| 高清视频一区二区三区| 狂野欧美一区| 侵犯稚嫩小箩莉h文系列小说| 日韩二区三区在线| 开心久久婷婷综合中文字幕| 精品人妻大屁股白浆无码| 2020国产精品| 国产成a人亚洲精v品无码| 国产91精品青草社区| 国产电影一区二区在线观看| 亚洲第一黄色网址| 欧美高清视频不卡网| 欧美激情网站| 在线观看17c| 亚洲国产精品成人久久综合一区| 亚洲AV无码乱码国产精品牛牛 | 性做久久久久久久久久|