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

怎樣計(jì)算一個(gè) Java 對(duì)象大小?這兒有幾種方法

開發(fā) 后端
計(jì)算機(jī)發(fā)展到今天,硬件看似配置越來越高,但依然架不住你隨意寫,搞不好應(yīng)用就掛了。另外像游戲等一些行業(yè)還是「錙銖必較」,讓應(yīng)用能 穩(wěn)定的運(yùn)行。在Java 應(yīng)用里,要想精確計(jì)算,需要對(duì)于對(duì)象的占用大小做到心里有數(shù)。那這篇文章一起來看看, 在 Java 的世界里,一個(gè)對(duì)象的大小究竟是多少呢?有哪些方式能夠計(jì)算對(duì)象大小。

 [[319676]]

在計(jì)算機(jī)發(fā)展的早期階段,硬件的發(fā)展速度慢,容量小,所以軟件開發(fā)人員寫起代碼里對(duì) byte、bit 都是「斤斤計(jì)較」,這才使用寫出來的應(yīng)用能在我們今天看起來那么小的,配置那么低的硬件中運(yùn)行良好,同時(shí)效果驚人。

那么計(jì)算機(jī)發(fā)展到今天,硬件看似配置越來越高,但依然架不住你隨意寫,搞不好應(yīng)用就掛了。另外像游戲等一些行業(yè)還是「錙銖必較」,讓應(yīng)用能 穩(wěn)定的運(yùn)行。在Java 應(yīng)用里,要想精確計(jì)算,需要對(duì)于對(duì)象的占用大小做到心里有數(shù)。那這篇文章一起來看看, 在 Java 的世界里,一個(gè)對(duì)象的大小究竟是多少呢?有哪些方式能夠計(jì)算對(duì)象大小。

要看一個(gè)對(duì)象的大小,首先需要看Java 運(yùn)行的平臺(tái)是 32位還是 64位的 ,其次還要看對(duì)象內(nèi)有多少屬性(field)。最后還有一些 JVM 自身需要 在對(duì)象里記錄的信息,比如說有GC的狀態(tài)、同步狀態(tài)、數(shù)組長度等等多種信息。這些項(xiàng)匯總求和,基本就是一個(gè)對(duì)象的大小了。不過VM為了效率,會(huì)采用固定長度,比如 8 位的整數(shù)倍來統(tǒng)一存儲(chǔ)。這種情況下,如果原對(duì)象大小不足時(shí),就會(huì)擴(kuò)展對(duì)齊來存儲(chǔ)。

好的,下面來看下 JVM 里,一個(gè)Java 對(duì)象大小占用多少。

由于現(xiàn)在基本操作系統(tǒng)基本都是64位,咱們后面都以64位 JVM 來說明。

