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

硬核 JVM 壓縮指針詳解

開發 前端
當今,Java已經成為了世界上最流行的編程語言之一。在Java的生態系統中,JVM(Java虛擬機)是至關重要的組成部分。JVM 是 Java 程序運行的環境,它負責將 Java 字節碼翻譯成機器碼,并執行程序。在 JVM 中,內存使用以及分配一直是個重要的問題。

一、前言

當今,Java已經成為了世界上最流行的編程語言之一。在Java的生態系統中,JVM(Java虛擬機)是至關重要的組成部分。JVM 是 Java 程序運行的環境,它負責將 Java 字節碼翻譯成機器碼,并執行程序。在 JVM 中,內存使用以及分配一直是個重要的問題。

在 32 位系統中,一枚指針占用 4 字節,隨著 64 位系統的逐漸普及,指針的大小也增長到了 8 個字節,JVM 為了降低內存占用,使用了指針壓縮技術來降低內存的占用,接下來,我們將自頂向下的深入探討 JVM 指針壓縮的工作原理。

二、理解壓縮指針

為什么 JVM 需要壓縮指針?

在計算機中,指針的大小通常取決于計算機的字長。例如,在 32 位系統一字長為 4 字節,即一枚指針的占用內存空間大小為 4 字節。隨著計算機性能的提升,內存價格的降低,64 位系統也開始逐漸普及。而在 64 位系統中,字長和指針也由原來的增長到 8 個字節,JVM 為了降低內存占用,開發了指針壓縮算法,即:在 64 位系統中,指針依然使用 4 字節存儲。

數據指針與字長的關系

字長是指一臺計算機中處理器可以一次性處理的二進制數字的位數。它通常是 8 位、16 位、32 位或 64 位,這意味著在一次處理中可以處理 8 個、16 個、32 個或 64 個二進制數字。字長越長,計算機處理數據的能力越強,但同時也會增加計算機的成本和復雜度。

CPU 的上下文是寄存器,CPU 運算的本質就是不斷從 CS IP 寄存器中取指令然后執行,CPU 運算所需的數據也是放在寄存器里,CPU 一次性處理的數據大小就是寄存器的大小。

圖片圖片

上圖左側是一段簡單的 C 語言代碼片段,右側是該代碼的匯編代碼(即 CPU 執行這段代碼的實際機器碼的解釋)。

圖片圖片

CPU 執行計算時,需要先將數據讀取到寄存器,存取內存中的變量時,是直接操作變量所在地址及偏移量,而變量所在地址(即指針)也是存儲在寄存器中的,因此寄存器大小直接決定了 CPU 所能訪問內存的地址空間。因此,在 32 位系統中,寄存器的最大長度是 32 bit(即 4 個字節),因此最大支持訪問 4GB 的內存空間,在 64 位系統中,寄存器最大 64 bit(即 8 字節)。而數據的指針由于需要指向整個內存空間,因此也就是 8 字節。8 字節大小的指針所能允許訪問的最大地址為:16EB(16384PB=16777216TB=17179869184GB)的內存空間。

所以字長其實就等于寄存器的大小,指針為了能指向整個內存空間,通常也等于字長大小。

理解內存對齊

這是一段簡單的 C 語言代碼:

#include <stdio.h>
struct Test {
    int a;
    char b;
    int c;
} test;


int main(void) {
    test.a = 1;
    test.b = 2;
    test.c = 3;
    printf("struct Test size: %d\n", sizeof(test));
    return 0;
}

在 C 語言中,結構體數據是連續的,Int 為 4 字節,Char 為 1 字節,所以 Struct Test 為 9 字節。

但是實際輸出結果卻是 12 字節:

圖片圖片

圖片圖片

通過匯編指令可以分析出,結構體 Test 的內存布局如下:

圖片圖片

可以看出,在 Char 類型數據后面被空出了 3 個字節的位置,原因如下:

計算機只能從 4 字節的整數倍開始尋址,如果在 Char b 后不進行空數據填充,則編譯后的指令會很長,極大的降低 CPU 執行效率:

圖片圖片

所以在 JVM 中,對象的存儲也是如此設計:

class Test {
    int a;
    char b;
    int c;
}

對象布局如下:

圖片圖片

可以看出 Char b 數據后空出了 3 個字節的內存空間作為 Padding, 以供后面的對象進行內存對齊。

