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

Java 對象大小的精確計算方法

開發 后端
日常使用Java進行業務開發時,經常因為錯誤的估算導致大量的內存空間在無形之間被浪費了,所以今天筆者就基于這篇文章來聊聊一個Java對象的大小。

日常使用Java進行業務開發時,我們基本不關心一個Java對象的大小,所以經常因為錯誤的估算導致大量的內存空間在無形之間被浪費了,所以今天筆者就基于這篇文章來聊聊一個Java對象的大小,希望對讀者日常堆內存評估有所幫助。

一、Java對象構成詳解

1.整體構成概述

我們這里就以Hotspot虛擬機來探討Java對象的構成,如下所示,可以看到Java對象的整體構成分為:

  • 對象頭(Header)
  • 實例數據(Instance Data)
  • 對齊填充(Padding)

2.對象頭

(1) Mark World

而對象頭是由兩部分組成的,第一部分用于存儲對象自身的數據,也就是我們常說的Mark World,它記錄著一個對象的如下信息:

  • 哈希碼(hashCode)
  • GC分代年齡
  • 鎖狀態標志
  • 線程持有鎖
  • 偏向鎖id
  • 偏向時間戳

(2) 類型指針

再來說說類型指針,它記錄著當前對象的元數據的地址,虛擬機可通過這個指針確定當前對象屬于哪個類的實例,也就是說如果我們希望獲得這個對象的元數據信息是可以通過類型指針定位到。 需要注意的是,在JDK8版本默認情況下,Mark World默認開啟了指針壓縮,這使得這一部分在64位的操作系統中的情況下,長度由原來的8個字節(64位)變為4個字節(32位)。

(3) 數組長度

最后一部分就是數組長度,如果當前對象是基本類型的數組,那么這4位則是記錄數組的長度,為什么說是基本類型呢?原因很簡單,普通Java對象的的大小是可以通過元數據信息計算獲得,而基本類型的數組卻卻無法從元數據信息中計算獲得,所以我們就需要通過4個字節記錄一下數組的長度以便計算。

3.實例數據

這一點就不多說了,這就是對象真正存儲的有效信息,這些實例數據可以是從父類繼承也可以是自定義字段,因為實例數據可能存在多個,Hotspot虛擬機定義了實例對象內存分配的先后順序:

  • long/double(8字節)
  • int(4字節)
  • short/char(2字節)
  • byte/boolean(1字節)
  • oops(Ordinary Object Pointers 普通對象指針)

4.對齊填充

Hotspot虛擬機為了保證在指針壓縮的情況下,32字節的空間仍然表示32G的內存空間地址,用到了8位對齊填充的思想,既保證了緩存命中率可以記錄更多的對象,又能記錄更多的對象地址。 因為指針壓縮涉及的知識點比較多,筆者后續會單獨開一個篇幅進行補充,這里我們有先說一下對其填充,假設我們現在有這樣一個Java對象,可以看到在實例數據部分,它有8字節的long變量和4字節的int變量,合起來是12字節:

public 
class 
Obj 
{
    
private 
long id;

    
private 
int  age;
}

而8位對齊填充的意思就是實例數據部分的和要能夠被16整除,所以對于這個對象的實例部分,我們還需要補充4個字節做到8位的對齊填充:

二、基于JOL了解Java對象的構成

1.前置步驟

了解了Java對象的組成之后,我們不妨通過JOL(Java Object Layout)來印證一下筆者的觀點,所以我們需要在項目中引入下面這個依賴開始本次的實驗:

  <dependency>
   <groupId>org.openjdk.jol</groupId>
   <artifactId>jol-core</artifactId>
   <version>0.10</version>
  </dependency>

2.空對象

首先是一個空對象EmptyObj ,可以看到這個對象沒有任何成員變量:

class 
EmptyObj 
{


}

我們都知道默認情況下,JDK8是開啟指針壓縮的,可以看到object header總共12字節,其中Mark World占了前8字節(4+4),類型指針占了4字節,加起來是12字節,而Java對象要求16位對齊,所以需要補齊4位,總的結果是16字節:

com.sharkChili.webTemplate.EmptyObj object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4        (object header)                           43 c1 00 f8 (01000011 11000001 00000000 11111000) (-134168253)
     12     4        (loss due to the next object alignment)