首先來看兩個(gè)例子:

  1. public class App { 

 

  1. public class App { 
  2.    private byte a; 
  3.    private int b; 

 

例子1里, App 這個(gè)對(duì)象占用內(nèi)存大小是多少 byte 呢?答案是 16。例子2 又是多少呢?答案是 24。

這里是怎么計(jì)算的呢?

計(jì)算方式

和開頭的文字描述類似,在Java 里一個(gè)對(duì)象大小,是由這些內(nèi)容組成

一個(gè)對(duì)象Object 大小 = Header + Primitive Fields + Reference Fields + Alignment & Padding`

其中的 Header 部分,就是 JVM 用于記錄特定信息的,一版也叫做 object header,在 OpenJDK 的匯總頁里,描述是這樣的:

Common structure at the beginning of every GC-managed heap object. (Every oop points to an object header.) Includes fundamental information about the heap object's layout, type, GC state, synchronization state, and identity hash code. Consists of two words. In arrays it is immediately followed by a length field. Note that both Java objects and VM-internal objects have a common object header format.

我們看到 object header 由這些部分組成:

  • mark word
  • klass pointer
  • (Optinal) 如果是數(shù)組,會(huì)記錄數(shù)組的長度

mark word

The first word of every object header. Usually a set of bitfields including synchronization state and identity hash code. May also be a pointer (with characteristic low bit encoding) to synchronization related information. During GC, may contain GC state bits.

klass pointer

The second word of every object header. Points to another object (a metaobject) which describes the layout and behavior of the original object. For Java objects, the "klass" contains a C++ style "vtable".

總結(jié)一下,對(duì)象頭里,基本是 GC的狀態(tài)、同步狀態(tài)、identity hash code,數(shù)組長度,以及 class 元信息的指針。

header 的長度由兩個(gè) word 組成。mark word 在 64位VM里,長度是 8 bytes。klass pointer 的長度64位VM下受參數(shù)-XX:+UseCompressedOops配置控制, 可能是 4 bytes,也可能是8 bytes。

例子1,我們看關(guān)閉情況-XX:-UseCompressedOops

  1. OFFSET  SIZE   TYPE DESCRIPTION                               VALUE 
  2.       0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1) 
  3.       4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0) 
  4.       8     4        (object header)                           38 c4 6a 97 (00111000 11000100 01101010 10010111) (-1754610632) 
  5.      12     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1) 
  6. Instance size: 16 bytes 
  7. Space losses: 0 bytes internal + 0 bytes external = 0 bytes total 

16 bytes 全都是對(duì)象頭。

如果打開,則 object header 占 12 個(gè)bytes, 另外4個(gè)會(huì)補(bǔ)齊。

  1. OFFSET  SIZE   TYPE DESCRIPTION                               VALUE 
  2.       0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1) 
  3.       4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0) 
  4.       8     4        (object header)                           05 c0 00 f8 (00000101 11000000 00000000 11111000) (-134168571) 
  5.      12     4        (loss due to the next object alignment) 
  6. Instance size: 16 bytes 
  7. Space losses: 0 bytes internal + 4 bytes external = 4 bytes total 

例子2,輸出是這樣:

  1. OFFSET  SIZE   TYPE DESCRIPTION                               VALUE 
  2.       0     4        (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1) 
  3.       4     4        (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0) 
  4.       8     4        (object header)                           05 c1 00 f8 (00000101 11000001 00000000 11111000) (-134168315) 
  5.      12     4    int App.b                                     0 
  6.      16     1   byte App.a                                     0 
  7.      17     7        (loss due to the next object alignment) 
  8. Instance size: 24 bytes 
  9. Space losses: 0 bytes internal + 7 bytes external = 7 bytes total 

增加了 field 的占用, 這里的占用大小,就是咱們常說的 基本數(shù)據(jù)類型 的大小。如果有對(duì)象引用類型,就再加上這些的大小即可。

工具

下面的這些工具及方式,可用來計(jì)算對(duì)象的大小。

1.JOL

JOL 是 OpenJDK 提供的一個(gè)工具,在項(xiàng)目中添加依賴后可直接使用。

  1. <dependency> 
  2.     <groupId>org.openjdk.jol</groupId> 
  3.     <artifactId>jol-core</artifactId> 
  4.     <version>0.9</version> 
  5. </dependency> 

然后代碼里直接輸出即可。

  1. public class App { 
  2.     private byte a; 
  3.     private int b;     
  4.     public static void main(String[] args) { 
  5.         // 這里就會(huì)輸出和上面類似的內(nèi)容 
  6.         System.out.println(ClassLayout.parseClass(new App()).toPrintable());  
  7.     } 

2.Instrument

在 Instrument 包的 Instrumentation類內(nèi),有一個(gè)可以直接獲取對(duì)象大小的方法,注釋如下:

  1. /** 
  2.     * Returns an implementation-specific approximation of the amount of storage consumed by 
  3.     * the specified object. The result may include some or all of the object's overhead, 
  4.     * and thus is useful for comparison within an implementation but not between implementations. 
  5.     * 
  6.     * The estimate may change during a single invocation of the JVM. 
  7.     * 
  8.     * @param objectToSize     the object to size 
  9.     * @return an implementation-specific approximation of the amount of storage consumed by the specified object 
  10.     * @throws java.lang.NullPointerException if the supplied Object is <code>null</code>. 
  11.     */ 

那怎樣拿到 Instrument,從而調(diào)用這個(gè)方法,一般是通過 Agent attach 到 VM上來得到,一種是Agent 實(shí)現(xiàn)premain方法,一種是agentMain方法,區(qū)別在于attach的時(shí)機(jī)。

比如你自己定義了一個(gè)Agent 的 jar

  1. import java.lang.instrument.Instrumentation; 
  2.  
  3. public class ObjectSizeFetcher { 
  4.     private static Instrumentation instrumentation; 
  5.  
  6.     public static void premain(String args, Instrumentation inst) { 
  7.         instrumentation = inst; 
  8.     } 
  9.  
  10.     public static long getObjectSize(Object o) { 
  11.         return instrumentation.getObjectSize(o); 
  12.     } 

后面咱們?cè)诖a里直接靜態(tài)調(diào)用 getObjectSize 方法就行了。

3.SA

我之前的文章(Java虛擬機(jī)的顯微鏡 Serviceability Agent)里介紹過 SA(Serviceablity Agent), 通過 SA,可以做到許多剖析 JVM 的事情。觀察對(duì)象的組成和大小當(dāng)然也不在話下。

通過SA來觀察上面例子2,效果是這樣的:

咱們能看到,整個(gè)對(duì)象先是_mark(mark word), 之后是 compressed klass(klass pointer ), 再后面是實(shí)例包含的屬性。 如果紅框所示,在 klass pointer 里面包含一個(gè) _layout_helper,顯示的就是該對(duì)象的大小。

此外,在SA里的 Console 里,可以像命令行一樣交互,也可以顯示對(duì)象的大小。

PS: 對(duì)于對(duì)象的大小,JVM在初始化分配的時(shí)候,會(huì)對(duì) field 有個(gè)「重排序」,給 field 的分配排序,從而節(jié)省空間。比如先分配byte 或者 boolean 之后,再分配 int 這些,那 byte 之后可能需要增加 3 bytes 進(jìn)行 padding,重排序可以減小空間占用。

比如有這些屬性:

  1. public class App { 
  2.     private byte a; 
  3.     private int b; 
  4.     private boolean c; 
  5.     private float d; 
  6.     private char e = 'a'
  1. OFFSET  SIZE      TYPE DESCRIPTION                               VALUE 
  2.       0     4           (object header)                           01 00 00 00 (00000001 00000000 00000000 00000000) (1) 
  3.       4     4           (object header)                           00 00 00 00 (00000000 00000000 00000000 00000000) (0) 
  4.       8     4           (object header)                           61 c1 00 f8 (01100001 11000001 00000000 11111000) (-134168223) 
  5.      12     4       int App.b                                     0 
  6.      16     4     float App.d                                     0.0 
  7.      20     2      char App.e                                     a 
  8.      22     1      byte App.a                                     0 
  9.      23     1   boolean App.c                                     false 
  10. Instance size: 24 bytes 
  11. Space losses: 0 bytes internal + 0 bytes external = 0 bytes total 

在輸出對(duì)象內(nèi)容,我們發(fā)現(xiàn),并不是按屬性的聲明順序來分配的,這樣只占用24 bytes,如果按聲明順序,那應(yīng)該先分配byte, 之后再分配 int 這樣為了對(duì)齊,會(huì)額外增加 3 個(gè) bytes的(alignment/padding gap)最后可能會(huì)占用到32bytes。

為了減少空間浪費(fèi),一般情況下,field分配的優(yōu)先依次順序是:

double > long > int > float > char > short > byte > boolean > object reference。

這里有個(gè)基本的原則是:盡可能先分配占用空間大的類型。

 

責(zé)任編輯:武曉燕 來源: Tomcat那些事兒
相關(guān)推薦

2013-02-25 14:46:49

2024-11-19 16:14:46

Java開發(fā)

2021-06-08 11:42:12

Pandas數(shù)據(jù)分析Python

2023-01-03 12:30:25

架構(gòu)CPUGPU

2021-06-06 13:10:12

FlinkPvUv

2009-06-23 14:23:00

名稱空間Java API

2011-07-08 15:11:03

JAVA

2016-10-19 13:32:31

JavaMemory

2009-09-18 12:29:55

2010-05-17 15:17:06

MySQL常用操作

2013-08-21 11:31:21

iPhone圖片方法

2010-06-03 08:55:43

LINQ

2010-02-04 16:14:56

Ubuntu QQ

2016-03-08 09:52:22

xcode插件開發(fā)

2010-01-22 14:46:25

C++語言

2010-10-26 09:23:03

Web Service

2010-04-30 16:22:07

Unix終端

2021-03-08 09:32:04

Python文件命令

2009-09-09 11:24:46

PHP實(shí)現(xiàn)MVC

2011-06-16 10:48:33

session
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

午夜av不卡| 黄色片一区二区| 日韩在线精品| 日韩三级在线免费观看| 国产在线播放观看| 国产福利片在线| 久久成人免费网站| 久久久久国色av免费观看性色| 在线看黄色的网站| 亚洲精品一区三区三区在线观看| 中文字幕日韩av资源站| 国产精品免费区二区三区观看| 日韩精品成人免费观看视频| 亚洲综合色网| 亚洲人成五月天| 中文字幕一区二区三区四| 爱啪啪综合导航| 亚洲天天做日日做天天谢日日欢| 国模精品一区二区三区| 中国a一片一级一片| 欧美激情四色| 一区二区成人av| av黄色一级片| 麻豆精品一区| 欧美一a一片一级一片| www.国产在线视频| 夜级特黄日本大片_在线| jlzzjlzz国产精品久久| 91免费视频国产| 亚洲性猛交富婆| 午夜亚洲精品| 欧美高清无遮挡| sm捆绑调教视频| 女优一区二区三区| 亚洲成人精品视频| 久久久精品视频国产| 最新欧美电影| 精品久久久久久| www.好吊操| 永久免费网站在线| 国产精品国产自产拍高清av | 天天做天天爱夜夜爽| 天天射天天综合网| 主播福利视频一区| 日韩毛片无码永久免费看| 国语一区二区三区| 欧美成人在线直播| 一级片免费在线观看视频| 久久麻豆视频| 欧美日韩精品欧美日韩精品一| 日本熟妇人妻xxxxx| 性感女国产在线| 精品久久久在线观看| 久久久亚洲精品无码| 欧美78videosex性欧美| 亚洲一区电影777| 国产自产在线视频| av男人的天堂在线观看| 亚洲国产精品久久艾草纯爱| 国产美女作爱全过程免费视频| 亚洲制服国产| 亚洲综合色视频| bt天堂新版中文在线地址| 伊人手机在线| 亚洲韩国精品一区| 国产极品尤物在线| 天堂а√在线最新版中文在线| 婷婷国产v国产偷v亚洲高清| 草草久久久无码国产专区| 午夜av不卡| 色哦色哦哦色天天综合| 亚洲第一中文av| 高清亚洲高清| 日韩欧美另类在线| 日本性生活一级片| 日韩最新在线| 在线观看日韩视频| 玖玖爱这里只有精品| 午夜精品久久| 性色av香蕉一区二区| 伊人手机在线视频| 日本女优在线视频一区二区 | 一区二区网站| 日韩电影中文字幕av| 亚洲综合色一区| 99九九热只有国产精品| 欧美精品在线观看| 奇米影视第四色777| 亚洲欧美日韩综合国产aⅴ| 国产精品xxxxx| a网站在线观看| 99久久综合国产精品| 亚洲不卡中文字幕| 污污网站在线观看| 色综合久久综合网97色综合| 日韩av卡一卡二| 国产区精品视频在线观看豆花| 亚洲欧美在线播放| 亚洲综合久久av一区二区三区| 欧美 日韩 国产 一区| 98精品国产高清在线xxxx天堂| 波多野结衣视频在线观看| 国产一二精品视频| 久久亚洲高清| 羞羞网站在线看| 一本久道久久综合中文字幕| 一起草最新网址| 深爱激情综合网| 欧美黄色www| 在线播放亚洲精品| 99久久国产综合精品麻豆| 亚洲一区二区在线观| 国产99在线| 91精品国产91久久综合桃花 | 亚洲视频一二三区| 国产精品97在线| 综合中文字幕| 日韩中文字幕精品| 亚洲天堂一区在线| 高清shemale亚洲人妖| 日本一区二区三区四区在线观看| 污的网站在线观看| 欧美日韩高清一区二区不卡| 公侵犯人妻一区二区三区| 欧美日本国产| 91亚洲精品在线| 天天综合视频在线观看| 日本道色综合久久| 超碰男人的天堂| 韩日视频一区| av在线不卡一区| 免费**毛片在线| 欧美色成人综合| 国产肥白大熟妇bbbb视频| 亚洲国产高清一区二区三区| 91精品免费| 污污在线观看| 精品国产一区二区亚洲人成毛片| 日本高清一二三区| 精品一区二区av| 精品一区二区成人免费视频| 欧美在线se| 最近中文字幕mv在线一区二区三区四区| 国产微拍精品一区| 91片黄在线观看| 女人和拘做爰正片视频| 日韩欧美影院| 欧美专区中文字幕| 黄色在线免费观看大全| 欧美在线观看视频在线| 国产无遮挡在线观看| 久久综合亚州| 四虎永久国产精品| www.成人影院| 一区二区亚洲欧洲国产日韩| 免费看日批视频| 久久久久久9999| wwwwww欧美| 蜜桃在线一区| 欧美大片在线影院| 涩涩视频免费看| 亚洲成人黄色影院| 久久丫精品国产亚洲av不卡| 亚洲免费高清| 国产日韩精品一区观看| 永久免费毛片在线播放| 日韩精品久久久久久久玫瑰园| 国产精品.www| av电影一区二区| 鲁一鲁一鲁一鲁一色| 日韩三级av| 国产精品视频久久久| 思思99re6国产在线播放| 欧美喷水一区二区| 婷婷激情四射网| 国产成人自拍网| 国产极品尤物在线| 红桃视频在线观看一区二区| 国产精品久久久久久久av大片| 国产黄色片在线播放| 日韩欧美aⅴ综合网站发布| 久久久久亚洲av无码a片| 蜜桃视频在线一区| 日本xxx免费| 超碰在线成人| 97在线视频精品| 岛国视频免费在线观看| 欧美精品18+| 久久久久久久久久91| 91老司机福利 在线| 久久久久久久少妇| 一区二区三区四区日韩| 国产精品久久7| 粉嫩一区二区三区| 久久精品国产一区二区电影| 四虎免费在线观看| 欧洲在线/亚洲| 中文字幕亚洲欧美日韩| 91免费小视频| 色婷婷综合网站| 亚洲激情网站| 一区二区不卡在线| 国产 日韩 欧美 综合 一区| 国产成人aa精品一区在线播放| 麻豆传媒在线完整视频| 亚洲电影第1页| 亚洲天堂手机在线| 亚洲成av人片www| 免费黄色在线网址| 91一区在线观看| 红桃视频 国产| 国产一区二区你懂的| 在线免费观看成人网| 五月亚洲婷婷| 国产精品久久久久福利| 日韩三级电影视频| 在线观看日韩av| 日韩一级片免费在线观看| 欧美一二三区精品| 免费观看日批视频| 亚洲影视资源网| 人妻无码一区二区三区免费| 成人激情av网| 欧美美女一级片| 欧美专区一区二区三区| 欧美一区二区视频在线播放| 欧美码中文字幕在线| 九色91在线视频| www.欧美| 国产精品视频xxxx| 亚洲欧美韩国| 日韩av免费在线看| 久久免费电影| 久久久极品av| 91福利在线视频| 在线视频欧美日韩| 日本高清视频免费观看| 日韩精品专区在线影院观看| 一级黄色小视频| 亚洲成a人片综合在线| 久久久久久天堂| 亚洲欧美另类小说| 999福利视频| 中文字幕免费不卡在线| 91在线无精精品白丝| 2017欧美狠狠色| 亚洲制服丝袜在线播放| 成人三级伦理片| 人妻丰满熟妇av无码久久洗澡| 国产成人精品一区二| aaaaaaaa毛片| 国产一区二区三区免费看| 欧美特级aaa| 麻豆精品视频在线观看视频| 天天干天天综合| 日本视频免费一区| 北条麻妃视频在线| 视频一区在线播放| 玩弄japan白嫩少妇hd| 亚洲综合精品四区| 福利视频一区二区三区四区| 国产精品三上| 国产一区亚洲二区三区| 久久久久欧美精品| 无码人妻丰满熟妇区毛片| 日韩电影免费在线观看网站| 美女网站视频黄色| 激情国产一区二区| 天天综合天天添夜夜添狠狠添| 国产一区高清在线| 国产老头和老头xxxx×| 丁香激情综合五月| 国产精品福利导航| 国产三区在线成人av| 蜜桃av免费观看| 亚洲欧美激情小说另类| 欧美日韩大片在线观看| 色综合天天综合网国产成人综合天 | 日韩三级av| 日韩欧美在线电影| 久久看人人摘| 蜜臀av性久久久久蜜臀av| 日韩一级欧洲| 亚洲五月天综合| 精品在线播放午夜| 国产黑丝在线视频| 26uuu国产电影一区二区| 蜜桃久久精品成人无码av| 中文字幕一区二区三区色视频| 日本在线一级片| 夜夜精品浪潮av一区二区三区| 日本天堂网在线| 欧美日韩免费观看一区二区三区| 一区二区三区免费在线| 欧美sm极限捆绑bd| 77导航福利在线| 久99久在线视频| 成人福利av| 亚洲va电影大全| 精品在线观看入口| 日本一区二区三区四区五区六区| 亚洲二区在线| 国产精欧美一区二区三区白种人| 国产不卡视频在线观看| 亚洲第一成人网站| 亚洲激情六月丁香| 中文字幕av影视| 亚洲大尺度美女在线| 91se在线| 欧美亚洲国产视频| 中文字幕亚洲在线观看| 视频一区二区在线观看| 综合精品一区| 一二三四视频社区在线| 国产乱码精品一品二品| 亚洲久久久久久久| 亚洲最色的网站| 国产乱码一区二区| 亚洲欧洲第一视频| 免费看电影在线| 国产一区二区色| 国产精品午夜一区二区三区| 91免费国产精品| 免费久久精品视频| 色无极影院亚洲| 亚洲电影在线免费观看| 伊人久久久久久久久久久久| 欧美成人乱码一区二区三区| 99青草视频在线播放视| 91地址最新发布| 极品束缚调教一区二区网站 | 91精品国产自产在线观看永久∴| 91专区在线观看| av电影在线观看一区| 久久久久久久久久久久久久免费看| 欧美日韩国产一二三| 免费在线黄色影片| 欧美一级片久久久久久久| 国产亚洲成av人片在线观黄桃| 中文字幕在线乱| 国产中文字幕精品| av免费播放网站| 在线免费亚洲电影| 全色精品综合影院| 欧美一级黑人aaaaaaa做受| 国产精品对白久久久久粗| 成人在线免费观看网址| 黑人巨大精品欧美一区| 蜜桃av免费观看| 欧美性色黄大片手机版| 国产在线一二| 国产精品视频网| 四季av一区二区三区免费观看| 五月天婷婷激情视频| 中日韩免费视频中文字幕| 波多野结衣毛片| 在线观看久久av| 我爱我色成人网| 日韩电影天堂视频一区二区| 天堂一区二区在线| 黄色在线免费播放| 亚洲精品成人天堂一二三| 国产精品一区二区黑人巨大| 久久视频在线看| **爰片久久毛片| 欧美视频在线播放一区| 久久久久久久久久久久久夜| 日韩精品手机在线| 国产一级揄自揄精品视频| 精品成人免费一区二区在线播放| 日韩三级电影免费观看| 国产精品一区二区在线观看不卡| 欧洲猛交xxxx乱大交3| 精品少妇一区二区三区日产乱码| 亚洲性色av| 亚洲精品视频一二三| 国产一区二区三区久久久| 亚洲精品www久久久久久| 亚洲天堂男人的天堂| 欧美黄页免费| 超碰10000| heyzo一本久久综合| 久久久久久无码精品大片| 日韩小视频在线| 亚洲精品aⅴ| 久久久久久久久久久视频| 1000精品久久久久久久久| 精品国产伦一区二区三| 久久久亚洲国产| 伊人精品一区| 中文字幕一二三| 欧美性猛交xxx| 日本一级在线观看| 成人高清视频观看www| 精品白丝av| 国产18无套直看片| 欧美精品一区二区三区四区| 日韩国产网站| 日韩一级特黄毛片| 国产精品久久久一区麻豆最新章节|