為什么計算機只能從特定地址讀取數據?

計算機之所以只能從特定地址開始讀取數據,是由于在內存中存儲的物理位置導致的。

圖片圖片

這是一根內存條,上面有 4 個內存顆粒(Chip),在我們聲明一個變量 Int a = 1;時,CPU 想一次從內存中同時取出 32 位數據,為了發揮并行傳輸數據的能力,同時與 4 個內存顆粒進行交互肯定比一個內存交互要快,因此數據 a 分別在 4 個顆粒中存儲 0x01 0x00 0x00 0x00。

圖片圖片

每個內存顆粒 Chip 中有 8 個 bank,每次同時從 8 個 bank 中取一位數據。

圖片圖片

為了盡可能節約地址總線位數,變量 a 的每字節數據在各 Chip 中相對位置是相同的,每字節中的每位數據在 bank 中的行數和列數也是相同的。

總結,為了能利用有限的地址總線,盡量快速尋址到盡可能多的數據,在設計計算機時取了巧,CPU 同時只能訪問 32 個相對地址相同的數據位,表現上就是只能從被 4 字節整除的地址開始尋址。

理解指針壓縮

在 64 位系統中,JVM 為了降低 8 字節的指針對內存的占用,使用了指針壓縮的技術,將 8 字節的指針壓縮為 4 字節。

前面說到,JVM 出于性能考慮,對數據做了對齊到 4 字節的處理,因此指針的值末尾 5 bit 始終為 0B11111。JVM 的指針壓縮算法就是,把本來應該使用 8 個字節的指針,直接改為 4 字節的進行代替,那么 4 字節的指針實際最高可以表示 32G 的內存空間。這也就是為什么當物理內存超過 32G 時,需要關閉 JVM 指針壓縮。

三、實戰解碼指針

工具介紹

HSDB

HSDB(HotSpot Debugger),是一個用于 HotSpot 虛擬機的調試工具。它提供了一種可視化的方式來查看和調試 Java 應用程序在 JVM 上的運行情況。HSDB 可以用于分析線程、堆、類、對象、方法、編譯器和代碼緩存等方面的信息。它還可以用于監視虛擬機性能和調試垃圾回收器。HSDB 是一個非常強大的工具,可以幫助開發人員更好地理解和優化 Java 應用程序的性能。

官方提供的 HSDB 命令行不是很好用,比如命令補全、命令提示、光標移動、命令歷史記錄等都不存在,所以本次分享講利用 PerfMa 開源的 XPocket 工具,配合 HSDB 插件來操作。

XPocket 工具

XPocket 是 PerfMa 為解決性能問題而生的開源的插件容器,它是性能領域的樂高,將定位或者解決各種性能問題的常見的 Linux 命令,JDK 工具,知名性能工具等適配成各種 XPocket 插件,并讓它們可以相互聯動一鍵解決特定的性能問題。目前 XPocket 插件生態已經實現了 HSDB、JDB、JConsole、Perf、Arthas 等多個優秀的開源性能工具的插件化集成。

快速開始

下載 XPocket,然后解壓運行。

wget https://a.perfma.net/xpocket/download/XPocket.tar.gz
tar -xvf  XPocket.tar.gz
sh xpocket/xpocket.sh

圖片圖片

# 切換至 HSDB 插件空間
XPocket [system] > use jhsdb@JDK
# 啟動 clhsdb 命令行
XPocket [jhsdb] > clhsdb
# attach 到目標進程
XPocket [jhsdb] > attach 29516

利用 HSDB 查看 JVM 對象內存布局

準備工作

編寫一個測試類,啟動 JVM 進程。

@Data
@Component
public class BeanTest {
    private long l = 1;
    private BeanTest pointer = this;
    private int i = 2;
    private boolean b = false;
    private char c = 3;
    private BeanTest[] arr = {this};
}

想要查看對象的內存布局,首先要找到這個對象所在位置,JVM 的對象分布在堆上,可以通過 Universe 命令確定堆內的相關區域對應位置。

# 執行以下命令,切換至 HSDB 插件
XPocket [system] > use jhsdb@JDK
# 啟動 HSDB 插件
XPocket [jhsdb] > clhsdb
# 通過 jps 命令,查詢 JVM 進程的 pid,attach 到這個 JVM 進程
XPocket [jhsdb] > attach 29516
# 執行 universe 命令,查看堆內存分布情況
XPocket [jhsdb : 29516] > universe