Instance size: 16 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

我們再來看看關閉指針的壓縮的結果,首先我們設置JVM參數將指針壓縮關閉:

-XX:-UseCompressedClassPointers

此時我們就發現指針由原來是object header多了4位,原本被壓縮的指針占用空間被還原了(offset為8-12的部分),總的計算結果為16字節,無需對齊填充:

com.sharkChili.webTemplate.EmptyObj object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4        (object header)                           c0 34 b8 1c (11000000 00110100 10111000 00011100) (481834176)
     12     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

3.數組對象

我們再來看看數組對象,在默認開啟指針壓縮的情況下,我們創建了一個長度為3的數組:

com.sharkChili.webTemplate.EmptyObj object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4        (object header)                           c0 34 b8 1c (11000000 00110100 10111000 00011100) (481834176)
     12     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
Instance size: 16 bytes
Space losses: 0 bytes internal + 0 bytes external = 0 bytes total

可以看到:

  • Mark World占了8字節
  • 指針4字節(offfset為8這一部分)
  • offset為12這一部分也有了4字節的空間,記錄了一個值3即數組長度

所以8+4+4=16,對象頭剛剛好8位對齊,故無需對齊填充。

再看看實例數據部分(offset為16)這一部分,因為數組中有3個整形所以長度size為12,需要補充4字節達到8位對齊,最終這個數組對象的長度為16(對象頭)+16(實例數據部分)=32字節:

