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

JVM源碼分析-對象的創建過程

開發 后端
我們使用main函數創建School的一個對象,那么這個過程發生了哪些事情?在JVM內存中多了什么呢?讓我們一起看下吧!

[[386820]]

在開始MySQL的學習之前,還想寫一篇文章把前面學習的知識點回顧一下,就有了今天的這篇文章。

示例

有類School,這個類中有3個成員變量:引用類型String類型的schoolName,通過顯式代碼塊初始化;基本數據類型int型studentsNum,顯式初始化;引用類型Class類型student,通過School的構造函數初始化。

我們使用main函數創建School的一個對象,那么這個過程發生了哪些事情?在JVM內存中多了什么呢?讓我們一起看下吧!

  1. public class School { 
  2.     private String schoolName; 
  3.     private int studentsNum = 10000; 
  4.     private Student student; 
  5.  
  6.     { 
  7.         schoolName = "清華大學"
  8.     } 
  9.  
  10.     public School(){ 
  11.         student = new Student(); 
  12.     } 
  13.  
  14. class Student{ 
  15.  
  16.  
  17. class Test{ 
  18.     public static void main(String[] args) { 
  19.         School school = new School(); 
  20.     } 

 當我們執行new School()時,進行了對象的創建,大致可以分為以下5步:

在詳細了解這5個步驟之前我們再詳細聊一下對象頭,在synchronized鎖升級過程分析的時候我們已經初步接觸過它。

對象的內存布局

對象在堆空間的內存布局包含了3個部分:對象頭(Header)、實例數據(Intance Data)、對齊填充(Padding)。

對象頭

對象頭包含了兩部分:運行時元數據、指向類元數據的指針kclass,確認這個對象所屬的類型。

運行時元數據(Mark Word)包含:哈希值、GC分代年齡、鎖狀態標志位、偏向線程ID。運行時元數據的信息是變化的,在synchronized鎖的升級過程中,Mark Word在不同的鎖狀態下是不一樣的。

下圖展示展示了無鎖狀態、偏向鎖、輕量級鎖、重量鎖以及對象被GC標記的對象頭中的運行時數據信息:

實例數據

實例數據是對象真正存儲的有效信息,它包含了對象中定義的各種類型的字段。這些字段有對象本身定義的,也有從所有父對象繼承的字段。

父類的構造方法先于子類執行,所以父類變量的定義都在子類前面。

對齊填充

對齊填充不是必須的,也沒有實在的意義,它僅僅是個占位符的作用。HotSpot虛擬機要求對象的起始地址必須是8字節的整數倍,因此當對象沒有滿足的時候,就需要對齊填充來補全。

現在我們已經了解了對象在堆內存的布局,在之前的JVM文章中也學習了虛擬機棧結構和方法區(JDK1.8之后稱為元空間,勾勾之前習慣稱為方法區,但是怕大家混淆后續我們都用元空間表示),那么接下來我們詳細分析school對象創建的整個過程。

對象創建的步驟

對象的創建是在主線程的main()方法中,所以在主線程的虛擬機棧中就會創建main()的棧幀,main()就是當前方法。

我們回顧下棧和棧幀。

JVM內存區域劃分為5個模塊:堆、元空間、虛擬機棧、本地方法棧和程序計數器(也成為pc寄存器)。

虛擬機棧和本地方法棧都屬于棧,本地方法棧中只存放native方法的棧信息。

虛擬機棧的生命周期和線程的生命周期一致,它隨著線程的創建而創建,隨著線程的銷毀而銷毀,所以它是線程私有的內存區域。

虛擬機棧是由棧幀組成的,棧幀中包含了局部變量表、操作數棧、動態鏈接、方法返回地址、附加信息。棧幀是隨著方法的調用而創建的。所以當主線程調用main()方法時,此時在主線程的虛擬機棧中就創建了main()棧幀。

main()棧幀中的局部變量表包含兩個變量:args和school。

主線程的虛擬機棧的棧幀結構如下圖:

main()方法想要將school這個局部變量實例化,就需要執行School這個類的實例化。

那么new School()發生了什么呢?我們接下來詳細分析之前的5個步驟。

判斷對象的類是否已經加載

當虛擬機遇到new這個指令時,會首先檢查這個指令的參數能否在元空間的常量池中定位到一個類的符號引用,并且檢查這個符號引用代表的類是否已經被加載,即判斷元空間中是否包含這個類的類元信息。

我們通過javap -v -p Test.clas查看Test類的字節碼信息:

  1. Classfile /E:/study/javacodegirl/src/main/java/com/study/test/code/girl/base/jvm/Test.class 
  2.   Last modified 2021-2-21; size 352 bytes 
  3.   MD5 checksum 2df3d394ac88d2aa4da9d27f848067c5 
  4.   Compiled from "School.java" 
  5. class com.study.test.code.girl.base.jvm.Test 
  6.   minor version: 0 
  7.   major version: 52 
  8.   flags: ACC_SUPER 
  9. Constant pool: 
  10.    #1 = Methodref          #5.#14         // java/lang/Object."<init>":()V 
  11.    #2 = Class              #15            // com/study/test/code/girl/base/jvm/School 
  12.    #3 = Methodref          #2.#14         // com/study/test/code/girl/base/jvm/School."<init>":()V 
  13.    #4 = Class              #16            // com/study/test/code/girl/base/jvm/Test 
  14.    #5 = Class              #17            // java/lang/Object 
  15.    #6 = Utf8               <init> 
  16.    #7 = Utf8               ()V 
  17.    #8 = Utf8               Code 
  18.    #9 = Utf8               LineNumberTable 
  19.   #10 = Utf8               main 
  20.   #11 = Utf8               ([Ljava/lang/String;)V 
  21.   #12 = Utf8               SourceFile 
  22.   #13 = Utf8               School.java 
  23.   #14 = NameAndType        #6:#7          // "<init>":()V 
  24.   #15 = Utf8               com/study/test/code/girl/base/jvm/School 
  25.   #16 = Utf8               com/study/test/code/girl/base/jvm/Test 
  26.   #17 = Utf8               java/lang/Object 
  27.   com.study.test.code.girl.base.jvm.Test(); 
  28.     descriptor: ()V 
  29.     flags: 
  30.     Code: 
  31.       stack=1, locals=1, args_size=1 
  32.          0: aload_0 
  33.          1: invokespecial #1                  // Method java/lang/Object."<init>":()V 
  34.          4: return 
  35.       LineNumberTable: 
  36.         line 28: 0 
  37.  
  38.   public static void main(java.lang.String[]); 
  39.     descriptor: ([Ljava/lang/String;)V 
  40.     flags: ACC_PUBLIC, ACC_STATIC 
  41.     Code: 
  42.       stack=2, locals=2, args_size=1 
  43.          0: new           #2                  // class com/study/test/code/girl/base/jvm/School 
  44.          3: dup 
  45.          4: invokespecial #3                  // Method com/study/test/code/girl/base/jvm/School."<init>":()V 
  46.          7: astore_1 
  47.          8: return 
  48.       LineNumberTable: 
  49.         line 30: 0 
  50.         line 31: 8 
  51. SourceFile: "School.java" 

 在main()中new指令的參數是#2,我們可以在Constant pool中找到#2對應的類信息。

如果沒有這個類的信息,那么就會按照雙親委派模型加載School類。

類的加載過程:加載、連接、初始化,其中連接包括:驗證、準備、解析。

執行類的加載的是類加載器,它分為:啟動類加載器、擴展類加載器、應用類加載器和自定義加載器。

School類是ClassPath下的文件,它的類加載是應用類加載器,當應用類加載器按照ClassLoader+包名+類名查找對應的.class文件時,如果找不到這個文件就會拋出ClassNotFoundException異常,如果找到了則進行類的加載,并生成對應的Class類對象。這個時候在元空間中就有了School的類元數據了。

為對象分配內存空間

接下來就需要計算對象占用的空間大小,基本類型除了long和double是8個字節,byte和boolean是1個字節,char和short是2個字節,其他基本類型都是4個字節,引用類型也是4個字節。

內存大小計算好之后在堆中劃分一塊內存空間給新對象。大部分情況下,對象是在新生代的Eden區中分配,如果此時Eden區沒有足夠的內存空間進行分配,虛擬機將發起一次Minor GC。但是當我們為一個很長的字符串或者數組分配內存時,這種類型的大對象需要連續的內存空間,可以直接在老年代進行分配,這樣做可以避免Eden和兩個S區發生大量的內存復制。但是大對象可能會導致連續空間不足而提前觸發GC,我們開發中也應該盡量避免大對象。

內存分配有兩種方式:指針碰撞和空閑列表分配。

  • 指針碰撞:當內存使用的GC算法是標記整理或者復制算法時,內存是規整的,此時我們為對象分配內存只需要移動指針位置就可以。Serial和ParNew使用的GC回收算法是標記復制算法,內存的分配就是指針碰撞的方式。

 

  • 空閑列表分配:當內存使用的GC算法是標記清除算法時,內存是規整的,這個時候維護了內存空閑的列表,在為新對象分配內存時從空閑列表中找到內存就可以。CMS使用的GC回收算法是標記清除算法,內存的分配方式就是空閑列表分配。

看完內存的分配你有沒有疑問?堆內存是所有線程共享的,如果兩個線程同時都想占用這一塊內存空間怎么辦呢?這就涉及到了分配內存空間時的并發安全問題。

JVM提供了兩種處理并發安全的方式:一種是我們常用的CAS失敗重試+區域鎖來保證內存分配的原子性,另外一種是通過開啟-XX:+UseTLAB參數為每個線程預分配一塊TLAB,在JDK1.8中這個參數是默認開啟的。

經過了這一步之后,堆內存中就有了School實例的一塊內存區域了:

初始化分配到的內存空間

屬性的賦值操作分為3個類型,我們在示例中都有舉例:

  • 默認值初始化
  • 顯式初始化和代碼塊初始化
  • 構造方法初始化

初始化分配到的內存空間是默認值初始化,它為類的成員變量設置默認值,保證對象實例字段在不賦值時可以直接使用。基本數據類型的默認值為0,布爾類型的默認值為false,引用類型的默認值為null。

不要把這一步的初始化和類加載過程中的初始化混淆了!

類加載過程中的初始化是對類的靜態變量初始化,不包含類的實例變量。

執行了這一步之后,內存中的情況如下圖:

設置對象的對象頭

將對象的所屬的類、對象的HashCode值、對象的GC信息、鎖信息等數據存放在對象頭中。它取決于JVM實現。對象頭的信息我們前面已經講過,這里不再贅述。

執行了這一步之后內存中的數據變化:

 

執行init進行初始化

這個時候初始化過程才真正開始。這個過程是對應字節碼invokespecial,執行init方法。

它會執行實例化代碼塊、調用類的構造方法、將堆內對象的首地址賦值給引用變量。這一步之后真正可用的對象才算創建完成。

執行了這一步之后內存中的變化如下圖:

總結

對象的創建過程:類元數據加載->分配內存空間并解決并發問題->初始化分配的內存空間->設置對象頭信息->執行init方法進行初始化。

對象的整個創建過程大家要對JVM的內存區域比較了解,熟悉每個區域存放的數據,并知道在哪個過程存的數據。

類元數據的加載是元空間的數據來源,我們還可以回顧下類加載機制、雙親委派模型、哪些場景下需要打破雙親委派,之前勾勾分析了JDBC的SPI機制,利用線程上下文類加載器打破雙親委派。

對象的創建都是基于堆空間的,我們可以回顧下堆空間的內存分配、GC回收算法和GC回收器。

設置對象頭信息我們需要了解對象頭,還可以按照對象頭的數據變化回顧synchronized鎖的升級過程。

對象創建之后內存的數據變化如下圖:

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2017-02-27 11:48:58

JVM源碼分析Java

2022-03-28 11:00:34

JVMJava對象

2011-06-23 15:10:39

Qt 窗體

2017-01-12 14:52:03

JVMFinalRefere源碼

2015-11-16 11:22:05

Java對象內存分配

2010-09-17 13:32:22

JVM.dll

2014-04-29 13:16:42

OpenGLAndroid庫加載過程

2020-10-30 08:35:23

Java Virtua

2010-07-08 13:35:39

UML面向對象

2017-01-11 14:02:32

JVM源碼內存

2020-05-26 18:50:46

JVMAttachJava

2019-07-24 08:34:35

Java對象數據結構

2009-07-08 11:25:36

jvm.dll

2024-09-11 09:25:03

Tomcat組件PREP

2010-09-27 10:30:42

JVM對象生命周期

2013-03-14 11:17:46

2025-05-21 10:09:09

Spring 5.xIOC編程

2025-03-14 10:37:24

SpringSpring IOC容器

2017-01-11 14:19:26

JVM源碼All

2024-02-22 07:37:37

對象JVM內存
點贊
收藏

51CTO技術棧公眾號

成人在线视频首页| 自由日本语亚洲人高潮| 欧美在线色视频| 中国一区二区三区| 国精品人妻无码一区二区三区喝尿| 亚洲精品免费观看| 尤物九九久久国产精品的分类 | 欧美在线播放高清精品| 一区不卡字幕| 午夜成人免费影院| 久久99精品久久久久久国产越南 | 中文字幕人妻色偷偷久久| 99视频精品全部免费在线视频| 欧美xxxxxxxxx| 久久久精品麻豆| 婷婷av在线| 国产性色一区二区| 波多野结衣精品久久| 国产爆乳无码一区二区麻豆| 人妻无码视频一区二区三区| 在线视频国产区| 久久亚洲精品小早川怜子| 91精品国产综合久久香蕉最新版 | 欧美在线|欧美| 久久久久99精品成人片| 午夜激情在线观看| 久久精品视频在线免费观看| 国产精品日本一区二区| 一区二区自拍偷拍| 亚洲欧美日韩在线观看a三区| www.亚洲成人| www.黄色在线| 色爱综合av| 精品久久99ma| 一区二区久久精品| 福利一区二区| 日韩欧亚中文在线| 日韩网站在线免费观看| 18+激情视频在线| 亚洲欧美自拍偷拍色图| 视频一区二区三区免费观看| 青草久久伊人| 91丨九色丨蝌蚪富婆spa| 99精品在线直播| 99热这里只有精品99| 久久se精品一区二区| 国产精品久久久久久久久久久久| 久久久蜜桃一区二区| 99精品视频免费观看视频| 欧美激情一区二区久久久| 老熟妇高潮一区二区三区| 久久美女视频| 久久精品国产91精品亚洲| 在线观看日本黄色| 欧美电影一二区| 日韩视频在线一区| 极品色av影院| 五月天综合网站| 久久精品国产99国产精品澳门| 国精品人伦一区二区三区蜜桃| 久久影院一区| 影音先锋中文字幕一区| 7777女厕盗摄久久久| 久久6免费视频| 国产激情精品一区二区三区| 91精品国产91综合久久蜜臀| 一级黄色片在线免费观看| 精品一级视频| 欧美sm美女调教| 无码av免费精品一区二区三区| aiss精品大尺度系列| 精品福利在线导航| 午夜男人的天堂| 亚洲深夜福利在线观看| 国产一区二区三区高清在线观看| 亚洲第一视频区| 久久综合电影| 欧美精品福利在线| 免费观看一区二区三区毛片| 亚洲欧美日韩国产综合精品二区 | 精品国产欧美成人夜夜嗨| 少妇高潮在线观看| 欧美黄免费看| 欧美性受xxxx白人性爽| 亚洲精品毛片一区二区三区| 久久99精品国产.久久久久| 97netav| 深夜福利在线看| 亚洲国产精品成人综合色在线婷婷 | 国产美女明星三级做爰| 成人午夜激情影院| 日本电影一区二区三区| 欧美jizz18性欧美| 调教+趴+乳夹+国产+精品| 中文字幕永久视频| 91精品国产乱码久久久竹菊| 亚洲欧美日韩久久久久久| 顶级黑人搡bbw搡bbbb搡| 亚洲日本激情| 国产日韩欧美一二三区| 欧美特黄一级视频| 欧美极品美女视频| 日本欧美视频在线观看| 欧美一区二区三区婷婷| 精品久久久久久久一区二区蜜臀| 亚洲精品国产一区黑色丝袜| 日韩在线视频免费看| 久久精品黄色| 亚洲精品www| 国精品人伦一区二区三区蜜桃| 一区二区三区国产盗摄| 91亚洲国产成人精品性色| 偷拍25位美女撒尿视频在线观看| 中文字幕在线观看一区| 丰满人妻中伦妇伦精品app| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 久久青草久久| 国产高清精品一区| 久操视频在线免费播放| 色老汉一区二区三区| 在线观看免费视频黄| 久久精品一区二区不卡| 国产精品黄页免费高清在线观看| 欧美一级特黄aaaaaa| 亚洲欧美怡红院| 爆乳熟妇一区二区三区霸乳| 日韩高清一级| 国内精品久久久久久中文字幕| 97精品人妻一区二区三区在线| 久久久久国产成人精品亚洲午夜| 国产av熟女一区二区三区| 激情久久一区二区| 亚洲网站视频福利| 九九精品免费视频| 91小视频在线| 男人用嘴添女人下身免费视频| 精品中文字幕一区二区三区四区| 中文国产亚洲喷潮| 中文字幕日韩免费| 91视视频在线观看入口直接观看www | 色婷婷精品久久二区二区密| 欧美日韩伊人| 成人欧美一区二区| 制服丝袜在线播放| 欧美一级免费大片| 欧美毛片在线观看| 国产精品一二三区在线| 7777在线视频| 国产精品一区二区精品视频观看| 日韩天堂在线视频| 91亚洲国产成人精品一区| 国产精品国产精品国产专区不片 | 日本二区在线观看| 男人的天堂亚洲| 久久综合九色欧美狠狠| 波多视频一区| 亚洲欧美日韩天堂| 五月婷婷丁香在线| 国产精品欧美一区喷水| 老司机久久精品| 久久久久久久久久久9不雅视频| 国产一区二中文字幕在线看 | 日韩精品久久久久久久软件91| 久久福利视频网| 亚洲奶汁xxxx哺乳期| 偷拍与自拍一区| 女~淫辱の触手3d动漫| 日韩在线观看一区二区| 亚洲一区美女| 亚洲精品a区| 91精品国产电影| 粉嫩av一区| 91精品国产麻豆| 黄网站免费在线| 久久精品一区二区三区不卡 | www.久久精品视频| 国产精品五月天| 先锋资源在线视频| 日韩午夜高潮| 天天人人精品| 久久国产精品美女| 2019中文在线观看| 888av在线| 日韩美女视频在线| 日韩黄色在线播放| 18成人在线观看| 成人性生活免费看| 蜜臀av一级做a爰片久久| 强伦女教师2:伦理在线观看| 国产精品xxx在线观看| 日本亚洲欧美三级| av香蕉成人| 亚洲美女视频网站| 99久久久国产精品无码网爆| 午夜伦理一区二区| 99国产精品无码| av中文字幕一区| 污色网站在线观看| 99精品国产在热久久婷婷| 夜夜爽www精品| 欧美丝袜美腿| 成人精品网站在线观看| 日韩视频免费在线播放| 欧美成人家庭影院| 97国产在线视频| 日本激情在线观看| 亚洲精品成a人在线观看| 国产精品嫩草影院精东| 欧美日韩在线影院| 精品无码久久久久久久| 国产精品少妇自拍| 国产传媒第一页| 国产·精品毛片| 天天影视色综合| 天堂蜜桃91精品| 天堂…中文在线最新版在线| 亚洲一区在线| 亚洲视频精品一区| 视频精品在线观看| 精品国产一二| 欧美影院视频| 成人妇女免费播放久久久| 久久精品女人天堂av免费观看| 高清欧美性猛交xxxx| sm国产在线调教视频| 中文字幕欧美视频在线| 神马久久精品| 亚洲国产美女久久久久| www.国产麻豆| 欧美一二三在线| 一级黄色片在线播放| 91国产精品成人| 久久久精品福利| 欧美视频在线免费| 日本黄色片视频| 亚洲国产日韩a在线播放性色| 91九色丨porny丨极品女神| 国产精品久久久久婷婷二区次| 久久精品一区二区免费播放| www亚洲一区| 亚洲中文字幕无码av| av男人天堂一区| 91久久中文字幕| 国产夫绿帽单男3p精品视频| 欧美日韩国产三级| 羞羞色院91蜜桃| 欧美在线短视频| 中文人妻熟女乱又乱精品| 欧日韩精品视频| 中文字幕你懂的| 欧美日韩国产综合一区二区| 亚洲视频一区二区三区四区| 欧美日韩在线播| 97超碰人人草| 日韩欧美一二三| 丰满岳乱妇国产精品一区| 精品国产乱码久久久久久1区2区| 国产自产一区二区| 亚洲第一av在线| 你懂的在线免费观看| 亚洲欧美中文日韩v在线观看| 国产日韩精品在线看| 欧美一区在线看| 欧美中日韩免费视频| 成人同人动漫免费观看| 在线视频一区观看| 国产一区激情| 777久久久精品一区二区三区| 久久精品一区| 国产乱女淫av麻豆国产| 国产馆精品极品| 成人免费毛片日本片视频| 久久久久久影视| 强制高潮抽搐sm调教高h| 一区二区三区毛片| 日韩中文字幕在线观看视频| 欧美亚洲综合久久| jlzzjlzzjlzz亚洲人| 亚洲级视频在线观看免费1级| 日本免费一区二区三区最新| 中文字幕日韩电影| 成人福利电影| 国产成人在线视频| 精品三级国产| 久久综合九色99| 国产精品传媒精东影业在线| 成人在线国产视频| 视频一区在线播放| 中文字幕一区二区在线观看视频| 成人av免费观看| 丰满的亚洲女人毛茸茸| 亚洲成人综合网站| 亚洲天堂免费av| 亚洲国产小视频| 嫩草在线视频| 青青久久av北条麻妃海外网| 精品国产亚洲一区二区三区| 免费在线成人av| 欧美在线影院| 国产一区二区在线免费播放| 国产91在线|亚洲| 69视频在线观看免费| 亚洲午夜激情av| 国产又粗又黄又爽| 亚洲欧美精品中文字幕在线| 午夜羞羞小视频在线观看| 国产精品国语对白| 日韩高清三区| 久久精品xxx| 国产在线精品一区二区夜色| 丝袜美腿中文字幕| 一区二区免费在线| 中文字幕在线观看精品| 亚洲精品午夜精品| 日本乱理伦在线| 成人h视频在线观看播放| 久久99国产精品视频| 久久亚洲精品无码va白人极品| 蜜臀91精品一区二区三区| 一二三不卡视频| 五月天网站亚洲| 亚洲av无码一区二区三区dv| 日韩亚洲成人av在线| 日韩成人影音| 玛丽玛丽电影原版免费观看1977| 国产精品分类| av在线网站免费观看| 国产精品美女久久久久高潮| 成人a v视频| 色综合五月天| 大伊香蕉精品视频在线| 国产一区高清在线| 在线视频这里只有精品| 在线亚洲精品福利网址导航| 天堂中文在线8| 国内精品久久久久久中文字幕| 伊人久久亚洲| 菠萝蜜视频在线观看入口| 国产剧情在线观看一区二区| 2014亚洲天堂| 911精品国产一区二区在线| 91女主播在线观看| 国产精品久久久久av| 第一社区sis001原创亚洲| 日韩一级理论片| 国产精品色噜噜| 在线免费一级片| 久久久av一区| 久久一级大片| 免费人成自慰网站| 99精品国产视频| 中文字幕亚洲乱码熟女1区2区| 亚洲男人天堂2024| 欧美中文字幕精在线不卡| 日产精品一线二线三线芒果| 爽好久久久欧美精品| 久久免费手机视频| 欧美日韩精品一二三区| 福利在线视频网站| 成人欧美视频在线| 亚洲欧美日韩国产一区| 亚洲AV无码国产成人久久| 91国在线观看| 久cao在线| 黄色一区三区| 久久综合亚州| 麻豆精品国产免费| 精品乱码亚洲一区二区不卡| 24小时免费看片在线观看 | 私拍精品福利视频在线一区| 91猫先生在线| 国产精品毛片久久久久久久| 国产情侣一区二区| 午夜精品在线视频| 九九综合久久| 五月天丁香花婷婷| 精品电影在线观看| 高h视频在线| 成人羞羞视频免费| 久久午夜精品一区二区| 性色av一区二区咪爱| 日韩在线观看不卡| 9l视频自拍9l视频自拍| av亚洲精华国产精华精华| 欧美日韩 一区二区三区| 九九精品在线观看| 亚洲裸色大胆大尺寸艺术写真| 久久婷五月综合| 亚洲国产日日夜夜| eeuss影院在线观看| 99久久国产免费免费| 麻豆成人在线| 欧美丰满艳妇bbwbbw| 亚洲欧美日韩爽爽影院| 蜜桃精品一区二区三区| 人妻内射一区二区在线视频| 亚洲激情成人在线| 爱久久·www| 国产伦理久久久| 黄色资源网久久资源365|