內存分布情況如下:

圖片圖片

括號內的第一個值為內存起始位置,第二個值為已使用的位置,第三個值為該區域最大地址。以上圖 eden 區為例:

eden 區空間范圍為:0x00000000fab00000 ~ 0x00000000fef00000,相減得到 71303168,68MB。

eden 區已使用空間為:0x00000000fab00000 ~ 0x00000000fafd2a60,相減得到 5057120,4.82M。

找到我們定義的對象

我們要找的對象是受 Spring 管理的,所以很容易判斷,通常情況下都會在老年代里。那么我們直接在老年代內檢索這個對象即可。由于 Oop(簡單對象指針)是所有 Java 對象的基類,所以我們可以利用 Scanoops 命令來檢索這個對象。

XPocket [jhsdb : 29516] > scanoops 0x00000000f0000000 0x00000000f1265ca8 com.poizon.robot.test.BeanTest

檢索到的結果如下:

圖片圖片

0x00000000f1060898 是這個對象實例的內存地址,也就是該對象的指針值。

查看對象內存布局

然后我們就可以通過 Inspect 命令來查看該對象的內存布局了。

XPocket [jhsdb : 29516] > inspect 0x00000000f1060898

得到結果如下:

圖片圖片

注意:這里顯示的數據是按照類變量順序來展示的,并非實際結構

由圖返回結果可以看出, BeanTest 對象大小為 40 字節,當前系統為 X64 架構,一個字長為 8 字節,即此對象占用 5 個字長。執行 Mem 命令,獲取整個對象(5 個字長)的數據。

XPocket [jhsdb : 29516] > mem 0x00000000f1060898 5

得到結果如下:

圖片圖片

左側為當前字長的數據起始地址,右側為數據值。

我們再來復習一遍對象頭(Oop數據),前 8 位是 Mark Word,后 8 位中,如果開啟了指針壓縮,則前 4 位為當前實例所在類的指針,后 4 位填充當前對象 <=4 字節的數據(Gap Padding);如果未開啟指針壓縮,則該 8 位為當前實例對所在類的指針。

查找類的指針

我們這次啟動的進程開啟了指針壓縮,把第二個字長的數據(0x000000022007a2bb)按 4 字節拆成兩部分:

0x00000002:BeanTest 對象中只有一個值為 2 ,所以該值是Int i = 2;

0x2007a2bb(類指針):前面說過,指針壓縮的原理只是簡單的把 8 字節指針削減為 4 字節,因為后 5 位始終為 0,因此若要還原壓縮后的指針實際內存地址,直接把指針值 * 8即可。

BeanTest 類所在地址為:0x2007a2bb * 8 = 0x1003D15D8

執行 Inspect 命令,查看 BeanTest 類結構。

XPocket [jhsdb : 29516] > inspect 0x1003D15D8

結果如下:

圖片圖片

證實

BeanTest 在 JVM 對象為 c++ 的 InstanceKlass 實例,可以看出 _name 屬性為 Symbol,接下來查看 InstanceKlass _name 屬性,證實當前為 BeanTest 類的實例,執行 Symbol 命令查看 _name 的值:

XPocket [jhsdb : 29516] > symbol 0x00007f1838abb740

圖片圖片

證實 0x1003D15D8 所在的內存地址,即是 com.poizon.robot.test.BeanTest 的 Class 對象。

四、總結

在我們日常開發中遇到的一點小小的,看似不起眼的奇怪的規范,深挖之下往往能夠牽扯出一大串知識體系,保持好奇心刨根問底同樣也是很重要學習方法。有興趣的同學也可以自己嘗試找一下示例類中其他屬性所對應的 Class 指針,說不定還可以對網上的一些文章做一次勘誤呢~

責任編輯:武曉燕 來源: 得物技術
相關推薦

2024-07-26 10:23:52

2025-06-23 10:13:00

FutureTask線程開發

2023-10-20 13:12:10

Btrfs壓縮

2021-12-21 15:31:10

C++語言指針

2024-11-25 16:29:48

2015-12-24 09:48:40

JavaScriptthis指針深

2010-07-16 16:40:48

Perl引用

2009-12-18 15:24:52

2010-09-27 13:48:41

