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

【死磕JVM】一道面試題引發的“棧幀”!!!

云計算 虛擬化
通過朋友面試遇到的面試題,今天就這個問題給大家詳細介紹一下關于運行時數據在內存時候的知識點。

[[387780]]

前言

最近小農的朋友——小勇在找工作,開年來金三銀四,都想跳一跳,找個踏(gao)實(xin)點的工作,這不小勇也去面試了,不得不說,現在面試,各種底層各種原理,層出不窮,小勇就遇上了這么一道面試題,因為沒有回答好,面試被PASS,讓他備受打擊,作為大(lao)哥(si)哥(ji)的我,肯定要安慰一下,到底是什么樣的面試題,讓小勇又一次夭折在面試的路上,好奇怪為什么要說又?簡直讓人喜極而泣,哈哈哈,言歸正傳,我們一起來看一下!

話說小勇正襟危坐在面試官面前,這已經是小勇的第五次面試了,前幾次都是石沉大海,讓小勇有點著急了,但是小勇這一次可是有備而來,之前面試不會的問題,大部分都狠狠的補習了一下,想來這一次問題應該不大。

前面基礎問題小勇都回答的有模有樣的,面試官一看,基礎還算可以,問一點有深度的吧!

面試官:我看你簡歷上寫的熟悉JVM,我給你下面一個題目,先來講一講a = a ++; 和a = ++a; 的運行結果各是多少?

  1. public class Test1 { 
  2.    public static void main(String[] args) { 
  3.        int a = 88; 
  4.        a = a++; 
  5. //       a = ++a; 
  6.        System.out.println(a); 
  7.   } 

小勇心想:這不是小菜一碟嗎,這我能不知道?于是小勇輕蔑一笑說:a = a++; 輸出結果是 88 ,a = ++a; 是 9心想我還以為多有難度呢,就這?這種題目給我再來一個吧!

面試官:無動于衷,面無表情的說道,為什么結果是這樣的,你知道嗎?

小勇:還真來,提高難度了,小樣有點東西啊,還好準備了,不然今天就在你這道題上坑住了。a++ 是先計算 a 在++,在分號結束的才會做a++運算,所以當我們做賦值操作的時候a++ 還是 88,所以賦值給a的時候也是88,只有當分號結束了a++才會是9++a 是 先計算 ++a ,不管是否在分號結束,這個時候的值就已經是 9 了,所以賦值的時候,a就變成了9,輸出結果也就是9了這下沒話說了吧!

面試官摸了一下下巴,緩緩說到:這個操作在JVM內存里面是怎樣運行的?

小勇:怎么運行的,這個不是底層原理了嗎?劇本不是這么發展的,這塊沒有了解過。。。。小勇:支支吾吾說道,這個沒有了解過,不太清楚底層的實現

面試官輕蔑一笑說:行,今天面試就先到這里了,有什么事情,人事會通知你的!

小勇:!$%@#&*

不懂就學

聽到上面小勇所講的東西之后,大概了解到,面試官應該是要考他關于運行時數據在內存時候的知識點,不懂就學,遇到事情不要慌,想要真正理解上面的面試題的精髓,我們要做一些前置知識的點綴,首先我們先來看看下面一張圖:類生命周期:


上圖中首先將.class 文件讀取到內存,存放在方法區(Perm Gen), 最終產品是Class對象,然后檢查是否有正確數據結構,JVM為Class的靜態變量分配內存,并設置默認初始值,把Class的二進制數據中的符號引用替換為直接引用,JVM為執行Class 的static 語句塊,會先初始化其父類,跑到JVM虛擬機之后呢,會進入到運行時引擎,最后在運行時引擎里面運行,運行的時候在內存里面是一個什么樣的情況,這個就是我們要講的重點——run-time data areas

運行時數據區

Java虛擬機運行時數據區:


1.1 程序計數器

程序計數器是一塊較小的內存空間, 它可以看作是當前線程所執行的字節碼的行號指示器。由于Java虛擬機的多線程是通過線程輪流切換并分配處理器執行時間的方式來實現的,在任何一個確定的時刻,一個處理器都會只執行一條線程中的指令,因此為了線程切換后都能回復正確的執行位置,每個線程都有一個獨立的程序計數器。如果線程正在執行的是一個java方法,這個計數器記錄的就是正在執行的虛擬機字節碼指令的地址。如果正在執行的是native方法,這個計數器值則為空。

作用:

1、字節碼解釋器通過改變程序計數器來一次讀取指令,從而實現代碼的流程控制。比如:順序執行、選擇、循環、異常處理等 2、在多線程的情況下,程序計數器用于記錄當前線程線程執行的位置,當線程被切換回來的時候能夠知道該線程上次運行到哪里了

特點:

  1. 是一塊較小的內存空間
  2. 線程私有,每一條線程都有一個程序計數器
  3. 是唯一不會出現 OutOfMemoryError的內存區域
  4. 生命周期隨著線程的創建而創建,隨著線程的結束而結束

1.2 Java虛擬機棧

Java虛擬機棧也是線程私有的,它的生命周期與線程相同,虛擬機棧描述的是Java方法執行的內存模型;每個方法在執行的同時都會創建一個棧幀(stack frame) 用于存儲局部變量表、操作數棧、動態鏈接、方法出口等信息。每一個方法從調用至執行完成的過程,就對應著一個棧幀在虛擬機中入棧到出棧的過程。

 

我們結合一個案例來看一下:

  1. public class TestStack { 
  2.  
  3.    public static void main(String[] args) { 
  4.            new PlayRice().print(); 
  5.   } 
  6.  
  7. class PlayRice{ 
  8.  
  9.    public void fun(){ 
  10.        System.out.println("干飯人,干飯魂,干飯都是人上人!!!"); 
  11.   } 
  12.  
  13.    public void print(){ 
  14.        fun(); 
  15.   } 

 經常有人把Java 內存區域籠統的劃分成堆內存(Heap)和棧內存(Stack),這種劃分方式是直接繼承自傳統的 C、C++程序的內部結構,但是在Java語言里面顯然是不合適的,Java的內存區域過分要比這兩個更復雜,不過這種劃分方式的流行也簡潔說明了程序員最關注的、對象內存分配關系最密切的區域是 堆和棧,棧通常是指虛擬機,或者更多情況下只是指 虛擬機棧中的局部變量表的部分 局部變量表存放了編譯期可知的各種基本數據類型(boolean、byte、char、short、int、float、long、double)、對象引用

在《Java虛擬機規范中》,對這個區域規定了兩種異常狀況: 1. 如果線程請求的棧深度大于虛擬機所允許的深度,將拋出 StackOverflowError 2. 如果Java虛擬機棧可以動態擴展,當擴展時無法申請到足夠的內存,就會拋出OutOfMemoryError異常

1.3 本地方法棧

本地方法棧(Native Method Stack)和虛擬機棧所發揮的作用是非常相似的,他們之間的區別就是虛擬機棧為虛擬機執行的Java方法(也就是字節碼)服務,而本地方法棧則為虛擬機使用到的 Native方法服務。

在虛擬機規范中對本地方法棧中方法使用的語言、使用方式與數據結構并沒有強制規定,因此具體的虛擬機可以自由實現它,甚至有的Java虛擬機(Hot-Spot虛擬機)直接就把本地方法棧和虛擬機棧合二為一。與虛擬機一樣,本地方法棧也會拋出 StackOverflowError 和 OutOfMemoryError 異常。

1.4 堆

Java堆是虛擬機所管理中內存最大的一塊。Java堆是被所有線程共享的一個內存區域,在虛擬機啟動時創建。這個內存區域的唯一目的就是存放對象的實例,Java世界里 幾乎 所有的對象實例都在這里分配。

在《Java虛擬機規范》中對Java堆的描述是:“所有的對象實例以及數組都應當在堆上分配”。Java對是垃圾收集器管理的內存區域。從回收內存的角度看,現代的垃圾收集器大部分都是分代收集理論設計的,所以Java堆中經常會出現 “新生代、老年代、永久代、Eden、Survivor”。

根據《Java虛擬機規范》的規定,Java堆可以處在物理上不連續的內存空間中,但在邏輯上它應該被視為連續的,這點就像我們用磁盤空間去存儲文件一樣,并不要求每個文件都連續存放。但對于大對象(典型的如數組對象),多數虛擬機實現出于實現簡答、存儲高效的考慮,很可能會要求連續的內存空間。

Java堆既可以被實現成固定大小的,也可以是可擴展的,不過當前主流的Java虛擬機都是按照可擴展來實現的(通過參數-Xmx和-Xms設定)。如果在Java堆中沒有內存完成實例分配,并且堆也無法再擴展時,Java虛擬機會拋出OutOfMemoryError異常。

1.5 方法區

方法區(Method Area)和Java堆一樣,是各個線程共享的內存區域,它用于存儲已被虛擬機加載的類型信息、常量、靜態變量、即時編譯器編譯后的代碼緩存等數據。雖然《Java虛擬機規范》中把方法區描述為堆的一個邏輯部分,但是它卻有一個別名叫做 “非堆”(Non-Heap),目的是與Java堆區分開來。

《Java虛擬機規范》對方法區的約束是非常高寬松的,除了和Java堆一樣不需要連續的內存和可以選擇固定大小或者可擴展外,甚至還可以選擇不實現垃圾收集,所以垃圾收集的行為在這個區域就會比較少出現。這個區域的內存回收目標主要是針對常量池的回收和類型的卸載,但是這個區域的回收效果就比較差強人意了。

如果方法區無法滿足新的內存分配需求的時候,就會拋出 OutOfMemoryError異常。

1.6 運行時常量池

運行時常量池(Runtime Constant Pool)是方法區的一部分。Class文件中除了有類的版本、字段、方法、接口等描述信息外,還有一項信息是常量池表(Constant Pool Table),用于存放編譯期生成的各種字面量與符號引用,這部分內容將在類加載后存放到方法區的運行時常量池中。

Java虛擬機對于Class文件每一部分(包括常量池)的格式都有嚴格規定,如每一個字節用于存儲哪種數據都必須符合規范上的要求才會被虛擬機認可、加載和執行,但對于運行時常量池,《Java虛擬機規范》并沒有任何細節的要求,不同提供商實現的虛擬機可以按照自己的需要來實現,這個內存區域,不過一般來說,除了保存Class文件描述的符號引用外,還會把符號引用翻譯出來的直接引用也存儲在運行時常量池中

運行時常量池相對于Class文件常量池的另外一個重要特征是具備動態性,Java語言并不要求常量一定只有編譯器才能產生,也就是說,并非預置入Class文件中常量池的內容才能進入方法區運行時常量池,運行期間也可以將新的常量放入池中,這種特性被開發人員利用的比較多就是String類的intern()方法。

既然運行時常量池是方法區的一部分,自然受到方法區內存的限制,當常量池無法再申請到內存 時會拋出OutOfMemoryError異常。

1.7 直接內存

直接內存(Direct Memory)并不是虛擬機運行時數據區的一部分,也不是《Java虛擬機規范》中定義的內存區域。但是這部分也被頻繁的使用過,而且也有可能會導致OutOfMemoryError異常出現,在JDK1.4中新加入了NIO(New Input/Output)類,引入了一種基于通道(Channel)與緩沖區(Buffer)的I/O方式,它可以使用Native函數庫直接分配堆外內存。然后通過一個存儲在Java堆里面的DirectByteBuffer對象作為這塊內存的引用進行操作。

1.8 小結

從下面一張圖我們就可以看出,每一個線程都有自己的程序計數器、Java虛擬機棧以及本地方法棧,但是他們共享的是堆以及方法區,為什么每個線程都有自己的程序計數器?我們在上面已經講過,就是當一個線程執行完了,CPU切換到另一個線程去執行,當另外一個線程執行完成之后切回來的時候,能夠知道當前線程執行的位置。


理解面試題

我們回到最開始我們講的面試題,我們先來看 i=i++等于88,具體他內部是怎樣執行的呢,我們需要看它的指令是怎么操作的我們可以用過 Jclasslib來解析他二進制碼之后點到的main方法

1.1 安裝 Jclasslib

首先我們需要安裝 Jclasslib,安裝成功如下圖所示:

1.2 查看字節碼

首先我們需要 運行main方法 ,加載其class的內容后,點擊 view -> show Bytecode With Jclasslib 

main方法里面記錄的有兩張表:

表1:LineNumberTable 記錄是行號表2:LocalVariabletable 是局部變量表,里面就是方法內部使用到的變量,第一個是 args ,第二個是a,所以局部變量表,指的就是我們當前這個方法,這個棧幀里面用到了哪些局部變量。

 

a = a++;

接下來我們來看一下,a = a++;中間的執行過程具體是怎么樣的

  1. 0 bipush 88 
  2. 2 istore_1 
  3. 3 iload_1 
  4. 4 iinc 1 by 1 
  5. 7 istore_1 
  6. 8 getstatic #2 <java/lang/System.out
  7. 11 iload_1 
  8. 12 invokevirtual #3 <java/io/PrintStream.println> 
  9. 15 return 

如果我們不理解指令具體是什么意思,我們可以點擊對應指令,瀏覽器直接定位這條指令的詳細說明

首先我們來看一下 bipush 88 和 istore_1,對應的是 int a = 88;iload+1 等于89,再把89賦值出來還是89,

  • bipush 88 是指 push byte 放到棧中,88當成一個byte值,會自動擴展成Int類型,把它放到棧中,88放在局部變量表,輸入結果是88。
  • 第二條指令istore_1是把我們棧頂上的那個數出棧,放到下標值為1的局部變量表。局部變量表下標值為1的就是a的值,剛才88是放到棧頂上的,現在把88彈出來放到a里面,所以這兩句話完成之后對應的int a = 88就完成了,如下圖所示:

iload_1: 的意思是 從局部變量加載int(load int from local variable) ,就是從局部變量表中 拿值,之后放到棧里面,如下圖所示:

iinc 1 by 1: 執行 a++ 操作,將局部變量表中 數值為88的進行+1 操作,所以就是 89了, 

 

istore_1: 執行 a = a++ 操作,原先已經執行了 a++ 操作,這個時候將 a++ 中 a 賦值給 int a ,所以會將棧中的數據賦值到 局部變量表中,所以這個時候局部變量表中的數據就是88了。


所以我們最后的結果就是88。

a = ++a;

字節碼指令:

  1. 0 bipush 88 
  2. 2 istore_1 
  3. 3 iinc 1 by 1 
  4. 6 iload_1 
  5. 7 istore_1 
  6. 8 getstatic #2 <java/lang/System.out
  7. 11 iload_1 
  8. 12 invokevirtual #3 <java/io/PrintStream.println> 
  9. 15 return 

bipush 88和istore_1: 這句話其實完成了 int a = 88,先將88壓棧,然后在出棧賦值到局部變量表中。


iinc 1 by 1: 進行++a 操作,所以這個時候局部變量表中的數據就變成了89。


iload_1: 這個時候將局部變量表中的數值壓到棧中,


istore_1: 這個時候做 a = ++a 操作,將 a的值賦值給 int a,因為在棧中的數據本身就是89,所以最后打印出來的結果就是89。


補充:當我們設置 int a = 250 的時候,下面的值會變成 sipush,是因為 250已經超過127,他已經超過byte 所能代表的最大結果,所以看到的二進制就是sipush,s 代表 short。

總結

到這里,你學廢了嗎?其實有時候我們學東西,知道怎么用,但是具體里面的細節,就需要我們仔細的去琢磨,有時候會很枯燥,當我們了解其原理之后,會有豁然開朗的感覺嗎?小農會有,你們呢?

我是牧小農,怕什么真理無窮,進一步有進一步的歡喜,大家加油!

 

責任編輯:姜華 來源: 牧小碼農
相關推薦

2021-06-09 07:56:51

JvmJVM面試題Java

2015-09-02 14:09:19

面試題程序設計

2017-03-10 09:33:16

JavaScript類型

2024-10-11 17:09:27

2011-06-14 09:12:03

JavaScript

2011-05-23 11:27:32

面試題面試java

2018-03-06 15:30:47

Java面試題

2009-08-11 10:12:07

C#算法

2023-02-04 18:24:10

SeataJava業務

2009-08-11 14:59:57

一道面試題C#算法

2021-05-31 07:55:44

smartRepeatJavaScript函數

2022-04-08 07:52:17

CSS面試題HTML

2017-11-21 12:15:27

數據庫面試題SQL

2009-08-11 15:09:44

一道面試題C#算法

2023-08-01 08:10:46

內存緩存

2021-10-28 11:40:58

回文鏈表面試題數據結構

2022-02-08 18:09:20

JS引擎解析器

2011-03-02 10:58:16

SQL server入門面試題

2017-09-13 07:15:10

Python讀寫文件函數

2021-03-27 10:59:45

JavaScript開發代碼
點贊
收藏

51CTO技術棧公眾號

天堂中文在线资源| 国产精品20p| sm在线播放| 2024国产精品| 亚洲va电影大全| 国产网址在线观看| 成人精品视频| 亚洲精品一线二线三线无人区| 国产亚洲欧美在线视频| 免费人成在线观看播放视频| 成人免费看视频| 国产免费亚洲高清| 91浏览器在线观看| 中文在线日韩| 永久免费看mv网站入口亚洲| 三上悠亚 电影| 无人区在线高清完整免费版 一区二| 亚洲欧洲在线观看av| 精品久久久久久综合日本| 一级黄色片网站| 免费看的黄色欧美网站| 久久99精品久久久久久青青91| 扒开jk护士狂揉免费| 亚洲精品不卡在线观看| 色欧美日韩亚洲| 可以看毛片的网址| av在线影院| 中文av一区二区| 欧美美乳视频网站在线观看| www.av黄色| 蜜桃av噜噜一区| 日本精品中文字幕| 国产精品50页| 欧美激情四色| 久久久精品网站| 国产一二三av| 日韩欧美中文| 亚洲天堂一区二区三区| 美国黄色a级片| jizz性欧美2| 日韩一区二区三区视频| 性chinese极品按摩| 成人免费看视频网站| 亚洲成人动漫在线观看| 青青青在线观看视频| 麻豆系列在线观看| 国产精品久久一卡二卡| 天堂一区二区三区| 成年人视频网站在线| 久久久久久久综合狠狠综合| 蜜桃在线一区二区三区精品| 无套内谢的新婚少妇国语播放| 国产很黄免费观看久久| 91在线观看网站| 性生交生活影碟片| 国产二区国产一区在线观看| 亚洲一区二区中文字幕| 国产人妖一区二区三区| 久久99国产乱子伦精品免费| 91丨九色丨国产丨porny| 欧美三日本三级三级在线播放| 欧美三级一级片| 国产精品专区免费| 日本精品一区二区三区高清 | 久久久com| 色网站在线免费观看| 久久久久久亚洲综合影院红桃| 欧美激情国产日韩| 国产毛片av在线| 国产精品久久久久久亚洲毛片 | 香蕉国产精品偷在线观看不卡| 91国内免费在线视频| 国产区一区二区三| 日韩激情视频在线观看| 国产精品日韩欧美| 国产又大又黄又爽| 福利91精品一区二区三区| 国产精品一区二区三区免费 | 91视频国产观看| 日本高清不卡一区二区三| 国产福利电影在线| 亚洲欧美一区二区三区久本道91| 日韩在线视频在线| 嗯~啊~轻一点视频日本在线观看| 精品久久久久久久久久久| 国产视频一区二区三区在线播放| 成人精品一区二区三区电影| 欧美成人综合网站| 李宗瑞91在线正在播放| 午夜精品久久久久久久四虎美女版| 欧美日韩国产成人| 久久精品视频2| 国精产品一区一区三区mba桃花 | 国产51自产区| 国产亚洲电影| 欧美精品一区二区免费| 二区视频在线观看| 国产资源在线一区| 欧美国产二区| 91福利国产在线观看菠萝蜜| 日韩欧美国产激情| 亚洲国产综合av| 九九视频精品全部免费播放| 蜜臀久久99精品久久久久久宅男| 久久久久久久久久久久久久av| 日韩成人免费电影| 加勒比在线一区二区三区观看| 岛国大片在线观看| 亚洲一区二区三区在线| 天天爱天天操天天干| 在线日韩成人| 色妞在线综合亚洲欧美| 久久午夜免费视频| 国产91精品露脸国语对白| 欧美一区激情视频在线观看| 国产精品一区hongkong| 欧美日韩久久不卡| 色欲av无码一区二区三区| 牛牛国产精品| 国产日本欧美一区| 国产一区二区三区福利| 污片在线观看一区二区| 男人操女人下面视频| 大色综合视频网站在线播放| 91高清在线免费观看| av男人天堂av| 最新中文字幕一区二区三区| aa免费在线观看| 粉嫩久久久久久久极品| 精品自在线视频| 亚洲综合免费视频| 国产欧美精品一区二区色综合朱莉| 国产va亚洲va在线va| 懂色av色香蕉一区二区蜜桃| 中文字幕无线精品亚洲乱码一区 | 丰满诱人av在线播放| 欧美精品久久99| 国产精品无码无卡无需播放器| 性色一区二区| 快播亚洲色图| 欧美天堂视频| 亚洲精选一区二区| 99热在线观看免费精品| 69堂精品视频在线播放| 国产一区二三区好的| 性欧美大战久久久久久久免费观看| 成人免费看黄| 国产亚洲精品美女| www.久久网| 中文av一区二区| 超碰成人在线播放| 永久亚洲成a人片777777| 91亚洲va在线va天堂va国 | 日韩毛片在线免费看| 婷婷精品视频| 国产精品99蜜臀久久不卡二区| 日本在线丨区| 在线观看亚洲一区| 亚洲欧美日韩第一页| 久热成人在线视频| 在线观看亚洲视频啊啊啊啊| 超碰国产精品一区二页| 乱亲女秽乱长久久久| 国产三级伦理片| 亚洲激情六月丁香| bl动漫在线观看| 久久久精品日韩| 亚洲一卡二卡| 中文在线综合| 欧美有码在线观看视频| eeuss影院www在线播放| 欧美久久一二区| wwwav国产| 波多野结衣精品在线| 国产xxxxx在线观看| 色欧美自拍视频| 亚洲影院高清在线| 天堂资源在线| 日韩在线视频观看| 国产裸体无遮挡| 黄色精品一区二区| 国产性猛交xx乱| 国产福利91精品一区| 毛片一区二区三区四区| 婷婷综合网站| 久久超碰亚洲| 日本成人一区二区| 68精品国产免费久久久久久婷婷| 男女av在线| 日韩天堂在线观看| 日本熟女毛茸茸| 亚洲欧美日韩国产综合在线| 国产熟女高潮一区二区三区| 美腿丝袜亚洲色图| 一本久道高清无码视频| 成人在线电影在线观看视频| 99热国产免费| 88xx成人永久免费观看| 久久99精品久久久久久噜噜| 国产精品影院在线| 精品成人在线观看| 一本色道久久综合亚洲| 精品国产福利视频| 成年人一级黄色片| 国产女人aaa级久久久级| 涩视频在线观看| 狠狠色丁香婷婷综合| 国产乱子夫妻xx黑人xyx真爽| 图片小说视频色综合| 欧美日韩精品久久| 红杏成人性视频免费看| 成人在线激情视频| 色老太综合网| 久久免费精品视频| 男人天堂久久久| 亚洲美女av黄| 色欲av永久无码精品无码蜜桃| 欧美男女性生活在线直播观看 | 欧美日韩久久久一区| 国产小视频在线免费观看| 亚洲欧美另类久久久精品2019| 人妻少妇无码精品视频区| a亚洲天堂av| 伊人国产精品视频| 美女在线一区二区| 久久久国产欧美| 久久激情中文| 国产精品无码av在线播放| 欧美国内亚洲| 热这里只有精品| 国产精品99久久精品| 神马一区二区影院| 最新国产一区| 久久久久久99| 欧美日韩导航| 精品无人区一区二区三区竹菊| 99re6热只有精品免费观看| 国产在线视频欧美| 涩涩涩久久久成人精品| 国产精品久久一| 超薄肉色丝袜脚交一区二区| 国产97色在线| 国产成人精品一区二三区在线观看| 欧美亚洲午夜视频在线观看| 麻豆理论在线观看| 欧美夜福利tv在线| 厕沟全景美女厕沟精品| 欧美做受高潮1| 成人片免费看| 国产精品久久77777| 古装做爰无遮挡三级聊斋艳谭| 秋霞一区二区三区| 91情侣偷在线精品国产| 欧美日韩午夜电影网| 97中文在线| 国产精品极品| 久久另类ts人妖一区二区| 国产成人一区| 亚洲国产一区二区三区在线播| 久久国产影院| 18视频在线观看娇喘| 激情综合久久| 91看片就是不一样| 蜜臀av性久久久久蜜臀aⅴ| 亚洲国产成人va在线观看麻豆| 久久 天天综合| 污视频在线观看免费网站| 成人精品国产免费网站| 男人的天堂影院| 久久精品网站免费观看| 亚洲一二三四五六区| 一区二区三区欧美日韩| 日韩欧美性视频| 日本韩国欧美一区二区三区| 在线免费观看中文字幕| 日韩限制级电影在线观看| 欧美熟女一区二区| 国产午夜精品全部视频播放| 欧美69xxx| 国自产精品手机在线观看视频| 成人做爰视频www网站小优视频| 国产精品久久久久久久久久久久久久| 欧洲精品久久久久毛片完整版| 114国产精品久久免费观看| 欧美色图五月天| 五月天亚洲综合情| 国内精品久久久久久久影视麻豆| 女人喷潮完整视频| 精品一区二区综合| 看全色黄大色黄女片18| 亚洲国产精品精华液ab| 福利所第一导航| 91国产精品成人| 高h调教冰块play男男双性文| 亚洲欧洲xxxx| 欧美卡一卡二| 国产精品免费视频xxxx| 88久久精品| 日韩美女一区| 伊人久久大香线蕉综合热线| 亚洲免费999| 久久婷婷国产综合精品青草| 18岁成人毛片| 欧美午夜电影在线播放| 亚洲av成人精品日韩在线播放| 久久精品国产欧美亚洲人人爽| 黄色视屏在线免费观看| 成人美女免费网站视频| 国产精品一在线观看| 国产精品www在线观看| 精品一区二区在线免费观看| 国产精品亚洲无码| 亚洲va天堂va国产va久| 99热这里只有精品在线| 在线a欧美视频| 亚洲黄色免费看| 国产精品久久久久av福利动漫| 欧美韩日高清| 国产主播中文字幕| 久久久久久久久久久久久夜| 国产在线观看免费视频今夜| 欧美一区二区三区免费视频| 在线观看麻豆| 国产xxx69麻豆国语对白| 国产精品99久久免费观看| 国产卡一卡二在线| 日本欧美大码aⅴ在线播放| 亚洲一区二区三区四区五区六区| 亚洲综合一区二区精品导航| 91黄色在线视频| 日韩中文字幕第一页| 成人免费网站www网站高清| 久久精品一二三区| 香蕉视频成人在线观看| 亚洲精品女人久久久| 性做久久久久久久免费看| 亚洲精品一区二区三区四区| 欧美成人小视频| 国产95亚洲| 成人污网站在线观看| 国产一区二区看久久| √天堂中文官网8在线| 欧美一区二区视频在线观看2020| 日本在线看片免费人成视1000| 国产精品久久久久久婷婷天堂 | 精品在线播放午夜| 免费看的黄色录像| 欧美日本一区二区| 黄色在线视频网站| 成人亚洲激情网| 中文字幕日韩一区二区不卡| 特种兵之深入敌后| 亚洲一本大道在线| 手机在线不卡av| 欧美一级在线亚洲天堂| 米奇777超碰欧美日韩亚洲| 老司机午夜av| 国产精品久久夜| www.超碰在线.com| 久久久免费高清电视剧观看| 林ゆな中文字幕一区二区| 欧美aⅴ在线观看| 国产三级精品三级| 91肉色超薄丝袜脚交一区二区| 久久久久99精品久久久久| 精品亚洲a∨一区二区三区18| 一本大道东京热无码aⅴ| 成人午夜碰碰视频| 青青青国产在线| 在线观看亚洲区| 久久丁香四色| 国产97在线 | 亚洲| 国产日产欧产精品推荐色| 亚洲一区二区色| 欧美—级a级欧美特级ar全黄| 欧美色图婷婷| www.se五月| 亚洲成va人在线观看| 精品亚洲成a人片在线观看| 成人网址在线观看| 一本色道久久综合亚洲精品不| 亚洲精品午夜视频| 日韩一区二区三区三四区视频在线观看 | 激情五月婷婷六月| 久久久久九九视频| 国产男男gay体育生白袜| 欧美一区二三区| 91高清一区| 国产三级av在线播放| 日韩精品一区二区三区蜜臀| 大胆人体一区二区| 精品国产三级a∨在线| 26uuu色噜噜精品一区二区| 一本色道久久综合无码人妻| 91高清在线免费观看| 91精品国产成人观看| 91精品人妻一区二区| 日韩欧美在线不卡| 成人在线视频免费| 日日摸日日碰夜夜爽无码|