[I object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4        (object header)                           6d 01 00 f8 (01101101 00000001 00000000 11111000) (-134217363)
     12     4        (object header)                           03 00 00 00 (00000011 00000000 00000000 00000000) (3)
     16    12    int [I.<elements>                             N/A
     28     4        (loss due to the next object alignment)
Instance size: 32 bytes
Space losses: 0 bytes internal + 4 bytes external = 4 bytes total

我們再來看看關閉指針壓縮的結果,可以看到mark word和指針都占了8位,加上數組長度的4位,最終對象頭為20位,8位對齊后為24位。 同理實例部分還是12字節的數組元素大小加4字節的8對齊字節,關閉指針壓縮后的對象大小為40字節:

[I object internals:
 OFFSET  SIZE   TYPE DESCRIPTION                               VALUE
      0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4        (object header)                           68 0b 85 1c (01101000 00001011 10000101 00011100) (478481256)
     12     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
     16     4        (object header)                           03 00 00 00 (00000011 00000000 00000000 00000000) (3)
     20     4        (alignment/padding gap)                  
     24    12    int [I.<elements>                             N/A
     36     4        (loss due to the next object alignment)
Instance size: 40 bytes
Space losses: 4 bytes internal + 4 bytes external = 8 bytes total

4.帶有成員變量的對象

我們再來說說帶有成員變量的Java對象,也就是我們日常使用的普通Java對象:

class 
NormalObject 
{
    
int a;
    
short b;
    
byte c;
   

}

默認開啟指針壓縮的情況下,對象頭為8+4=12字節,而實例數據部分,參考上文的實例數據順序,我們的NormalObject的實例數據內存分配順序為int、short、byte。 虛擬機為了更好的利用內存空間,看到對象頭還差4字節才能保證對象頭8位對齊填充,故將實例數據int作為對齊填充移動至對象頭。

所以實例數據部分長度是2+1+5(對齊填充),最終在指針壓縮的情況下,當前對象長度為24字節。

com.sharkChili.webTemplate.NormalObject object internals:
 OFFSET  SIZE    TYPE DESCRIPTION                               VALUE
      0     4         (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4         (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4         (object header)                           43 c1 00 f8 (01000011 11000001 00000000 11111000) (-134168253)
     12     4     int NormalObject.a                            0
     16     2   short NormalObject.b                            0
     18     1    byte NormalObject.c                            0
     19     5         (loss due to the next object alignment)
Instance size: 24 bytes
Space losses: 0 bytes internal + 5 bytes external = 5 bytes total

同理,關閉指針壓縮,相比讀者現在也知道如何計算了,筆者這里就不多贅述了,答案是是對象頭8+8,實例數據4+2+1+1(對齊填充),即關閉指針壓縮情況下,當前普通對象大小為24字節:

com.sharkChili.webTemplate.NormalObject object internals:
 OFFSET  SIZE    TYPE DESCRIPTION                               VALUE
      0     4         (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4         (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4         (object header)                           10 35 0b 1d (00010000 00110101 00001011 00011101) (487273744)
     12     4         (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
     16     4     int NormalObject.a                            0
     20     2   short NormalObject.b                            0
     22     1    byte NormalObject.c                            0
     23     1         (loss due to the next object alignment)
Instance size: 24 bytes
Space losses: 0 bytes internal + 1 bytes external = 1 bytes total

5.帶有數組的對象

最后我們再來看看帶有數組的對象:

class NormalObject {
    int a;
    short b;
    byte c;
    int[] arr = new int[3];

}

先來看看開啟指針壓縮8+4+int變量作為對齊填充即16字節,注意很多讀者會認為此時還需要計算數組長度,實際上數組長度記錄的是當前對象為數組情況下的數組的長度,而非成員變量的數組長度,所以我們的對象頭總的大小就是16。

然后實例數據部分4+2+1+1(對齊填充),最后就是數組引用4+4(對齊填充),最終結果為16+8+8即32:

com.sharkChili.webTemplate.NormalObject object internals:
 OFFSET  SIZE    TYPE DESCRIPTION                               VALUE
      0     4         (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4         (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4         (object header)                           43 c1 00 f8 (01000011 11000001 00000000 11111000) (-134168253)
     12     4     int NormalObject.a                            0
     16     2   short NormalObject.b                            0
     18     1    byte NormalObject.c                            0
     19     1         (alignment/padding gap)                  
     20     4   int[] NormalObject.arr                          [0, 0, 0]
Instance size: 24 bytes
Space losses: 1 bytes internal + 0 bytes external = 1 bytes total

關閉指針壓縮情況下,對象頭8+8。實例數據4+2+1+1(對齊填充),再加上數組引用的4字節+4字對齊填充,最終計算結果為32字節。

com.sharkChili.webTemplate.NormalObject object internals:
 OFFSET  SIZE    TYPE DESCRIPTION                               VALUE
      0     4         (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1)
      4     4         (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
      8     4         (object header)                           48 35 f8 1c (01001000 00110101 11111000 00011100) (486028616)
     12     4         (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0)
     16     4     int NormalObject.a                            0
     20     2   short NormalObject.b                            0
     22     1    byte NormalObject.c                            0
     23     1         (alignment/padding gap)                  
     24     4   int[] NormalObject.arr                          [0, 0, 0]
     28     4         (loss due to the next object alignment)
Instance size: 32 bytes
Space losses: 1 bytes internal + 4 bytes external = 5 bytes total

小結

總的來說要想獲取Java對象的大小,我們只需按照如下步驟即可精確計算:

  • mark world 8位。
  • 確認是否開啟指針壓縮,以計算類型指針大小。
  • 是否是數組,若是則增加4字節數組長度位。
  • 計算對象頭總和進行8位填充。
  • 實例數據按照順序排列并計算總和,并進行8位填充。
  • 引用數據計算總和,并進行8位填充。
  • 綜合上述計算結果。
責任編輯:趙寧寧 來源: 寫代碼的SharkChili
相關推薦

2017-11-20 11:10:26

數據中心機房設備

2010-08-04 15:01:07

Flex Panel控

2018-01-18 21:54:10

云計算公共云云服務

2009-09-27 10:48:54

UPS電池容量

2020-03-24 09:06:45

Java對象大小

2009-11-25 13:45:06

linux服務器并發處理數

2018-11-06 10:08:34

無線AP網絡帶寬無線網絡

2017-07-27 10:49:48

高密WiFi終端

2018-08-15 09:13:27

布線系統線纜用量

2011-07-22 09:34:33

蓄電池組線纜線損

2010-01-25 10:45:25

服務器虛擬化硬件配置需

2018-08-22 10:32:15

虛擬桌面服務器

2025-01-16 07:00:00

AOPSpringBoot后端

2023-10-26 09:20:29

2018-07-18 10:18:01

數據中心負荷計算系統

2010-07-17 15:46:03

WiMAX

2014-05-13 09:53:24

算法π值

2009-12-03 09:59:20

JVM概念Java對象引用類型

2022-11-02 15:28:55

MySQL執行計劃B+樹

2011-05-07 10:47:29

Oracle大小寫
點贊
收藏

51CTO技術棧公眾號

aaaaaav| 成年人网站国产| 国产又粗又猛又爽又黄的视频一 | 在线观看一区欧美| 亚洲精品字幕在线观看| 久久久水蜜桃av免费网站| 在线精品播放av| 国产精品日日摸夜夜爽| 欧美一级大黄| 亚洲曰韩产成在线| 亚洲v日韩v欧美v综合| 亚洲精品久久久久avwww潮水| 亚洲综合好骚| 久久99精品国产99久久6尤物| 蜜桃精品一区二区| 91麻豆精品激情在线观看最新| 婷婷亚洲久悠悠色悠在线播放| 亚洲精品永久www嫩草| 日本韩国在线观看| 国产一区二区电影| 国产精品久久久久久久久久免费 | 久久香蕉精品| 色综合视频一区中文字幕| 国产毛片久久久久久久| caoporn成人免费视频在线| 欧美日韩国产精品成人| 成人午夜视频免费在线观看| 成人女同在线观看| 国产精品久久看| 欧美不卡在线一区二区三区| 亚洲欧美强伦一区二区| 激情久久五月天| 国产精品免费在线免费| 亚洲影院在线播放| 国产欧美短视频| 久久理论片午夜琪琪电影网| 免费一级suv好看的国产网站| 老司机成人在线| 欧美不卡一区二区三区四区| 99国产精品久久久久久| 久久91视频| 欧美性猛交xxxxxx富婆| 欧美 日韩精品| 黄色在线免费观看网站| 亚洲成人免费视| 成人免费网站入口| wwwav在线| 亚洲欧美日韩一区二区三区在线观看| 日韩国产高清一区| chinese偷拍一区二区三区| 91麻豆福利精品推荐| 国外成人免费视频| 特黄视频在线观看| 国产成人鲁色资源国产91色综| 亚洲va久久久噜噜噜久久天堂| 国产精品羞羞答答在线| 韩国av一区二区三区| 成人午夜在线观看| a级片在线视频| 国产在线国偷精品免费看| 成人激情春色网| 国产孕妇孕交大片孕| 精品亚洲aⅴ乱码一区二区三区| 国产一区二区在线播放| 国产露脸国语对白在线| 国产激情偷乱视频一区二区三区| 91精品网站| 色香蕉在线视频| 久久夜色精品一区| 亚洲国产日韩综合一区| av在线免费观看网址| 亚洲国产cao| 国产二区视频在线播放| 欧美va在线| 3d动漫精品啪啪1区2区免费| 久久久久久无码精品人妻一区二区| 中文字幕亚洲在线观看| 日韩av在线免费播放| 久久精品无码一区| 99成人在线视频| 欧美激情视频网址| 国产精品久久久久久人| 精品亚洲国内自在自线福利| 国产伦精品一区二区三| 欧美捆绑视频| 日韩理论片网站| 国产免费黄色小视频| 欧亚一区二区| 精品欧美黑人一区二区三区| 亚洲av综合一区二区| 外国成人免费视频| 97人人模人人爽人人喊中文字 | 欧美一区二区三区免费大片| 免费黄色三级网站| 久久国产精品亚洲人一区二区三区 | 中文字幕影音在线| 欧美巨大另类极品videosbest | 手机av在线网| 欧美18xxxx| 欧美精品卡一卡二| 高h视频在线观看| 亚洲r级在线视频| 一级特黄性色生活片| 欧美视频二区欧美影视| 亚洲色图50p| 久久久久成人片免费观看蜜芽| 久久激情综合| 国产精品18毛片一区二区| 春暖花开成人亚洲区| 亚洲午夜av在线| 午夜久久福利视频| 久久不卡国产精品一区二区| 九九久久精品一区| 在线观看视频中文字幕| 久久免费看少妇高潮| 女人色极品影院| 亚洲成人高清| 在线电影av不卡网址| 六月丁香在线视频| 粉嫩aⅴ一区二区三区四区| 亚洲黄色成人久久久| 手机在线理论片| 欧美精品一区二区在线播放| 亚洲波多野结衣| 欧美aaaaaa午夜精品| 欧美日韩一区二区三| 成人ssswww在线播放| 日韩午夜在线观看视频| 国产视频精品免费| 久久综合亚州| 免费看成人午夜电影| 9999在线视频| 精品蜜桃在线看| 538任你躁在线精品视频网站| 老鸭窝一区二区久久精品| 欧美亚洲免费高清在线观看| 国产夫妻在线播放| 亚洲精品在线免费播放| 欧美丰满艳妇bbwbbw| 国产一区在线视频| 99热都是精品| 久久久精品区| 久久电影一区二区| 国产特黄一级片| 亚洲同性gay激情无套| www.亚洲自拍| 婷婷丁香综合| 亚洲淫片在线视频| 欧美家庭影院| 亚洲福利视频二区| 精品欧美一区二区三区免费观看| 99免费精品视频| 男人天堂1024| 九九久久婷婷| 国产精品h在线观看| av网站大全在线观看| 欧美午夜电影网| 久久精品日韩无码| 国产精品一级在线| 日韩av高清在线看片| 欧亚精品一区| 国产精品第8页| 毛片在线看片| 欧美大黄免费观看| 毛片在线免费视频| 日本一区二区三区在线不卡| 亚洲视频一二三四| 国产精品啊v在线| 国产伦精品一区二区三区免费视频 | 国产日本久久| 美女av一区二区三区| 蜜桃91麻豆精品一二三区| 婷婷夜色潮精品综合在线| 免费看污片的网站| 国内精品伊人久久久久av一坑| 日韩精品免费一区| 亚洲人成伊人成综合图片| 国产精品欧美日韩一区二区| 搞黄网站在线观看| 日韩激情片免费| 亚洲一区二区三区网站| 亚洲综合色网站| 久久久久久久久久久久久久久| 美女视频第一区二区三区免费观看网站| 中文字幕一区二区三区四区五区| 911精品国产| 国产精品美女999| 亚洲国产精品精华素| 亚洲人成电影在线播放| 99国产在线播放| 一本一本大道香蕉久在线精品 | 色中色一区二区| 少妇高潮一区二区三区喷水| 成人avav影音| 91女神在线观看| 在线观看不卡| 一区在线电影| 亚洲va久久久噜噜噜久久| 国产美女久久久| 色综合桃花网| 欧美成人精品在线播放| 你懂的视频在线| 精品欧美一区二区三区精品久久| 高潮无码精品色欲av午夜福利| 亚洲综合999| 女人裸体性做爰全过| 成人av免费在线播放| 亚洲高清av一区二区三区| 久久婷婷激情| 青青草原av在线播放| 欧美1区3d| 中文精品视频一区二区在线观看| 日韩美女国产精品| 成人激情直播| 亚洲我射av| 国产精品视频在线观看| 小h片在线观看| 性欧美视频videos6一9| av毛片在线| 久久精品国产亚洲7777| 国产youjizz在线| 日韩毛片在线观看| 天天摸天天干天天操| 日韩一级精品视频在线观看| 亚洲中文一区二区三区| 色婷婷久久久久swag精品| 日韩欧美三级在线观看| 亚洲一区二区三区爽爽爽爽爽| 欧美一级特黄高清视频| 国产欧美一区二区在线| 亚洲最大成人网站| 99精品视频在线观看免费| 农村末发育av片一区二区| 国内精品国产成人| 九九热精品国产| 久久机这里只有精品| 91插插插插插插插插| 美国毛片一区二区| 亚洲色图38p| 日韩精品国产精品| 热久久精品免费视频| 日本亚洲视频在线| 亚洲黄色小视频在线观看| 免费在线视频一区| 极品粉嫩美女露脸啪啪| 精品一区二区在线视频| 免费av不卡在线| 国产在线视频一区二区三区| 伊人国产精品视频| 国产在线精品不卡| 性农村xxxxx小树林| caoporm超碰国产精品| 久久国产精品无码一级毛片| 久久亚洲影视婷婷| 亚洲综合欧美综合| 欧美国产成人精品| 国产极品美女在线| 一区二区三区高清| 日本少妇xxxx动漫| 色综合久久综合中文综合网| 国产精品传媒在线观看| 欧美人伦禁忌dvd放荡欲情| 精品国产av一区二区| 亚洲第一精品夜夜躁人人躁| 涩爱av在线播放一区二区| 亚洲视频一区二区| 久久日韩视频| 久久久久久亚洲精品| 成人性生交大片免费观看网站| 国产精品高清在线| 国产精品久久久久久久久久久久久久久 | 日本精品久久久| 亚洲高清影院| 国产一区不卡在线观看| 精品国产欧美日韩| 女人床在线观看| 羞羞视频在线观看欧美| 中文字幕永久有效| jlzzjlzz亚洲日本少妇| 欧美自拍偷拍网| 一区二区三区**美女毛片| 天码人妻一区二区三区在线看| 欧美日韩美女一区二区| 国产成人三级在线观看视频| 国产亚洲成精品久久| 四虎影院观看视频在线观看| 国产97在线亚洲| 亚洲国产视频二区| 日韩福利视频| 精品成人在线| 亚洲va在线va天堂va偷拍| 91亚洲精品一区二区乱码| 黄色裸体一级片| 欧美日韩免费在线| 国产情侣激情自拍| 亚洲欧美另类人妖| 黄色小说在线播放| 国产噜噜噜噜噜久久久久久久久| 高清一区二区三区| 免费观看黄色的网站| 翔田千里一区二区| 苍井空张开腿实干12次| 国产精品你懂的在线| 天天爽夜夜爽夜夜爽精品| 91精品国产品国语在线不卡| 黄色美女网站在线观看| 久久久亚洲精品视频| 91国产一区| 日韩亚洲不卡在线| 国产亚洲激情| 久久av一区二区三| 中文字幕日韩av资源站| 天天干天天干天天干天天| 精品免费一区二区三区| av片在线观看网站| 成人免费视频在线观看超级碰| 久久不见久久见国语| 女人天堂av手机在线| 成人在线一区二区三区| 人妻少妇精品一区二区三区| 欧美精品在线观看一区二区| 国产精品无码2021在线观看| 国产69久久精品成人| 粉嫩精品导航导航| 国产美女永久无遮挡| 国产一区久久久| 91精品一区二区三区蜜桃| 欧美三级乱人伦电影| www.亚洲.com| 国产精品美女在线| 精品国产精品| 日本一极黄色片| 久久青草国产手机看片福利盒子| 日韩精品一卡二卡| 亚洲国语精品自产拍在线观看| 女同视频在线观看| 成人午夜影院在线观看| 狠狠色丁香久久综合频道| 欧美日韩一区二区区| 亚洲午夜在线视频| 隣の若妻さん波多野结衣| 欧美国产精品日韩| 超碰97成人| 亚洲熟妇国产熟妇肥婆| 不卡的av网站| 日韩一区二区视频在线| 亚洲欧美制服中文字幕| 亚洲1234区| 亚洲一区二区在| 国产一区二区按摩在线观看| 男人的天堂久久久| 精品乱人伦一区二区三区| 国产盗摄在线视频网站| 国产一区二区不卡视频| 久久精品九九| 中文字幕求饶的少妇| 欧美一区二区三区视频在线观看| 污视频在线看网站| 国产欧美日韩综合精品二区| 国产精品一级| 色欲AV无码精品一区二区久久| 欧美日韩国产综合视频在线观看 | 91精品国产91久久久久久| 天堂资源在线亚洲| 午夜视频在线瓜伦| 1区2区3区国产精品| wwwav网站| 欧美有码在线观看视频| 日韩理论片av| 性高潮久久久久久| 欧美日韩亚洲系列| 午夜国产福利在线| 操人视频欧美| 久久伊人亚洲| 午夜国产福利一区二区| 亚洲精品720p| 国产福利一区二区三区在线播放| 精品一区二区三区毛片| 99久久99久久精品免费观看| 真实新婚偷拍xxxxx| 久99久在线视频| 国产一区二区精品久| www.午夜av| 日韩欧美在线网址| aa在线视频| 欧美日韩精品一区| 国产一区二区不卡在线| 亚洲综合图片网| 久久99热这里只有精品国产| 免费精品国产| 无码人妻丰满熟妇啪啪网站| 欧洲精品在线观看| www中文字幕在线观看| 先锋在线资源一区二区三区| 成人美女视频在线观看18| 国产精品sm调教免费专区| 欧美激情综合色| 99欧美视频| 免费一级做a爰片久久毛片潮| 日韩亚洲欧美高清|