JVM內存結構

2010-09-26 11:00:48

JVM參數配置

2009-07-17 17:11:47

Ruby生成JVM代碼

2010-09-25 12:38:40

JVM內存模型

2010-01-04 09:27:31

Linux壓縮解壓縮命令詳解

2023-08-02 08:38:27

JVM加載機制

2018-11-01 10:34:37

JVM內存配置

2010-09-17 15:57:23

TomcatJVM

2009-07-08 10:41:54

JDK JRE JVM

2010-09-26 08:50:11

JVM工作原理

2009-07-09 14:01:22

JVM工作原理

2010-09-26 13:23:13

JVM內存管理機制
點贊
收藏

51CTO技術棧公眾號

成人网页在线观看| 久久精品福利视频| 国外成人福利视频| 欧美成人乱码一二三四区免费| 色婷婷精品大在线视频| missav|免费高清av在线看| 欧美 亚洲 视频| 亚洲成年人影院| 伊人久久视频| 成人sese在线| 国产精品国产一区二区| 亚洲国产高清不卡| 美女网站视频一区| 这里有精品可以观看| 精品国产_亚洲人成在线| 亚洲老妇xxxxxx| www.26天天久久天堂| 四虎地址8848| 7799精品视频天天看| jizz性欧美23| 精品视频一区三区九区| 野外做受又硬又粗又大视频√| 日韩偷拍自拍| 国产一区二区三区免费| 国产精品6699| 日韩伦人妻无码| 在线成人激情| 最新国产精品拍自在线播放| 捆绑裸体绳奴bdsm亚洲| 日韩大陆av| 日本久久一区二区| av成人黄色| 国产高清在线看| 无码人妻久久一区二区三区蜜桃| 日韩中文字幕在线免费观看| 久久精品人人做人人综合| 日韩视频在线直播| 国产成人小视频| 国产免费亚洲高清| 国产精品免费精品一区| 欧美大片专区| 麻豆乱码国产一区二区三区 | 成人黄色av网| www.日韩一区| 国产精品婷婷| 高清欧美性猛交xxxx| 国产suv一区二区三区| 日本a级不卡| 一区二区三区日韩在线| www.av天天| 亚洲自拍电影| 国产婷婷色综合av蜜臀av| 亚洲美女在线播放| 九色丨蝌蚪丨成人| 亚洲第五色综合网| 亚洲老头老太hd| 日本aⅴ免费视频一区二区三区| 国内在线视频| 男人的午夜天堂| 久久综合久久综合这里只有精品| 亚洲第一网站免费视频| 成人夜色视频网站在线观看| 成人动漫一区二区| 欧美高清电影在线看| 久久久久久久麻豆| 91精品国产视频| 久久视频在线播放| 91成人福利视频| 欧美日韩国产欧| 性欧美长视频免费观看不卡| 国产成人在线播放视频| 在线亚洲自拍| 国产成人一区二| 又色又爽又黄无遮挡的免费视频| 美女mm1313爽爽久久久蜜臀| 国产欧美日韩综合精品| 国产视频一区二区三| 国产馆精品极品| 久久久久久尹人网香蕉| 日本一区二区三区四区高清视频 | 日本免费一区二区三区| av电影在线播放高清免费观看| 国产精品色呦呦| 美国av在线播放| 色在线视频网| 色呦呦网站一区| 亚洲另类第一页| 亚洲网一区二区三区| 国产网站欧美日韩免费精品在线观看 | 国产成人亚洲综合a∨猫咪| 国产精品一国产精品最新章节| 天天干天天爽天天操| 欧美激情一区二区三区在线| 熟妇熟女乱妇乱女网站| 国产精品原创| 欧美日韩国产综合视频在线观看 | 国产精品一区2区| 亚洲男女一区二区三区| 欧美日韩精品免费观看| 尤物在线视频| 亚洲国产cao| 亚洲欧美另类动漫| 久久久久亚洲精品中文字幕| 亚洲精品av在线| 久久精品一区二区三区四区五区| 激情欧美丁香| 国产日韩av在线| 无码精品人妻一区二区| 亚洲色图视频网| 欧美牲交a欧美牲交aⅴ免费真| 成人乱码手机视频| 亚洲免费一级电影| 青春草免费视频| 奇米色777欧美一区二区| 国产精品theporn88| av大片在线播放| 一区二区日韩| 国产精品久久久久久久免费软件| 久久久久久久久国产精品| 亚洲精品国产精品国自产网站按摩| 国产一区二区免费看| 日韩精品不卡| 捆绑调教日本一区二区三区| 91精品黄色片免费大全| 97人妻精品一区二区免费| 欧美网站在线| 成人免费福利在线| jzzjzzjzz亚洲成熟少妇| 精品久久久久久中文字幕| 久久黄色一级视频| 婷婷综合激情| 国产伊人精品在线| av在线播放网| 色老头久久综合| 亚洲成人av免费在线观看| 激情久久久久久久| 成人永久免费| 性网站在线观看| 91精品国产欧美一区二区成人| 国产美女网站视频| 日本不卡视频在线| 色吧亚洲视频| av免费在线一区| 伊人精品在线观看| 亚洲无码精品一区二区三区| 久久蜜桃一区二区| 凹凸国产熟女精品视频| 国产成人一二片| 久久免费福利视频| 男人天堂av网| 午夜在线成人av| 亚洲福中文字幕伊人影院| 91丨porny丨中文| 国产福利91精品一区| 久久超碰97人人做人人爱| 国产一区导航| 99精品久久久| 伊人蜜桃色噜噜激情综合| 97精品国产一区二区三区| 欧美美乳视频| 台湾色综合娱乐中文网| 高潮久久久久久久久久久久久久 | 日韩一区二区免费看| jiujiure精品视频播放| 日本一区二区三区中文字幕| 成人无遮挡免费网站视频在线观看| 99re这里只有精品在线| 手机在线看片日韩| 日韩av黄色网址| 91专区在线观看| 国产精品333| 久久福利小视频| 日韩精品麻豆| 久久亚洲精品小早川怜子66| 99在线观看免费| 亚洲国产日韩a在线播放| 国产精品手机在线观看| 久久高清国产| 亚洲免费不卡| 成人交换视频| 88久久精品| 丁香一区二区| 欧美1区2区3区4区| 欧美韩日一区| 三叶草欧洲码在线| 91女神在线观看| 深夜视频在线观看| 国产奶水涨喷在线播放| 免费成人高清在线视频| 日韩在线中文视频| 成人免费一级视频| 色av成人天堂桃色av| 日韩激情综合网| 99re视频精品| 亚洲欧美手机在线| 午夜影院日韩| 日韩视频在线观看视频| 欧美三级电影在线| 国产免费一区二区三区在线能观看 | 欧美羞羞视频| 欧美日韩国产成人在线观看| 看电影就来5566av视频在线播放| 9.1在线观看免费| 久久久久久久无码| 天天操夜夜操av| 日韩精品国产一区二区| 五月天婷婷在线播放| 久久久久免费精品| 不卡精品视频| 欧美在线观看网址综合| h片在线免费| 在线观看国产欧美| 免费a级片在线观看| 欧美三级视频在线播放| 成人免费区一区二区三区| 国产精品夫妻自拍| 555夜色666亚洲国产免| 一色桃子一区二区| 欧美在线视频网站| 九色91在线视频| 精品无码一区二区三区爱欲| 中国黄色片免费看| 少妇高潮在线观看| 国产一区二区三区四区视频| 在线观看免费高清完整| 免费成人高清在线视频| 俺要去色综合狠狠| 六月婷婷色综合| 最新久久zyz资源站| 在线观看网站黄不卡| 欧美二区在线播放| 欧美激情一区二区视频| 久久精品人人做人人爽| 亚洲片在线观看| 国产欧美在线播放| 国产不卡的av| 在线视频精品一| 国产精品99无码一区二区| 国产精品免费视频网站| av黄色一级片| 寂寞少妇一区二区三区| 久久久精品三级| 99精品在免费线中文字幕网站一区 | 韩国三级大全久久网站| 日本欧美中文字幕| 狠狠操一区二区三区| 高清亚洲成在人网站天堂| 久久久久黄久久免费漫画| 欧美日韩aaaa| 爱情岛论坛亚洲品质自拍视频网站| 久精品免费视频| 91九色美女在线视频| 隔壁老王国产在线精品| 96av在线| 在线视频免费一区二区| 深夜视频在线免费| 日韩电影第一页| 清纯唯美亚洲色图| 一本色道久久综合狠狠躁篇的优点| 毛片免费在线| 在线观看欧美日韩| 中文字幕在线视频区| 久久精品国产2020观看福利| 美女免费久久| 欧美高清视频一区二区| 午夜羞羞小视频在线观看| 色综合男人天堂| 毛片在线网址| 日本午夜精品理论片a级appf发布| 色婷婷综合久久久中字幕精品久久| 国产精品黄色av| 视频91a欧美| 不卡视频一区| 亚洲+变态+欧美+另类+精品| 欧美一区二区在线视频观看| 成人激情视频| 成人在线免费高清视频| 99国产精品私拍| 污污视频网站免费观看| 激情欧美日韩一区二区| www.啪啪.com| 欧美国产日本韩| 国模无码国产精品视频| 欧美午夜美女看片| 中文字幕视频二区| 日韩欧美国产午夜精品| 黄上黄在线观看| 欧美成人免费观看| 91久久综合| 国产91精品入口17c| 哺乳一区二区三区中文视频| 免费精品视频一区| 国产大片一区| 国产一级爱c视频| 日本一区中文字幕| 自拍偷拍激情视频| 久久久www免费人成精品| 亚洲视频一区在线播放| 国产精品日韩| 一级在线免费视频| 午夜av不卡| 国产成人福利视频| 亚洲精品a区| 日韩美女一区| 激情成人综合| 日韩一级免费片| 99久久免费精品高清特色大片| 手机毛片在线观看| 亚洲av网址在线| www.av精品| 国产探花在线视频| 色综合久久天天| 风流老熟女一区二区三区| 国产一区二区三区日韩欧美| 男插女视频久久久| 91久久精品久久国产性色也91| 牛牛视频精品一区二区不卡| xxxxxx在线观看| 蜜臀99久久精品久久久久久软件| 国模私拍在线观看| 亚洲激情图片一区| 怡红院男人的天堂| 亚洲毛片在线免费观看| 久草在线视频福利| 亚洲一区二区三区久久| 欧美中文字幕一区二区| www.四虎成人| av中文字幕不卡| 久久久久无码国产精品不卡| 777亚洲妇女| 国产黄在线观看| 欧洲日韩成人av| 欧美日韩一区二区三区不卡视频| 国产专区在线视频| 国产资源在线一区| 人人艹在线视频| 欧美图片一区二区三区| 国产高清视频在线播放| 日本一区二区不卡| 亚洲成人黄色| 欧美成人三级电影在线| 国产高清视频网站| 青青草成人在线观看| 中文字幕一区二区人妻在线不卡| 午夜精品福利一区二区三区蜜桃| 亚洲成人中文字幕在线| 美女福利视频一区| 亚洲精品伊人| 亚洲一区二区三区毛片| 日韩黄色免费观看| 久久久久亚洲精品中文字幕| 一区二区三区欧美亚洲| 国产精品 日韩| 波多野结衣午夜| 亚洲美女视频| 亚洲精品91美女久久久久久久| 男人操女人免费| 免费在线观看av| 成人av免费在线| 国产精品老牛影院在线观看| 波多野结衣家庭教师| 日韩av网站在线免费观看| 欧美色精品在线视频| 日本欧美视频在线观看| h网站在线免费观看| 91污在线观看| 国产精品对白刺激久久久| 日韩激情在线播放| 日韩激情在线| 亚洲社区在线观看| 中文字幕一二三区| 免费在线观看的电影网站| 国产高清不卡一区| 97国产精品久久| 侵犯稚嫩小箩莉h文系列小说| 久久av最新网址| 欧美性天天影院| 国产精品.xx视频.xxtv| 伊人久久大香线蕉成人综合网| 精品亚洲成av人在线观看| 欧美日韩免费做爰视频| 亚洲欧美在线x视频| 日本精品久久| 国产精品裸体瑜伽视频| 国产欧美日韩另类一区| 国产肥老妇视频| 91国产中文字幕| 日本午夜一区| 茄子视频成人免费观看| 日本在线观看高清完整版| 亚洲天堂网中文字| 欧美a级黄色大片| 91蜜桃在线视频| 亚洲国产精品综合小说图片区| 亚洲欧美久久234| 91超碰在线| 亚洲精品综合在线| 国内少妇毛片视频| 激情综合婷婷| 日韩欧美精品在线视频|