久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

《深入理解java虚拟机》第2章 Java内存区域与内存溢出异常

發(fā)布時(shí)間:2025/3/15 java 11 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《深入理解java虚拟机》第2章 Java内存区域与内存溢出异常 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java與C++之間有一堵由內(nèi)存動(dòng)態(tài)分配和垃圾收集技術(shù)所圍成的“高墻”,墻外面的人想進(jìn)去,墻里面的人卻想出來。

2.1 概述

https://blog.csdn.net/q5706503/article/details/84640762

對(duì)于從事C、C++程序開發(fā)的開發(fā)人員來說,在內(nèi)存管理領(lǐng)域,他們既是擁有最高權(quán)力的“皇帝”又是從事最基礎(chǔ)工作的“勞動(dòng)人民"一既擁有每一 個(gè)對(duì)象的“所有權(quán)”,又擔(dān)負(fù)著每一個(gè)對(duì)象生命開始到終結(jié)的維護(hù)責(zé)任。對(duì)于Java程序員來說,在虛擬機(jī)自動(dòng)內(nèi)存管理機(jī)制的幫助下,不再需要為每一個(gè)new操作去寫配對(duì)的de/free代碼,不容易出現(xiàn)內(nèi)存泄漏和內(nèi)存溢出問題,由虛擬機(jī)管理內(nèi)存這一切看起來都很美好。不過,也正是因?yàn)镴ava程序員把內(nèi)存控制的權(quán)力交給了Java虛擬機(jī),一旦出現(xiàn)內(nèi)存泄漏和溢出方面的問題,如果不了解虛擬機(jī)是怎樣使用內(nèi)存的,那么排查錯(cuò)誤將會(huì)成為一項(xiàng)異常艱難的工作。

本章是第二部分的第1章,筆者將從概念上介紹Java虛擬機(jī)內(nèi)存的各個(gè)區(qū)域,講解這些區(qū)域的作用、服務(wù)對(duì)象以及其中可能產(chǎn)生的問題,這是翻越虛擬機(jī)內(nèi)存管理這堵圍墻的第一步。

2.2運(yùn)行時(shí)數(shù)據(jù)區(qū)域

Java虛擬機(jī)在執(zhí)行Java程序的過程中會(huì)把它所管理的內(nèi)存劃分為若千個(gè)不同的數(shù)據(jù)區(qū)域。這些區(qū)域都有各自的用途,以及創(chuàng)建和銷毀的時(shí)間,有的區(qū)域隨著虛擬機(jī)進(jìn)程的啟動(dòng)而存在,有些區(qū)域則依賴用戶線程的啟動(dòng)和結(jié)束而建立和銷毀。根據(jù)《Java 虛擬機(jī)規(guī)范(Java SE 7版》的規(guī)定,Java 虛擬機(jī)所管理的內(nèi)存將會(huì)包括以下幾個(gè)運(yùn)行時(shí)數(shù)據(jù)區(qū)域,如圖2-1所示。

2.2.1程序計(jì)數(shù)器

程序計(jì)數(shù)器(Program Counter Register)是一塊較小的內(nèi)存空間,它可以看作是當(dāng)前線程所執(zhí)行的字節(jié)碼的行號(hào)指示器。在虛擬機(jī)的概念模型里( 僅是概念模型,各種虛擬機(jī)可能會(huì)通過一些更高效的方式去實(shí)現(xiàn)),字節(jié)碼解釋器工作時(shí)就是通過改變這個(gè)計(jì)數(shù)器的值來選取下一條需要執(zhí)行的字節(jié)碼指令,分支、循環(huán)、跳轉(zhuǎn)、異常處理、線程恢復(fù)等基礎(chǔ)功能都需要依賴這個(gè)計(jì)數(shù)器來完成。
由于Java虛擬機(jī)的多線程是通過線程輪流切換并分配處理器執(zhí)行時(shí)間的方式來實(shí)現(xiàn)的,在任何一個(gè)確定的時(shí)刻,一個(gè)處理器(對(duì)于多核處理器來說是一個(gè)內(nèi)核) 都只會(huì)執(zhí)行一條線程中的指令。因此,為了線程切換后能恢復(fù)到正確的執(zhí)行位置,每條線程都需要有一個(gè)獨(dú)立的程序計(jì)數(shù)器,各條線程之間計(jì)數(shù)器互不影響,獨(dú)立存儲(chǔ),我們稱這類內(nèi)存區(qū)域?yàn)椤熬€程私有”的內(nèi)存。如果線程正在執(zhí)行的是-個(gè)Java方法,這個(gè)計(jì)數(shù)器記錄的是正在執(zhí)行的虛擬機(jī)字節(jié)碼指令的地址;如果正在執(zhí)行的是Native方法,這個(gè)計(jì)數(shù)器值則為空(Undefined)。 此內(nèi)存區(qū)域是唯一一個(gè)在 Java虛擬機(jī)規(guī)范中沒有規(guī)定任何OutOfMemoryError情況的區(qū)域。

2.2.2 Java 虛擬機(jī)棧

與程序計(jì)數(shù)器-樣, Java虛擬機(jī)棧(Java Virtual Machine Stacks)也是線程私有的,它的生命周期與線程相同。虛擬機(jī)棧描述的是Java方法執(zhí)行的內(nèi)存模型:每個(gè)方法在執(zhí)行的同時(shí)都會(huì)創(chuàng)建一個(gè)棧幀(Stack Frame9)用于存儲(chǔ)局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法出口等信息。每一個(gè)方法從調(diào)用直至執(zhí)行完成的過程,就對(duì)應(yīng)著一個(gè)棧幀在虛擬機(jī)棧中人棧到出棧的過程。?

經(jīng)常有人把Java內(nèi)存區(qū)分為堆內(nèi)存(Heap)和棧內(nèi)存(Stack), 這種分法比較粗糙,Java內(nèi)存區(qū)域的劃分實(shí)際上遠(yuǎn)比這復(fù)雜。這種劃分方式的流行只能說明大多數(shù)程序員最關(guān)注的、與對(duì)象內(nèi)存分配關(guān)系最密切的內(nèi)存區(qū)域是這兩塊。其中所指的“堆”筆者在后面會(huì)專門講述,而所指的“棧”就是現(xiàn)在講的虛擬機(jī)棧,或者說是虛擬機(jī)棧中局部變量表部分。
局部變量表存放了編譯期可知的各種基本數(shù)據(jù)類型(boolean、 byte、 char、 short、 int、float、long、 double)、 對(duì)象引用(reference 類型,它不等同于對(duì)象本身,可能是一個(gè)指向?qū)ο笃鹗嫉刂返囊弥羔?#xff0c;也可能是指向一個(gè)代表對(duì)象的句柄或其他與此對(duì)象相關(guān)的位置)和returnAddress類型(指向了一條字節(jié)碼指令的地址)。
其中64位長度的long和double類型的數(shù)據(jù)會(huì)占用2個(gè)局部變量空間(Slot), 其余的數(shù)據(jù)類型只占用1個(gè)。局部變量表所需的內(nèi)存空間在編譯期間完成分配,當(dāng)進(jìn)入一個(gè)方法時(shí),,這個(gè)方法需要在幀中分配多大的局部變量空間是完全確定的,在方法運(yùn)行期間不會(huì)改變局部變量表的大小。

在Java虛擬機(jī)規(guī)范中,對(duì)這個(gè)區(qū)域規(guī)定了兩種異常狀況:如果線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的深度,將拋出StackOverflowError異常;如果虛擬機(jī)棧可以動(dòng)態(tài)擴(kuò)展(當(dāng)前大部分的Java虛擬機(jī)都可動(dòng)態(tài)擴(kuò)展,只不過Java虛擬機(jī)規(guī)范中也允許固定長度的虛擬機(jī)棧),如果擴(kuò)展時(shí)無法申請(qǐng)到足夠的內(nèi)存,就會(huì)拋出OutOfMemoryError異常。

2.2.3本 地方法棧

本地方法棧(Native Method Stack)與虛擬機(jī)棧所發(fā)揮的作用是非常相似的,它們之間的區(qū)別不過是虛擬機(jī)棧為虛擬機(jī)執(zhí)行Java方法(也就是字節(jié)碼)服務(wù),而本地方法棧則為虛擬機(jī)使用到的Native方法服務(wù)。在虛擬機(jī)規(guī)范中對(duì)本地方法棧中方法使用的語言、使用方式與數(shù)據(jù)結(jié)構(gòu)并沒有強(qiáng)制規(guī)定,因此具體的虛擬機(jī)可以自由實(shí)現(xiàn)它。甚至有的虛擬機(jī)(譬如Sun HotSpot虛擬機(jī))直接就把本地方法棧和虛擬機(jī)棧合二為一。與虛擬機(jī)棧一樣, 本地方法棧區(qū)域也會(huì)拋出StackOverflowError和OutOfMemoryError異常。

2.2.4 Java堆

對(duì)于大多數(shù)應(yīng)用來說,Java 堆(Java Heap)是Java虛擬機(jī)所管理的內(nèi)存中最大的一塊。Java堆是被所有線程共享的一塊內(nèi)存區(qū)域,在虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建。此內(nèi)存區(qū)域的唯- - 目的就是存放對(duì)象實(shí)例,幾乎所有的對(duì)象實(shí)例都在這里分配內(nèi)存。這一點(diǎn)在Java虛擬機(jī)規(guī)范中的描述是:所有的對(duì)象實(shí)例以及數(shù)組都要在堆上分配e,但是隨著JIT編譯器的發(fā)展與逃逸分析技術(shù)逐漸成熟,棧上分配、標(biāo)量替換優(yōu)化技術(shù)將會(huì)導(dǎo)致一些微妙的變化發(fā)生,所有的對(duì)象都分配在堆上也漸漸變得不是那么“絕對(duì)”了。Java堆是垃圾收集器管理的主要區(qū)域,因此很多時(shí)候也被稱做“GC堆”(Garbage Collected Heap,幸好國內(nèi)沒翻譯成“垃圾堆”)。從內(nèi)存回收的角度來看,由于現(xiàn)在收集器基本都采用分代收集算法,所以Java堆中還可以細(xì)分為:新生代和老年代:再細(xì)致一點(diǎn)的有Eden空間、From Survivor空間、To Survivor空間等。從內(nèi)存分配的角度來看,線程共享的Java堆中可能劃分出多個(gè)線程私有的分配緩沖區(qū)(Thread Local Allocation Buffer, TLAB)。不過無論如何劃分,都與存放內(nèi)容無關(guān),無論哪個(gè)區(qū)域,存儲(chǔ)的都仍然是對(duì)象實(shí)例,進(jìn)一步劃分的目的是為了更好地回收內(nèi)存,或者更快地分配內(nèi)存。在本章中,我們僅僅針對(duì)內(nèi)存區(qū)域的作用進(jìn)行討論,Java 堆中的上述各個(gè)區(qū)域的分配、回收等細(xì)節(jié)將是第3章的主題。

根據(jù)Java虛擬機(jī)規(guī)范的規(guī)定,Java 堆可以處于物理上不連續(xù)的內(nèi)存空間中,只要邏輯上是連續(xù)的即可,就像我們的磁盤空間- -樣。在實(shí)現(xiàn)時(shí),既可以實(shí)現(xiàn)成固定大小的,也可以是可擴(kuò)展的,不過當(dāng)前主流的虛擬機(jī)都是按照可擴(kuò)展來實(shí)現(xiàn)的(通過-Xmx和-Xms控制)。如果在堆中沒有內(nèi)存完成實(shí)例分配,并且堆也無法再擴(kuò)展時(shí),將會(huì)拋出OutOfMemoryError異常。

2.2.5方法區(qū)

方法區(qū)(MethodArea)與Java堆一樣, 是各個(gè)線程共享的內(nèi)存區(qū)域,它用于存儲(chǔ)已被虛擬機(jī)加載的類信息、常量、靜態(tài)變量、即時(shí)編譯器編譯后的代碼等數(shù)據(jù)。雖然Java虛擬機(jī)_規(guī)范把方法區(qū)描述為堆的一個(gè)邏輯部分,但是它卻有一個(gè)別名叫做Non-Heap (非堆),目的應(yīng)該是與Java堆區(qū)分開來。

對(duì)于習(xí)慣在HotSpot虛擬機(jī)上開發(fā)、部署程序的開發(fā)者來說,很多人都更愿意把方法區(qū)稱為“永久代”(Permanent Generation),本質(zhì)上兩者并不等價(jià),僅僅是因?yàn)镠otSpot虛擬機(jī)的設(shè)計(jì)團(tuán)隊(duì)選擇把GC分代收集擴(kuò)展至方法區(qū),或者說使用永久代來實(shí)現(xiàn)方法區(qū)而已,這樣HotSpot的垃圾收集器可以像管理Java堆一樣管理這部分內(nèi)存,能夠省去專門為方法區(qū)編寫內(nèi)存管理代碼的工作。對(duì)于其他虛擬機(jī)(如BEA JRockit、IBM J9等)來說是不存在永久代的概念的。原則上,如何實(shí)現(xiàn)方法區(qū)屬于虛擬機(jī)實(shí)現(xiàn)細(xì)節(jié),不受虛擬機(jī)規(guī)范約束,但使用永久代來實(shí)現(xiàn)方法區(qū),現(xiàn)在看來并不是一個(gè)好主意,因?yàn)檫@樣更容易遇到內(nèi)存溢出問題(永久代有-XX:MaxPermSize的上限,J9 和JRockit只要沒有觸碰到進(jìn)程可用內(nèi)存的上限,例如32位系統(tǒng)中的4GB,就不會(huì)出現(xiàn)問題),而且有極少數(shù)方法(例如String.intern())會(huì)因這個(gè)原因?qū)е虏煌摂M機(jī)下有不同的表現(xiàn)。因此,對(duì)于HotSpot虛擬機(jī),根據(jù)官方發(fā)布的路線圖信息,現(xiàn)在也有放棄永久代并逐步改為采用Native Memory來實(shí)現(xiàn)方法區(qū)的規(guī)劃了e,在目前已經(jīng)發(fā)布的JDK 1.7 的HotSpot中,已經(jīng)把原本放在永久代的字符串常量池移出。

Java虛擬機(jī)規(guī)范對(duì)方法區(qū)的限制非常寬松,除了和Java堆一樣不需要連續(xù)的內(nèi)存和可以選擇固定大小或者可擴(kuò)展外,還可以選擇不實(shí)現(xiàn)垃圾收集。相對(duì)而言,垃圾收集行為在這個(gè)區(qū)域是比較少出現(xiàn)的,但并非數(shù)據(jù)進(jìn)人了方法區(qū)就如永久代的名字-樣“永久”存在了。這區(qū)域的內(nèi)存回收目標(biāo)主要是針對(duì)常量池的回收和對(duì)類型的卸載,一般來說,這個(gè)區(qū)域的回收“成績"比較難以令人滿意,尤其是類型的卸載,條件相當(dāng)苛刻,但是這部分區(qū)域的回收確實(shí)是必要的。在Sun公司的BUG列表中,曾出現(xiàn)過的若干個(gè)嚴(yán)重的BUG就是由于低版本的HotSpot虛擬機(jī)對(duì)此區(qū)域未完全回收而導(dǎo)致內(nèi)存泄漏。根據(jù)Java虛擬機(jī)規(guī)范的規(guī)定,當(dāng)方法區(qū)無法滿足內(nèi)存分配需求時(shí),將拋出OutOfMemoryError異常。

2.2.6運(yùn)行時(shí)常量池

運(yùn)行時(shí)常量池(Runtime Constant Pool)是方法區(qū)的一部分。Class 文件中除了有類的版本、字段、方法、接口等描述信息外,還有一項(xiàng)信息是常量池(Constant Pool Table),用于存放編譯期生成的各種字面量和符號(hào)引用,這部分內(nèi)容將在類加載后進(jìn)人方法區(qū)的運(yùn)行時(shí)常量池中存放。Java虛擬機(jī)對(duì)Class文件每一部分 (自然也包括常量池)的格式都有嚴(yán)格規(guī)定,每一個(gè)字節(jié)用于存儲(chǔ)哪種數(shù)據(jù)都必須符合規(guī)范上的要求才會(huì)被虛擬機(jī)認(rèn)可、裝載和執(zhí)行,但對(duì)于運(yùn)行時(shí)常量池,Java虛擬機(jī)規(guī)范沒有做任何細(xì)節(jié)的要求,不同的提供商實(shí)現(xiàn)的虛擬機(jī)可以按照自己的需要來實(shí)現(xiàn)這個(gè)內(nèi)存區(qū)域。不過,一般來說, 除了保存Class文件中描述的符號(hào)引用外,還會(huì)把翻譯出來的直接引用也存儲(chǔ)在運(yùn)行時(shí)常量池中。運(yùn)行時(shí)常量池相對(duì)于Class文件常量池的另外一個(gè)重要特征是具備動(dòng)態(tài)性,Java語言并不要求常量一定只有編譯期才能產(chǎn)生,也就是并非預(yù)置人Class文件中常量池的內(nèi)容才能進(jìn)人方法區(qū)運(yùn)行時(shí)常量池,運(yùn)行期間也可能將新的常量放人池中,這種特性被開發(fā)人員利用得比較多的便是String類的intern() 方法。既然運(yùn)行時(shí)常量池是方法區(qū)的一部分,自然受到方法區(qū)內(nèi)存的限制,當(dāng)常量池?zé)o法再申請(qǐng)到內(nèi)存時(shí)會(huì)拋出OutOfMemoryError異常。

2.2.7直 接內(nèi)存

直接內(nèi)存(DirectMemory)并不是虛擬機(jī)運(yùn)行時(shí)數(shù)據(jù)區(qū)的一部分,也不是Java虛擬機(jī)規(guī)范中定義的內(nèi)存區(qū)域。但是這部分內(nèi)存也被頻繁地使用,而且也可能導(dǎo)致OutOfMemoryError異常出現(xiàn),所以我們放到這里一起講解。在JDK 1.4 中新加入了NIO (New Input/Output)類,引入了一種基于通道(Channel)?與緩沖區(qū)(Buffer) 的I/O方式,它可以使用Native函數(shù)庫直接分配堆外內(nèi)存,然后通過一個(gè)存儲(chǔ)在Java堆中的DirectByteBuffer對(duì)象作為這塊內(nèi)存的引用進(jìn)行操作。這樣能在一些場景中顯著提高性能,因?yàn)楸苊饬嗽贘ava堆和Native堆中來回復(fù)制數(shù)據(jù)。顯然,本機(jī)直接內(nèi)存的分配不會(huì)受到Java堆大小的限制,但是,既然是內(nèi)存,肯定還是:
會(huì)受到本機(jī)總內(nèi)存(包括RAM以及SWAP區(qū)或者分頁文件)大小以及處理器尋址空間的限制。服務(wù)器管理員在配置虛擬機(jī)參數(shù)時(shí),會(huì)根據(jù)實(shí)際內(nèi)存設(shè)置-Xmx等參數(shù)信息,但經(jīng)常忽略直接內(nèi)存,使得各個(gè)內(nèi)存區(qū)域總和大于物理內(nèi)存限制(包括物理的和操作系統(tǒng)級(jí)的限制),從而導(dǎo)致動(dòng)態(tài)擴(kuò)展時(shí)出現(xiàn)OutOfMemoryError異常。

2.3HotSpot虛擬機(jī)對(duì)象探秘

介紹完Java虛擬機(jī)的運(yùn)行時(shí)數(shù)據(jù)區(qū)之后,我們大致知道了虛擬機(jī)內(nèi)存的概況,讀者了解了內(nèi)存中放了些什么后,也許就會(huì)想更進(jìn)一步了解這些虛擬機(jī)內(nèi)存中的數(shù)據(jù)的其他細(xì)節(jié),譬如它們是如何創(chuàng)建、如何布局以及如何訪問的。對(duì)于這樣涉及細(xì)節(jié)的問題,必須把討論范圍限定在具體的虛擬機(jī)和集中在某-一個(gè)內(nèi)存區(qū)域上才有意義。基于實(shí)用優(yōu)先的原則,筆者以常用的虛擬機(jī)HotSpot和常用的內(nèi)存區(qū)域Java堆為例,深人探討HotSpot虛擬機(jī)在Java堆中對(duì)象分配、布局和訪問的全過程。

2.3.1對(duì)象的創(chuàng)建

Java是一門面向?qū)ο蟮木幊陶Z言,在Java程序運(yùn)行過程中無時(shí)無刻都有對(duì)象被創(chuàng)建出來。在語言層面上,創(chuàng)建對(duì)象(例如克隆、反序列化)通常僅僅是一個(gè) new關(guān)鍵字而已,而在虛擬機(jī)中,對(duì)象(文中討論的對(duì)象限于普通Java對(duì)象,不包括數(shù)組和Class對(duì)象等)的創(chuàng)建又是怎樣-個(gè)過程呢?虛擬機(jī)遇到一條new指令時(shí),首先將去檢查這個(gè)指令的參數(shù)是否能在常量池中定位到一個(gè)類的符號(hào)引用,并且檢查這個(gè)符號(hào)引用代表的類是否已被加載、解析和初始化過。如果沒有,那必須先執(zhí)行相應(yīng)的類加載過程,本書第7章將探討這部分內(nèi)容的細(xì)節(jié)。

在類加載檢查通過后,接下來虛擬機(jī)將為新生對(duì)象分配內(nèi)存。對(duì)象所需內(nèi)存的大小在類加載完成后便可完全確定(如何確定將在2.3.2節(jié)中介紹),為對(duì)象分配空間的任務(wù)等同于把一塊確定大小的內(nèi)存從Java堆中劃分出來。假設(shè)Java堆中內(nèi)存是絕對(duì)規(guī)整的,所有用過的內(nèi)存都放在一邊, 空閑的內(nèi)存放在另一邊,中間放著一個(gè)指針作為分 界點(diǎn)的指示器,那所分配內(nèi)存就僅僅是把那個(gè)指針向空閑空間那邊挪動(dòng)一段與對(duì)象大小相等的距離,這種分配方式稱為“指針碰撞”(BumpthePointer)。如果Java堆中的內(nèi)存并不是規(guī)整的,已使用的內(nèi)存和空閑的內(nèi)存相互交錯(cuò),那就沒有辦法簡單地進(jìn)行指針碰撞了,虛擬機(jī)就必須維護(hù)-一個(gè)列表,記錄上哪些內(nèi)存塊是可用的,在分配的時(shí)候從列表中找到一塊足夠大的空間劃分給對(duì)象實(shí)例,并更新列表上的記錄,這種分配方式稱為“空閑列表”(Free List)。選擇哪種分配方式由Java堆是否規(guī)整決定,而Java堆是否規(guī)整又由所采用的垃圾收集器是否帶有壓縮整理功能決定。因此,在使用Serial、ParNew 等帶Compact過程的收集器時(shí),系統(tǒng)采用的分配算法是指針碰撞,而使用CMS這種基于Mark Sweep算法的收集器時(shí),通常采用空閑列表。除如何劃分可用空間之外,還有另外一個(gè)需要考慮的問題是對(duì)象創(chuàng)建在虛擬機(jī)中是非常頻繁的行為,即使是僅僅修改一個(gè)指針?biāo)赶虻奈恢?#xff0c;在并發(fā)情況下也并不是線程安全的,可能出現(xiàn)正在給對(duì)象A分配內(nèi)存,指針還沒來得及修改,對(duì)象B又同時(shí)使用了原來的指針來分配內(nèi)存的情況。解決這個(gè)問題有兩種方案,一種 是對(duì)分配內(nèi)存空間的動(dòng)作進(jìn)行同步處理一實(shí)際 上虛擬機(jī)采用CAS配上失敗重試的方式保證更新操作的原子性:另-種是把內(nèi)存分配的動(dòng)作按照線程劃分在不同的空間之中進(jìn)行,!即每個(gè)線程在Java堆中預(yù)先分配-小塊內(nèi)存,稱為本地線程分配緩沖(Thread Local Allocation Buffer, TLAB)。 哪個(gè)線程要分配內(nèi)存,就在哪個(gè)線程的TLAB上分配,只有TLAB用完并分配新的FLAB時(shí),才需要同步鎖定。虛擬機(jī)是否使用TLAB,可以通過-XX:+/-UseTLAB參數(shù)來設(shè)定。內(nèi)存分配完成后,虛擬機(jī)需要將分配到的內(nèi)存空間都初始化為零值(不包括對(duì)象頭),如果使用TLAB,這一工作過程也可以提前至TLAB分配時(shí)進(jìn)行。這一步操作保證了對(duì)象的實(shí)例字段在Java 代碼中可以不賦初始值就直接使用,程序能訪問到這些字段的數(shù)據(jù)類型所對(duì)應(yīng)的零值。接下來,虛擬機(jī)要對(duì)對(duì)象進(jìn)行必要的設(shè)置,例如這個(gè)對(duì)象是哪個(gè)類的實(shí)例、如何才能找到類的元數(shù)據(jù)信息、對(duì)象的哈希碼、對(duì)象的GC分代年齡等信息。這些信息存放在對(duì)象的對(duì)象頭(Object Header)之中。根據(jù)虛擬機(jī)當(dāng)前的運(yùn)行狀態(tài)的不同,如是否啟用偏向鎖等,對(duì)象頭會(huì)有不同的設(shè)置方式。關(guān)于對(duì)象頭的具體內(nèi)容,稍后再做詳細(xì)介紹。在上面工作都完成之后,從虛擬機(jī)的視角來看,一個(gè)新的對(duì)象已經(jīng)產(chǎn)生了,但從Java程序的視角來看,對(duì)象創(chuàng)建術(shù)剛剛開始一<init> 方法還沒有執(zhí)行,所有的字段都還為零。所以,一般來說(由字節(jié)碼中是否跟隨invokespecial指令所決定),執(zhí)行new指令之后會(huì)接著執(zhí)行<init>方法,把對(duì)象按照程序員的意愿進(jìn)行初始化,這樣一個(gè)真正可用的對(duì)象才算完全產(chǎn)生出來。
下面的代碼清單2=1是HotSpot虛擬機(jī)bytecodeInterpreter.cpp中的代碼片段(這個(gè)解釋器實(shí)現(xiàn)很少有機(jī)會(huì)實(shí)際使用,因?yàn)榇蟛糠制脚_(tái),上都使用模板解釋器;當(dāng)代碼通過JIT編譯器執(zhí)行時(shí)差異就更大了。不過,這段代碼用于了解HotSpot的運(yùn)作過程是沒有什么問題的)。

代碼清單2-1 HotSpot 解釋器的代碼片段
//確保常量池中存放的是已解釋的類

if (!constants->tag_at(index).is_unresolved_klass()) {//斷言確保是klassOop和instanceKlassOop (這部分下一節(jié)介紹)oop entry = (klassOop) *constants->obj_at_addr(index) ; assert (entry->is_klass(), "Should be resolved klass") ;klassOop k_entry = (klassOop) entry;assert(k_entry->klass_part()->OoP_is_instance(), "Should be instanceKlass");instanceKlass* ik= (instanceKlass*) k_entry->klass_part();//確保對(duì)象所屬類型已經(jīng)經(jīng)過初始化階段if ( ik->is_initfalized() && ik->can_be_fastpath_allocated() ){//取對(duì)象長度size_t obj_size = ik->size_helper();oop result = NULL;//記錄是否需要將對(duì)象所有字段置零值bool need_zero = !ZeroTLAB;//是否在TLAB中分配對(duì)象if (UseTLAB) {result = (oop) THREAD->tlab().allocate (obj_size) ;}if (result==NULL) {need_zero = true;//1直接在eden中分配對(duì)象retry:HeapWord* compare_to = *Universe::heap()->top_addr() ;HeapWord* new_top = compare_to + obj_size;/* cmpxchg是x86中的CAS指令,這里是一個(gè)C++方法,通過CAS方式分配空間,如果并發(fā)失敗,轉(zhuǎn)到retry中重試,直至成功分配為止*/if (new_top <= *Universe::heap()->end_addr()) {if (Atomic::cmpxchg_ptr(new_top, Universe: :heap()->top_addr(), compare_to) != compare_to) {goto retry;}result = (oop) compare_to;}}if (result != NULL) {//如果需要,則為對(duì)象初始化零值if (need_zero ) {HeapWord* to_zero = (HeapWord*) result + sizeof (oopDesc) / oopSize;obj_size = sizeof (oopDesc) / oopSize;if(obj_size>0){memset (to_zero, 0,obj_size * HeapWordSize) ;}}//根據(jù)是否啟用偏向鎖來設(shè)置對(duì)象頭信息if (UseBiasedLocking) {result->set_mark (ik->prototype_header()) ;} else {result->set_mark (markOopDesc::prototype() ;}result->set_klass_gap(0) ;result->set_klass(k_entry) ;//將對(duì)象引用入棧,繼續(xù)執(zhí)行下一條指令SET_STACK_OBJECT (result,0) ;UPDATE PC_AND_TOS_AND_CONTINUE(3, 1) ;}} }

?

2.3.2對(duì)象的內(nèi)存布局

在HotSpot虛擬機(jī)中,對(duì)象在內(nèi)存中存儲(chǔ)的布局可以分為3塊區(qū)域:對(duì)象頭( Header)、實(shí)例數(shù)據(jù)(Instance Data)和對(duì)齊填充( Padding).HotSpot虛擬機(jī)的對(duì)象頭包括兩部分信息,第一部分用于存儲(chǔ)對(duì)象自身的運(yùn)行時(shí)數(shù)據(jù),如哈希碼(HashCode)、 GC分代年齡、鎖狀態(tài)標(biāo)志、線程持有的鎖、偏向線程ID、偏向時(shí)間戳等,這部分?jǐn)?shù)據(jù)的長度在32位和64位的虛擬機(jī)(未開啟壓縮指針)中分別為32bit和64bit,官方稱它為“Mark Word"。對(duì)象需要存儲(chǔ)的運(yùn)行時(shí)數(shù)據(jù)很多,其實(shí)已經(jīng)超出了32位、64位Bitmap結(jié)構(gòu)所能記錄的限度,但是對(duì)象頭信息是與對(duì)象自身定義的數(shù)據(jù)無關(guān)的額外存儲(chǔ)成本,考慮到虛擬機(jī)的空間效率,MarkWord被設(shè)計(jì)成一個(gè)非固定的數(shù)據(jù)結(jié)構(gòu)以便在極小的空間內(nèi)存儲(chǔ)盡量多的信息,它會(huì)根據(jù)對(duì)象的狀態(tài)復(fù)用自己的存儲(chǔ)空間。例如:在32位的HotSpot虛擬機(jī)中,如果對(duì)象處于未被鎖定的狀態(tài)下,那么Mark Word的32bit空間中的25bit用于存儲(chǔ)對(duì)象哈希碼,4bit 用于存儲(chǔ)對(duì)象分代年齡,2bit 用于存儲(chǔ)鎖標(biāo)志位,1bit 固定為0,而在其他狀態(tài)(輕量級(jí)鎖定、重量級(jí)鎖定、GC標(biāo)記、可偏向)下對(duì)象的存儲(chǔ)內(nèi)容見表2-1

對(duì)象頭的另外- - 部分是類型指針,即對(duì)象指向它的類元數(shù)據(jù)的指針,虛擬機(jī)通過這個(gè)指針來確定這個(gè)對(duì)象是哪個(gè)類的實(shí)例。并不是所有的虛擬機(jī)實(shí)現(xiàn)都必須在對(duì)象數(shù)據(jù)上保留類型指針,換句話說,查找對(duì)象的元數(shù)據(jù)信息并不一一定要經(jīng)過對(duì)象本身,這點(diǎn)將在2.3.3節(jié)討論。另外,如果對(duì)象是-一個(gè)Java數(shù)組,那在對(duì)象頭中還必須有一塊用于記錄數(shù)組長度的數(shù)據(jù),因?yàn)樘摂M機(jī)可以通過普通Java對(duì)象的元數(shù)據(jù)信息確定Java對(duì)象的大小,但是從數(shù)組的元數(shù)據(jù)中卻無法確定數(shù)組的大小。?

代碼清單2-2為HotSpot虛擬機(jī)markOop.cpp中的代碼(注釋)片段,它描述了32bit下Mark Word的存儲(chǔ)狀態(tài)。

接下來的實(shí)例數(shù)據(jù)部分是對(duì)象真正存儲(chǔ)的有效信息,也是在程序代碼中所定義的各種類型的字段內(nèi)容。無論是從父類繼承下來的,還是在子類中定義的,都需要記錄起來。這部分的存儲(chǔ)順序會(huì)受到虛擬機(jī)分配策略參數(shù)(FieldsAllocationStyle)和字段在Java源碼中定義順序的影響。HotSpot 虛擬機(jī)默認(rèn)的分配策略為longs/doubles、ints、 shorts/chars、 bytes/booleans、oops (Ordinary Object Pointers),從分配策略中可以看出,相同寬度的字段總是被分配到- -起。在滿足這個(gè)前提條件的情況下,在父類中定義的變量會(huì)出現(xiàn)在子類之前。如果CompactFields參數(shù)值為true (默認(rèn)為true),那么子類之中較窄的變量也可能會(huì)插人到父類
變量的空隙之中。第三部分對(duì)齊填充并不是必然存在的,也沒有特別的含義,它僅僅起著占位符的作用。由于HotSpot VM的自動(dòng)內(nèi)存管理系統(tǒng)要求對(duì)象起始地址必須是8字節(jié)的整數(shù)倍,換句話說,就是對(duì)象的大小必須是8字節(jié)的整數(shù)倍。而對(duì)象頭部分正好是8字節(jié)的倍數(shù)(1 倍或者2倍),因此,當(dāng)對(duì)象實(shí)例數(shù)據(jù)部分沒有對(duì)齊時(shí),就需要通過對(duì)齊填充來補(bǔ)全。

2.3.3對(duì)象的訪問定位

建立對(duì)象是為了使用對(duì)象,我們的Java程序需要通過棧上的reference數(shù)據(jù)來操作堆上的具體對(duì)象。由于reference類型在Java虛擬機(jī)規(guī)范中只規(guī)定了一個(gè)指向?qū)ο蟮囊?#xff0c;并沒有定義這個(gè)引用應(yīng)該通過何種方式去定位、訪問堆中的對(duì)象的具體位置,所以對(duì)象訪問方式也是取決于虛擬機(jī)實(shí)現(xiàn)而定的。目前主流的訪問方式有使用句柄和直接指針兩種。如果使用句柄訪問的話,那么Java堆中將會(huì)劃分出一塊內(nèi)存來作為句柄池,reference中存儲(chǔ)的就是對(duì)象的句柄地址,而句柄中包含了對(duì)象實(shí)例數(shù)據(jù)與類型數(shù)據(jù)各自的具體地址信息,如圖2-2所示。

如果使用直接指針訪問,那么Java堆對(duì)象的布局中就必須考慮如何放置訪問類型數(shù)據(jù)的相關(guān)信息,而reference中存儲(chǔ)的直接就是對(duì)象地址,如圖2-3所示。?

?這兩種對(duì)象訪問方式各有優(yōu)勢,使用句柄來訪問的最大好處就是reference中存儲(chǔ)的是穩(wěn)定的句柄地址,在對(duì)象被移動(dòng)(垃圾收集時(shí)移動(dòng)對(duì)象是非常普遍的行為)時(shí)只會(huì)改變句柄中的實(shí)例數(shù)據(jù)指針,而reference本身不需要修改。使用直接指針訪問方式的最大好處就是速度更快,它節(jié)省了一次指針定位的時(shí)間開銷,由于對(duì)象的訪問在Java中非常頻繁,因此這類開銷積少成多后也是--項(xiàng)非常可觀的執(zhí)行成本。就本書討論的主要虛擬機(jī)Sun HotSpot 而言,它是使用第二種方式進(jìn)行對(duì)象訪問的,但從整個(gè)軟件開發(fā)的范圍來看,各種語言和框架使用句柄來訪問的情況也十分常見。

2.4實(shí)戰(zhàn): OutOfMtemoryError 異常

在Java虛擬機(jī)規(guī)范的描述中,除了百 程序計(jì)數(shù)器外,虛擬機(jī)內(nèi)存的其他幾個(gè)運(yùn)行時(shí)區(qū)域都有發(fā)生OutOfMemoryError (下文稱OOM)異常的可能,本節(jié)將通過若干實(shí)例來驗(yàn)證異常發(fā)生的場景(代碼清單2-3~代碼清單2-9的幾段簡單代碼),并且會(huì)初步介紹幾個(gè)與內(nèi)存相關(guān)的最基本的虛擬機(jī)參數(shù)。本節(jié)內(nèi)容的目的有兩個(gè):第-一,通過代碼驗(yàn)證Java虛擬機(jī)規(guī)范中描述的各個(gè)運(yùn)行時(shí)區(qū)域
存儲(chǔ)的內(nèi)容;第二,希望讀者在工作中遇到實(shí)際的內(nèi)存溢出異常時(shí),能根據(jù)異常的信息快速判斷是哪個(gè)區(qū)域的內(nèi)存溢出,知道偉么樣的代碼可能會(huì)導(dǎo)致這些區(qū)域內(nèi)存溢出,以及出現(xiàn)這些異常后該如何處理。下文代碼的開頭都注釋了執(zhí)行時(shí)所需要設(shè)置的虛擬機(jī)啟動(dòng)參數(shù)(注釋中“VM Args"后面跟著的參數(shù)),這些參數(shù)對(duì)實(shí)驗(yàn)的結(jié)果有直接影響,讀者調(diào)試代碼的時(shí)候千萬不要忽略。如果讀者使用控制臺(tái)命令來執(zhí)行程序,那直接跟在Java命令之后書寫就可以。如果讀者使用Eclipse IDE,則可以參考圖2-4在Debug/Run頁簽中的設(shè)置。

下文的代碼都是基于Sun公司的HotSpot虛擬機(jī)運(yùn)行的,對(duì)于不同公司的不同版本的虛擬機(jī),參數(shù)和程序運(yùn)行的結(jié)果可能會(huì)有所差別。

2.4.1 Java 堆溢出

Java堆用于存儲(chǔ)對(duì)象實(shí)例,只要不斷地創(chuàng)建對(duì)象,并且保證GC Roots 到對(duì)象之間有可達(dá)路徑來避免垃圾回收機(jī)制清除這些對(duì)象,那么在對(duì)象數(shù)量到達(dá)最大堆的容量限制后就會(huì)產(chǎn)生內(nèi)存溢出異常。代碼清單2-3中代碼限制Java堆的大小為20MB,不可擴(kuò)展(將堆的最小值-Xms參數(shù)與最大值_Xmx參數(shù)設(shè)置為- -樣即可避免堆自動(dòng)擴(kuò)展),通過參數(shù)-X:+HeapDumpOnOutOfMemoryEror可
以讓虛擬機(jī)在出現(xiàn)內(nèi)存溢出異常時(shí)Dump出當(dāng)前的內(nèi)存堆轉(zhuǎn)儲(chǔ)快照以便事后進(jìn)行分析。

?

Java堆內(nèi)存的OutOfMemoryError異常是實(shí)際應(yīng)用中最常見的內(nèi)存溢出異常情況。出現(xiàn)Java堆內(nèi)存 溢出時(shí),異常堆棧信息“java.lang.OutOfMemoryError”會(huì)跟隨進(jìn)一步提示“Java heap space”。
要解決這個(gè)內(nèi)存區(qū)域的異常,常規(guī)的處理方法是首先通過內(nèi)存映像分析工具(如Eclipse Memory Analyzer)對(duì)Dump出來的堆轉(zhuǎn)儲(chǔ)快照進(jìn)行分析。第一步首先應(yīng)確認(rèn)內(nèi)存中導(dǎo)致OOM的對(duì)象是否是必 要的,也就是要先分清楚到底是出現(xiàn)了內(nèi)存泄漏(Memory Leak)還是內(nèi)存溢出(Memory Overflow)。圖2-5顯示了使用Eclipse Memory Analyzer打開的堆轉(zhuǎn)儲(chǔ)快照文件。


如果是內(nèi)存泄漏,可進(jìn)一步通過工具查看泄漏對(duì)象到GC Roots的引用鏈,找到泄漏對(duì)象是通過怎 樣的引用路徑、與哪些GC Roots相關(guān)聯(lián),才導(dǎo)致垃圾收集器無法回收它們,根據(jù)泄漏對(duì)象的類型信息 以及它到GC Roots引用鏈的信息,一般可以比較準(zhǔn)確地定位到這些對(duì)象創(chuàng)建的位置,進(jìn)而找出產(chǎn)生內(nèi) 存泄漏的代碼的具體位置。

如果不是內(nèi)存泄漏,換句話說就是內(nèi)存中的對(duì)象確實(shí)都是必須存活的,那就應(yīng)當(dāng)檢查Java虛擬機(jī) 的堆參數(shù)(-Xmx與-Xms)設(shè)置,與機(jī)器的內(nèi)存對(duì)比,看看是否還有向上調(diào)整的空間。再從代碼上檢查 是否存在某些對(duì)象生命周期過長、持有狀態(tài)時(shí)間過長、存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)不合理等情況,盡量減少程序運(yùn) 行期的內(nèi)存消耗。
以上是處理Java堆內(nèi)存問題的簡略思路,處理這些問題所需要的知識(shí)、工具與經(jīng)驗(yàn)是后面三章的 主題,后面我們將會(huì)針對(duì)具體的虛擬機(jī)實(shí)現(xiàn)、具體的垃圾收集器和具體的案例來進(jìn)行分析,這里就先 暫不展開。
?

2.4.2 虛擬機(jī)棧和本地方法棧溢出

由于HotSpot虛擬機(jī)中并不區(qū)分虛擬機(jī)棧和本地方法棧,因此對(duì)于HotSpot來說,-Xoss參數(shù)(設(shè)置 本地方法棧大小)雖然存在,但實(shí)際上是沒有任何效果的,棧容量只能由-Xss參數(shù)來設(shè)定。關(guān)于虛擬 機(jī)棧和本地方法棧,在《Java虛擬機(jī)規(guī)范》中描述了兩種異常:
1)如果線程請(qǐng)求的棧深度大于虛擬機(jī)所允許的最大深度,將拋出StackOverflowError異常。
2)如果虛擬機(jī)的棧內(nèi)存允許動(dòng)態(tài)擴(kuò)展,當(dāng)擴(kuò)展棧容量無法申請(qǐng)到足夠的內(nèi)存時(shí),將拋出 OutOfMemoryError異常。
《Java虛擬機(jī)規(guī)范》明確允許Java虛擬機(jī)實(shí)現(xiàn)自行選擇是否支持棧的動(dòng)態(tài)擴(kuò)展,而HotSpot虛擬機(jī) 的選擇是不支持?jǐn)U展,所以除非在創(chuàng)建線程申請(qǐng)內(nèi)存時(shí)就因無法獲得足夠內(nèi)存而出現(xiàn) OutOfMemoryError異常,否則在線程運(yùn)行時(shí)是不會(huì)因?yàn)閿U(kuò)展而導(dǎo)致內(nèi)存溢出的,只會(huì)因?yàn)闂H萘繜o法 容納新的棧幀而導(dǎo)致StackOverflowError異常。
為了驗(yàn)證這點(diǎn),我們可以做兩個(gè)實(shí)驗(yàn),先將實(shí)驗(yàn)范圍限制在單線程中操作,嘗試下面兩種行為是 否能讓HotSpot虛擬機(jī)產(chǎn)生OutOfMemoryError異常:
·使用-Xss參數(shù)減少棧內(nèi)存容量。
結(jié)果:拋出StackOverflowError異常,異常出現(xiàn)時(shí)輸出的堆棧深度相應(yīng)縮小。
·定義了大量的本地變量,增大此方法幀中本地變量表的長度。
結(jié)果:拋出StackOverflowError異常,異常出現(xiàn)時(shí)輸出的堆棧深度相應(yīng)縮小。
首先,對(duì)第一種情況進(jìn)行測試,具體如代碼清單2-4所示。
代碼清單2-4 虛擬機(jī)棧和本地方法棧測試(作為第1點(diǎn)測試程序)

/** * VM Args: -Xss128k * @author zzm */ public class JavaVMStackSOF {private int stackLength = 1;public void stackLeak() {stackLength++ ;stackLeak () ;}public static void main (String[] args) throws Throwable {JavaVMStackSOF oom = new JavaVMStackSOF() ;try {oom. stackLeak() ;} catch (Throwable e) {System. out.println("stack length:" + oom. stackLength) ;throw e ;}}}

對(duì)于不同版本的Java虛擬機(jī)和不同的操作系統(tǒng),棧容量最小值可能會(huì)有所限制,這主要取決于操 作系統(tǒng)內(nèi)存分頁大小。譬如上述方法中的參數(shù)-Xss128k可以正常用于32位Windows系統(tǒng)下的JDK 6,但 是如果用于64位Windows系統(tǒng)下的JDK 11,則會(huì)提示棧容量最小不能低于180K,而在Linux下這個(gè)值則 可能是228K,如果低于這個(gè)最小限制,HotSpot虛擬器啟動(dòng)時(shí)會(huì)給出如下提示:

?我們繼續(xù)驗(yàn)證第二種情況,這次代碼就顯得有些“丑陋”了,為了多占局部變量表空間,筆者不得 不定義一長串變量,具體如代碼清單2-5所示。
代碼清單2-5 虛擬機(jī)棧和本地方法棧測試(作為第2點(diǎn)測試程序)

/** * Qauthor zzm */ public class JavaVMStackSOF {private static int stackLength = 0;public static void test () {long unused1, unused2, unused3, unused4, unused5, unused6, unused7, unused8, unused9, unused10,unused11, unused12, unused13, unused14, unused15,unused16, unused17, unused18, unused19, unused20,unused21, unused22, unused23, unused24, unused25,unused26, unused27, unused28, unused29, unused30,unused31, unused32, unused33, unused34, unused35,unused36, unused37, unused38, unused39, unused40,unused41, unused42, unused43, unused44, unused45,unused46, unused47, unused48, unused49, unused50,unused51, unused52, unused53, unused54, unused55,unused56, unused57, unused58, unused59, unused60,unused61, unused62, unused63, unused64, unused65,unused66, unused67, unused68, unused69, unused70,unused71, unused72, unused73, unused74, unused75,unused76, unused77, unused78, unused79, unused80,unused81, unused82, unused83, unused84, unused85,unused86, unused87, unused88, unused89, unused90,unused91, unused92, unused93, unused94, unused95,unused96, unused97, unused98, unused99, unused100;stackLength ++;test() ;unused1 = unused2 = unused3 = unused4 = unused5 =unused6 = unused7 = unused8 = unused9 = unused10 =unused11 = unused12 = unused13 = unused14 = unused15 =unused16 = unused17 = unused18 = unused19 = unused20 =unused21 = unused22 = unused23 = unused24 = unused25 =unused26 = unused27 = unused28 = unused29 = unused30 = unused31 = unused32 = unused33 = unused34 = unused35 = unused36 = unused37 = unused38 = unused39 = unused40 = unused41 = unused42 = unused43 = unused44 = unused45 = unused46 = unused47 = unused48 = unused49 = unused50 = unused51 = unused52 = unused53 = unused54 = unused55 = unused56 = unused57 = unused58 = unused59 = unused60 = unused61 = unused62 = unused63 = unused64 = unused65 = unused66 = unused67 = unused68 = unused69 = unused70 = unused71 = unused72 = unused73 = unused74 = unused75 = unused76 = unused77 = unused78 = unused79 = unused80 = unused81 = unused82 = unused83 = unused84 = unused85 = unused86 = unused87 = unused88 = unused89 = unused90 = unused91 = unused92 = unused93 = unused94 = unused95 = unused96 = unused97 = unused98 = unused99 = unused100 = 0; } public static void main(String[] args) { try { test(); }catch (Error e){ System.out.println("stack length:" + stackLength); throw e; } } }

?運(yùn)行結(jié)果:

stack length:5675 Exception in thread "main" java.lang.StackOverflowError at org.fenixsoft.oom. JavaVMStackSOF.leak(JavaVMStackSOF.java:27) at org.fenixsoft.oom. JavaVMStackSOF.leak(JavaVMStackSOF.java:28) at org.fenixsoft.oom. JavaVMStackSOF.leak(JavaVMStackSOF.java:28) ……后續(xù)異常堆棧信息省略

實(shí)驗(yàn)結(jié)果表明:無論是由于棧幀太大還是虛擬機(jī)棧容量太小,當(dāng)新的棧幀內(nèi)存無法分配的時(shí)候, HotSpot虛擬機(jī)拋出的都是StackOverflowError異常。可是如果在允許動(dòng)態(tài)擴(kuò)展棧容量大小的虛擬機(jī) 上,相同代碼則會(huì)導(dǎo)致不一樣的情況。譬如遠(yuǎn)古時(shí)代的Classic虛擬機(jī),這款虛擬機(jī)可以支持動(dòng)態(tài)擴(kuò)展 棧內(nèi)存的容量,在Windows上的JDK 1.0.2運(yùn)行代碼清單2-5的話(如果這時(shí)候要調(diào)整棧容量就應(yīng)該改 用-oss參數(shù)了),得到的結(jié)果是:

stack length:3716 java.lang.OutOfMemoryError at org.fenixsoft.oom. JavaVMStackSOF.leak(JavaVMStackSOF.java:27) at org.fenixsoft.oom. JavaVMStackSOF.leak(JavaVMStackSOF.java:28) at org.fenixsoft.oom. JavaVMStackSOF.leak(JavaVMStackSOF.java:28) ……后續(xù)異常堆棧信息省略

可見相同的代碼在Classic虛擬機(jī)中成功產(chǎn)生了OutOfMemoryError而不是StackOver-flowError異 常。如果測試時(shí)不限于單線程,通過不斷建立線程的方式,在HotSpot上也是可以產(chǎn)生內(nèi)存溢出異常 的,具體如代碼清單2-6所示。但是這樣產(chǎn)生的內(nèi)存溢出異常和棧空間是否足夠并不存在任何直接的關(guān) 系,主要取決于操作系統(tǒng)本身的內(nèi)存使用狀態(tài)。甚至可以說,在這種情況下,給每個(gè)線程的棧分配的 內(nèi)存越大,反而越容易產(chǎn)生內(nèi)存溢出異常。
原因其實(shí)不難理解,操作系統(tǒng)分配給每個(gè)進(jìn)程的內(nèi)存是有限制的,譬如32位Windows的單個(gè)進(jìn)程 最大內(nèi)存限制為2GB。HotSpot虛擬機(jī)提供了參數(shù)可以控制Java堆和方法區(qū)這兩部分的內(nèi)存的最大值,

那剩余的內(nèi)存即為2GB(操作系統(tǒng)限制)減去最大堆容量,再減去最大方法區(qū)容量,由于程序計(jì)數(shù)器 消耗內(nèi)存很小,可以忽略掉,如果把直接內(nèi)存和虛擬機(jī)進(jìn)程本身耗費(fèi)的內(nèi)存也去掉的話,剩下的內(nèi)存 就由虛擬機(jī)棧和本地方法棧來分配了。因此為每個(gè)線程分配到的棧內(nèi)存越大,可以建立的線程數(shù)量自 然就越少,建立線程時(shí)就越容易把剩下的內(nèi)存耗盡,代碼清單2-6演示了這種情況。
代碼清單2-6 創(chuàng)建線程導(dǎo)致內(nèi)存溢出異常
?

/** * VM Args:-Xss2M *(這時(shí)候不妨設(shè)大些,請(qǐng)?jiān)?2位系統(tǒng)下運(yùn)行) * @author zzm */ public class JavaVMStackOOM { private void dontStop() { while (true) { } } public void stackLeakByThread() { while (true) { Thread thread = new Thread(new Runnable() { @Override public void run() { dontStop(); } }); thread.start(); } } public static void main(String[] args) throws Throwable { JavaVMStackOOM oom = new JavaVMStackOOM(); oom.stackLeakByThread(); } }

注意 重點(diǎn)提示一下,如果讀者要嘗試運(yùn)行上面這段代碼,記得要先保存當(dāng)前的工作,由于在 Windows平臺(tái)的虛擬機(jī)中,Java的線程是映射到操作系統(tǒng)的內(nèi)核線程上[1],無限制地創(chuàng)建線程會(huì)對(duì)操 作系統(tǒng)帶來很大壓力,上述代碼執(zhí)行時(shí)有很高的風(fēng)險(xiǎn),可能會(huì)由于創(chuàng)建線程數(shù)量過多而導(dǎo)致操作系統(tǒng) 假死。

出現(xiàn)StackOverflowError異常時(shí),會(huì)有明確錯(cuò)誤堆棧可供分析,相對(duì)而言比較容易定位到問題所 在。如果使用HotSpot虛擬機(jī)默認(rèn)參數(shù),棧深度在大多數(shù)情況下(因?yàn)槊總€(gè)方法壓入棧的幀大小并不是 一樣的,所以只能說大多數(shù)情況下)到達(dá)1000~2000是完全沒有問題,對(duì)于正常的方法調(diào)用(包括不能 做尾遞歸優(yōu)化的遞歸調(diào)用),這個(gè)深度應(yīng)該完全夠用了。但是,如果是建立過多線程導(dǎo)致的內(nèi)存溢 出,在不能減少線程數(shù)量或者更換64位虛擬機(jī)的情況下,就只能通過減少最大堆和減少棧容量來換取 更多的線程。這種通過“減少內(nèi)存”的手段來解決內(nèi)存溢出的方式,如果沒有這方面處理經(jīng)驗(yàn),一般比 較難以想到,這一點(diǎn)讀者需要在開發(fā)32位系統(tǒng)的多線程應(yīng)用時(shí)注意。也是由于這種問題較為隱蔽,從 JDK 7起,以上提示信息中“unable to create native thread”后面,虛擬機(jī)會(huì)特別注明原因可能是“possibly out of memory or process/resource limits reached”。

2.4.3 方法區(qū)和運(yùn)行時(shí)常量池溢出

由于運(yùn)行時(shí)常量池是方法區(qū)的一部分,所以這兩個(gè)區(qū)域的溢出測試可以放到一起進(jìn)行。前面曾經(jīng) 提到HotSpot從JDK 7開始逐步“去永久代”的計(jì)劃,并在JDK 8中完全使用元空間來代替永久代的背景 故事,在此我們就以測試代碼來觀察一下,使用“永久代”還是“元空間”來實(shí)現(xiàn)方法區(qū),對(duì)程序有什么 實(shí)際的影響。
String::intern()是一個(gè)本地方法,它的作用是如果字符串常量池中已經(jīng)包含一個(gè)等于此String對(duì)象的 字符串,則返回代表池中這個(gè)字符串的String對(duì)象的引用;否則,會(huì)將此String對(duì)象包含的字符串添加 到常量池中,并且返回此String對(duì)象的引用。在JDK 6或更早之前的HotSpot虛擬機(jī)中,常量池都是分配 在永久代中,我們可以通過-XX:PermSize和-XX:MaxPermSize限制永久代的大小,即可間接限制其 中常量池的容量,具體實(shí)現(xiàn)如代碼清單2-7所示,請(qǐng)讀者測試時(shí)首先以JDK 6來運(yùn)行代碼

代碼清單2-7 運(yùn)行時(shí)常量池導(dǎo)致的內(nèi)存溢出異常

/** * VM Args:-XX:PermSize=6M * -XX:MaxPermSize=6M * @author zzm */ public class RuntimeConstantPoolOOM { public static void main(String[] args) { // 使用Set保持著常量池引用,避免Full GC回收常量池行為 Set<String> set = new HashSet<String>(); // 在short范圍內(nèi)足以讓6MB的PermSize產(chǎn)生OOM了 short i = 0; while (true) { set.add(String.valueOf(i++).intern()); } } }


?從運(yùn)行結(jié)果中可以看到,運(yùn)行時(shí)常量池溢出時(shí),在OutOfMemoryError異常后面跟隨的提示信息 是“PermGen space”,說明運(yùn)行時(shí)常量池的確是屬于方法區(qū)(即JDK 6的HotSpot虛擬機(jī)中的永久代)的 一部分。
而使用JDK 7或更高版本的JDK來運(yùn)行這段程序并不會(huì)得到相同的結(jié)果,無論是在JDK 7中繼續(xù)使 用-XX:MaxPermSize參數(shù)或者在JDK 8及以上版本使用-XX:MaxMeta-spaceSize參數(shù)把方法區(qū)容量同 樣限制在6MB,也都不會(huì)重現(xiàn)JDK 6中的溢出異常,循環(huán)將一直進(jìn)行下去,永不停歇[1]。出現(xiàn)這種變 化,是因?yàn)樽訨DK 7起,原本存放在永久代的字符串常量池被移至Java堆之中,所以在JDK 7及以上版 本,限制方法區(qū)的容量對(duì)該測試用例來說是毫無意義的。這時(shí)候使用-Xmx參數(shù)限制最大堆到6MB就能 夠看到以下兩種運(yùn)行結(jié)果之一,具體取決于哪里的對(duì)象分配時(shí)產(chǎn)生了溢出:

關(guān)于這個(gè)字符串常量池的實(shí)現(xiàn)在哪里出現(xiàn)問題,還可以引申出一些更有意思的影響,具體見代碼 清單2-8所示。
代碼清單2-8 String.intern()返回引用的測試

public class RuntimeConstantPoolOOM { public static void main(String[] args) { String str1 = new StringBuilder("計(jì)算機(jī)").append("軟件").toString(); System.out.println(str1.intern() == str1); String str2 = new StringBuilder("ja").append("va").toString(); System.out.println(str2.intern() == str2); } }

?這段代碼在JDK 6中運(yùn)行,會(huì)得到兩個(gè)false,而在JDK 7中運(yùn)行,會(huì)得到一個(gè)true和一個(gè)false。產(chǎn) 生差異的原因是,在JDK 6中,intern()方法會(huì)把首次遇到的字符串實(shí)例復(fù)制到永久代的字符串常量池 中存儲(chǔ),返回的也是永久代里面這個(gè)字符串實(shí)例的引用,而由StringBuilder創(chuàng)建的字符串對(duì)象實(shí)例在 Java堆上,所以必然不可能是同一個(gè)引用,結(jié)果將返回false。
而JDK 7(以及部分其他虛擬機(jī),例如JRockit)的intern()方法實(shí)現(xiàn)就不需要再拷貝字符串的實(shí)例 到永久代了,既然字符串常量池已經(jīng)移到Java堆中,那只需要在常量池里記錄一下首次出現(xiàn)的實(shí)例引 用即可,因此intern()返回的引用和由StringBuilder創(chuàng)建的那個(gè)字符串實(shí)例就是同一個(gè)。而對(duì)str2比較返 回false,這是因?yàn)椤癹ava”[2]這個(gè)字符串在執(zhí)行String-Builder.toString()之前就已經(jīng)出現(xiàn)過了,字符串常量 池中已經(jīng)有它的引用,不符合intern()方法要求“首次遇到”的原則,“計(jì)算機(jī)軟件”這個(gè)字符串則是首次 出現(xiàn)的,因此結(jié)果返回true。
我們?cè)賮砜纯捶椒▍^(qū)的其他部分的內(nèi)容,方法區(qū)的主要職責(zé)是用于存放類型的相關(guān)信息,如類 名、訪問修飾符、常量池、字段描述、方法描述等。對(duì)于這部分區(qū)域的測試,基本的思路是運(yùn)行時(shí)產(chǎn) 生大量的類去填滿方法區(qū),直到溢出為止。雖然直接使用Java SE API也可以動(dòng)態(tài)產(chǎn)生類(如反射時(shí)的 GeneratedConstructorAccessor和動(dòng)態(tài)代理等),但在本次實(shí)驗(yàn)中操作起來比較麻煩。在代碼清單2-8里 筆者借助了CGLib[3]直接操作字節(jié)碼運(yùn)行時(shí)生成了大量的動(dòng)態(tài)類。
值得特別注意的是,我們?cè)谶@個(gè)例子中模擬的場景并非純粹是一個(gè)實(shí)驗(yàn),類似這樣的代碼確實(shí)可 能會(huì)出現(xiàn)在實(shí)際應(yīng)用中:當(dāng)前的很多主流框架,如Spring、Hibernate對(duì)類進(jìn)行增強(qiáng)時(shí),都會(huì)使用到 CGLib這類字節(jié)碼技術(shù),當(dāng)增強(qiáng)的類越多,就需要越大的方法區(qū)以保證動(dòng)態(tài)生成的新類型可以載入內(nèi)存。另外,很多運(yùn)行于Java虛擬機(jī)上的動(dòng)態(tài)語言(例如Groovy等)通常都會(huì)持續(xù)創(chuàng)建新類型來支撐語 言的動(dòng)態(tài)性,隨著這類動(dòng)態(tài)語言的流行,與代碼清單2-9相似的溢出場景也越來越容易遇到。


代碼清單2-9 借助CGLib使得方法區(qū)出現(xiàn)內(nèi)存溢出異常

方法區(qū)溢出也是一種常見的內(nèi)存溢出異常,一個(gè)類如果要被垃圾收集器回收,要達(dá)成的條件是比 較苛刻的。在經(jīng)常運(yùn)行時(shí)生成大量動(dòng)態(tài)類的應(yīng)用場景里,就應(yīng)該特別關(guān)注這些類的回收狀況。這類場 景除了之前提到的程序使用了CGLib字節(jié)碼增強(qiáng)和動(dòng)態(tài)語言外,常見的還有:大量JSP或動(dòng)態(tài)產(chǎn)生JSP 文件的應(yīng)用(JSP第一次運(yùn)行時(shí)需要編譯為Java類)、基于OSGi的應(yīng)用(即使是同一個(gè)類文件,被不同 的加載器加載也會(huì)視為不同的類)等。
在JDK 8以后,永久代便完全退出了歷史舞臺(tái),元空間作為其替代者登場。在默認(rèn)設(shè)置下,前面 列舉的那些正常的動(dòng)態(tài)創(chuàng)建新類型的測試用例已經(jīng)很難再迫使虛擬機(jī)產(chǎn)生方法區(qū)的溢出異常了。不過 為了讓使用者有預(yù)防實(shí)際應(yīng)用里出現(xiàn)類似于代碼清單2-9那樣的破壞性的操作,HotSpot還是提供了一 些參數(shù)作為元空間的防御措施,主要包括:
·-XX:MaxMetaspaceSize:設(shè)置元空間最大值,默認(rèn)是-1,即不限制,或者說只受限于本地內(nèi)存 大小。
·-XX:MetaspaceSize:指定元空間的初始空間大小,以字節(jié)為單位,達(dá)到該值就會(huì)觸發(fā)垃圾收集 進(jìn)行類型卸載,同時(shí)收集器會(huì)對(duì)該值進(jìn)行調(diào)整:如果釋放了大量的空間,就適當(dāng)降低該值;如果釋放 了很少的空間,那么在不超過-XX:MaxMetaspaceSize(如果設(shè)置了的話)的情況下,適當(dāng)提高該值。
·-XX:MinMetaspaceFreeRatio:作用是在垃圾收集之后控制最小的元空間剩余容量的百分比,可 減少因?yàn)樵臻g不足導(dǎo)致的垃圾收集的頻率。類似的還有-XX:Max-MetaspaceFreeRatio,用于控制最 大的元空間剩余容量的百分比。?

[1] 正常情況下是永不停歇的,如果機(jī)器內(nèi)存緊張到連幾MB的Java堆都擠不出來的這種極端情況就不 討論了。 [2] 它是在加載sun.misc.Version這個(gè)類的時(shí)候進(jìn)入常量池的。本書第2版并未解釋java這個(gè)字符串此前是 哪里出現(xiàn)的,所以被批評(píng)“挖坑不填了”(無奈地?cái)偸?#xff09;。如讀者感興趣是如何找出來的,可參考RednaxelaFX的知乎回答(https://www.zhihu.com/question/51102308/answer/124441115)。 [3] CGLib開源項(xiàng)目:http://cglib.sourceforge.net/。

2.4.4 本機(jī)直接內(nèi)存溢出

直接內(nèi)存(Direct Memory)的容量大小可通過-XX:MaxDirectMemorySize參數(shù)來指定,如果不 去指定,則默認(rèn)與Java堆最大值(由-Xmx指定)一致,代碼清單2-10越過了DirectByteBuffer類直接通 過反射獲取Unsafe實(shí)例進(jìn)行內(nèi)存分配(Unsafe類的getUnsafe()方法指定只有引導(dǎo)類加載器才會(huì)返回實(shí) 例,體現(xiàn)了設(shè)計(jì)者希望只有虛擬機(jī)標(biāo)準(zhǔn)類庫里面的類才能使用Unsafe的功能,在JDK 10時(shí)才將Unsafe 的部分功能通過VarHandle開放給外部使用),因?yàn)殡m然使用DirectByteBuffer分配內(nèi)存也會(huì)拋出內(nèi)存溢 出異常,但它拋出異常時(shí)并沒有真正向操作系統(tǒng)申請(qǐng)分配內(nèi)存,而是通過計(jì)算得知內(nèi)存無法分配就會(huì) 在代碼里手動(dòng)拋出溢出異常,真正申請(qǐng)分配內(nèi)存的方法是Unsafe::allocateMemory()。

代碼清單2-10 使用unsafe分配本機(jī)內(nèi)存

?

?由直接內(nèi)存導(dǎo)致的內(nèi)存溢出,一個(gè)明顯的特征是在Heap Dump文件中不會(huì)看見有什么明顯的異常 情況,如果讀者發(fā)現(xiàn)內(nèi)存溢出之后產(chǎn)生的Dump文件很小,而程序中又直接或間接使用了 DirectMemory(典型的間接使用就是NIO),那就可以考慮重點(diǎn)檢查一下直接內(nèi)存方面的原因了。

2.5 本章小結(jié)

到此為止,我們明白了虛擬機(jī)里面的內(nèi)存是如何劃分的,哪部分區(qū)域、什么樣的代碼和操作可能 導(dǎo)致內(nèi)存溢出異常。雖然Java有垃圾收集機(jī)制,但內(nèi)存溢出異常離我們并不遙遠(yuǎn),本章只是講解了各 個(gè)區(qū)域出現(xiàn)內(nèi)存溢出異常的原因,下一章將詳細(xì)講解Java垃圾收集機(jī)制為了避免出現(xiàn)內(nèi)存溢出異常都 做了哪些努力。

總結(jié)

以上是生活随笔為你收集整理的《深入理解java虚拟机》第2章 Java内存区域与内存溢出异常的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

老子影院午夜精品无码 | 人妻aⅴ无码一区二区三区 | 亚洲成av人综合在线观看 | 国产麻豆精品一区二区三区v视界 | 亚洲一区二区三区无码久久 | 精品熟女少妇av免费观看 | 香蕉久久久久久av成人 | av无码电影一区二区三区 | 精品国产麻豆免费人成网站 | 国产免费无码一区二区视频 | 亚洲 a v无 码免 费 成 人 a v | 一本久道久久综合狠狠爱 | 欧美国产日产一区二区 | 又大又黄又粗又爽的免费视频 | 露脸叫床粗话东北少妇 | 午夜精品久久久久久久久 | 午夜精品久久久内射近拍高清 | 久久精品一区二区三区四区 | 国产内射老熟女aaaa | 丰满护士巨好爽好大乳 | 欧美人与牲动交xxxx | 亚洲中文字幕在线观看 | 国产亚洲精品久久久久久久 | 国产激情精品一区二区三区 | 午夜理论片yy44880影院 | 最近免费中文字幕中文高清百度 | 精品水蜜桃久久久久久久 | 亚洲日韩一区二区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品无人国产偷自产在线 | 无码任你躁久久久久久久 | 国内精品九九久久久精品 | 久久久久国色av免费观看性色 | 亚洲欧洲日本无在线码 | 又色又爽又黄的美女裸体网站 | √8天堂资源地址中文在线 | 国产黑色丝袜在线播放 | 中文久久乱码一区二区 | 亚洲成av人影院在线观看 | 亚洲日本va午夜在线电影 | 国产特级毛片aaaaaaa高清 | 亚洲日韩一区二区 | 娇妻被黑人粗大高潮白浆 | 最近免费中文字幕中文高清百度 | 成人试看120秒体验区 | 午夜福利一区二区三区在线观看 | 国产色xx群视频射精 | 欧美亚洲国产一区二区三区 | 精品国精品国产自在久国产87 | 扒开双腿吃奶呻吟做受视频 | 中文字幕无码乱人伦 | 又大又硬又黄的免费视频 | 十八禁视频网站在线观看 | 国产精品第一国产精品 | 精品无人区无码乱码毛片国产 | 女人被男人爽到呻吟的视频 | 亚洲小说图区综合在线 | 欧美一区二区三区视频在线观看 | 色婷婷欧美在线播放内射 | 夜先锋av资源网站 | 中文字幕 人妻熟女 | 欧美亚洲日韩国产人成在线播放 | 国产精品嫩草久久久久 | 人人妻人人澡人人爽欧美一区九九 | 5858s亚洲色大成网站www | 任你躁在线精品免费 | 97资源共享在线视频 | 日日橹狠狠爱欧美视频 | 久久国产精品_国产精品 | 国产成人综合美国十次 | 国产成人无码av一区二区 | 伊人久久婷婷五月综合97色 | 人妻夜夜爽天天爽三区 | 国产人妻久久精品二区三区老狼 | 两性色午夜视频免费播放 | 青草青草久热国产精品 | 精品欧美一区二区三区久久久 | 美女极度色诱视频国产 | 青青青爽视频在线观看 | 国产精品18久久久久久麻辣 | 国产精品国产自线拍免费软件 | 久久亚洲国产成人精品性色 | 国产综合久久久久鬼色 | 中文字幕无码热在线视频 | 女人色极品影院 | 国产综合久久久久鬼色 | 国产综合色产在线精品 | 波多野结衣一区二区三区av免费 | 少妇无码吹潮 | 少妇无套内谢久久久久 | 亚洲成av人片天堂网无码】 | 久久久精品人妻久久影视 | 久久久精品人妻久久影视 | 国产精品久久精品三级 | 日韩精品无码一本二本三本色 | 国产人妻精品一区二区三区 | 99久久久国产精品无码免费 | 日韩 欧美 动漫 国产 制服 | 国产乡下妇女做爰 | 免费乱码人妻系列无码专区 | 国产精品无套呻吟在线 | 亚洲中文字幕无码中文字在线 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美日韩一区二区三区自拍 | 中文字幕 亚洲精品 第1页 | 天天躁夜夜躁狠狠是什么心态 | 无码av免费一区二区三区试看 | 日韩欧美群交p片內射中文 | 成人欧美一区二区三区黑人免费 | 国产亚洲人成在线播放 | 日韩视频 中文字幕 视频一区 | 久精品国产欧美亚洲色aⅴ大片 | 成熟人妻av无码专区 | 狠狠色色综合网站 | 欧美国产亚洲日韩在线二区 | 亚洲 激情 小说 另类 欧美 | 国产精品办公室沙发 | 亚洲成熟女人毛毛耸耸多 | 欧美日韩人成综合在线播放 | 图片区 小说区 区 亚洲五月 | 中文字幕人妻无码一区二区三区 | 中文字幕乱码人妻无码久久 | 黑人玩弄人妻中文在线 | 亚洲人成影院在线无码按摩店 | 成人精品视频一区二区三区尤物 | 色综合久久久久综合一本到桃花网 | 人妻体内射精一区二区三四 | 日韩亚洲欧美中文高清在线 | 激情亚洲一区国产精品 | 色妞www精品免费视频 | 国产黄在线观看免费观看不卡 | 久久亚洲精品中文字幕无男同 | 国产手机在线αⅴ片无码观看 | 亚洲第一网站男人都懂 | 精品久久8x国产免费观看 | 奇米影视7777久久精品 | 日韩av无码中文无码电影 | 人妻少妇被猛烈进入中文字幕 | 人妻少妇精品久久 | 玩弄人妻少妇500系列视频 | 天天躁夜夜躁狠狠是什么心态 | 久久精品国产大片免费观看 | 成人精品一区二区三区中文字幕 | 午夜嘿嘿嘿影院 | 亚洲精品久久久久久久久久久 | 国产高清不卡无码视频 | 人妻与老人中文字幕 | 狠狠亚洲超碰狼人久久 | 日韩人妻少妇一区二区三区 | 内射爽无广熟女亚洲 | 99久久亚洲精品无码毛片 | 国产特级毛片aaaaaaa高清 | 亚洲の无码国产の无码影院 | 国产亚洲精品久久久久久国模美 | 国产麻豆精品一区二区三区v视界 | 亚洲小说图区综合在线 | 国产真人无遮挡作爱免费视频 | 亚洲精品午夜国产va久久成人 | 国产真实乱对白精彩久久 | 丰满少妇女裸体bbw | 乱人伦人妻中文字幕无码久久网 | 香港三级日本三级妇三级 | 精品国产福利一区二区 | 欧美喷潮久久久xxxxx | 女人被男人躁得好爽免费视频 | 婷婷丁香六月激情综合啪 | 国产偷国产偷精品高清尤物 | 少女韩国电视剧在线观看完整 | 国产精品无码一区二区三区不卡 | 无码精品国产va在线观看dvd | 久久人人爽人人爽人人片ⅴ | 亚洲成色在线综合网站 | 97精品国产97久久久久久免费 | 午夜福利一区二区三区在线观看 | 又大又紧又粉嫩18p少妇 | 美女扒开屁股让男人桶 | 午夜福利一区二区三区在线观看 | 欧美激情内射喷水高潮 | 亚洲成a人片在线观看无码3d | 欧美精品免费观看二区 | 色综合天天综合狠狠爱 | 老子影院午夜精品无码 | 一本久久a久久精品亚洲 | 88国产精品欧美一区二区三区 | 亚洲成在人网站无码天堂 | 亚洲精品久久久久久一区二区 | 三上悠亚人妻中文字幕在线 | 亚洲精品国产品国语在线观看 | 人妻中文无码久热丝袜 | 欧美一区二区三区 | 色一情一乱一伦一视频免费看 | 无码国产乱人伦偷精品视频 | 日本丰满护士爆乳xxxx | 国产性生交xxxxx无码 | 国产人妻大战黑人第1集 | 18精品久久久无码午夜福利 | 人妻熟女一区 | 国产在线无码精品电影网 | 国内揄拍国内精品人妻 | 国产又粗又硬又大爽黄老大爷视 | 久久这里只有精品视频9 | 中文字幕日韩精品一区二区三区 | 黑人大群体交免费视频 | 国产精品久久久 | 自拍偷自拍亚洲精品10p | ass日本丰满熟妇pics | 妺妺窝人体色www在线小说 | 日日摸夜夜摸狠狠摸婷婷 | 成人无码精品一区二区三区 | 久久久久亚洲精品男人的天堂 | 日日碰狠狠丁香久燥 | 久久精品成人欧美大片 | 国产97在线 | 亚洲 | 黑人巨大精品欧美一区二区 | 亚洲一区二区三区无码久久 | 国产熟妇另类久久久久 | 欧美性色19p | 国产三级久久久精品麻豆三级 | 午夜精品久久久久久久久 | 精品人妻av区 | 一本色道婷婷久久欧美 | 少妇激情av一区二区 | 天天拍夜夜添久久精品 | 国产三级久久久精品麻豆三级 | 久久综合九色综合97网 | 黑人巨大精品欧美一区二区 | 国产高清av在线播放 | 国产sm调教视频在线观看 | 亚洲热妇无码av在线播放 | 超碰97人人做人人爱少妇 | 亚洲色在线无码国产精品不卡 | 亚洲天堂2017无码中文 | а√天堂www在线天堂小说 | 日本xxxx色视频在线观看免费 | 欧美自拍另类欧美综合图片区 | 婷婷丁香六月激情综合啪 | 国产无遮挡又黄又爽又色 | 日本一卡二卡不卡视频查询 | 亚洲欧美精品伊人久久 | 亚洲中文字幕无码中文字在线 | 一本久道高清无码视频 | 老熟女乱子伦 | 久久亚洲精品中文字幕无男同 | 麻豆人妻少妇精品无码专区 | 奇米影视7777久久精品人人爽 | 俺去俺来也www色官网 | 噜噜噜亚洲色成人网站 | 在线精品亚洲一区二区 | 亚洲色欲色欲欲www在线 | 成人毛片一区二区 | 大乳丰满人妻中文字幕日本 | 一本精品99久久精品77 | 青草青草久热国产精品 | 精品国产一区av天美传媒 | 日日碰狠狠丁香久燥 | 鲁鲁鲁爽爽爽在线视频观看 | 国产成人精品三级麻豆 | 欧美猛少妇色xxxxx | 免费人成在线视频无码 | 国产成人无码一二三区视频 | 日日躁夜夜躁狠狠躁 | 奇米影视7777久久精品人人爽 | 天堂а√在线地址中文在线 | 狠狠cao日日穞夜夜穞av | 一本久久伊人热热精品中文字幕 | 少妇性俱乐部纵欲狂欢电影 | 性啪啪chinese东北女人 | 中文字幕无线码 | 国产精品多人p群无码 | 无码av中文字幕免费放 | 久久久久久久久蜜桃 | 成人片黄网站色大片免费观看 | 日本一区二区三区免费播放 | 无码人妻少妇伦在线电影 | 激情综合激情五月俺也去 | 久久成人a毛片免费观看网站 | 88国产精品欧美一区二区三区 | 成人亚洲精品久久久久软件 | 国产偷抇久久精品a片69 | 国产猛烈高潮尖叫视频免费 | 日韩无套无码精品 | 内射爽无广熟女亚洲 | 强奷人妻日本中文字幕 | 久久精品国产一区二区三区肥胖 | 亚洲中文字幕va福利 | 免费无码肉片在线观看 | 天堂久久天堂av色综合 | 国产精品视频免费播放 | 精品国产一区二区三区四区 | 中文字幕人妻丝袜二区 | 欧美猛少妇色xxxxx | 国产乱人无码伦av在线a | 无码人妻少妇伦在线电影 | 成熟女人特级毛片www免费 | 久久精品人人做人人综合试看 | 国产精品久久国产三级国 | 天堂а√在线地址中文在线 | 18禁黄网站男男禁片免费观看 | 欧美日韩一区二区免费视频 | 无套内射视频囯产 | 俺去俺来也在线www色官网 | 国产一精品一av一免费 | 精品人人妻人人澡人人爽人人 | 国产精华av午夜在线观看 | 大屁股大乳丰满人妻 | 狂野欧美性猛交免费视频 | 特黄特色大片免费播放器图片 | 久久99久久99精品中文字幕 | 任你躁在线精品免费 | 天天爽夜夜爽夜夜爽 | 无码国模国产在线观看 | 又紧又大又爽精品一区二区 | a片在线免费观看 | 国产精品人妻一区二区三区四 | 亚洲欧美综合区丁香五月小说 | 亚洲欧美综合区丁香五月小说 | 色欲综合久久中文字幕网 | 亚洲综合久久一区二区 | 亚洲第一网站男人都懂 | 最近免费中文字幕中文高清百度 | 亚洲国产欧美国产综合一区 | av无码电影一区二区三区 | 国产人妻久久精品二区三区老狼 | 国产精品久久久久7777 | 亚洲精品国产精品乱码视色 | 日韩欧美成人免费观看 | 成人欧美一区二区三区 | 又湿又紧又大又爽a视频国产 | 女人被爽到呻吟gif动态图视看 | 无套内谢的新婚少妇国语播放 | 一本久久伊人热热精品中文字幕 | 国产9 9在线 | 中文 | av无码久久久久不卡免费网站 | 无码人妻黑人中文字幕 | 人妻aⅴ无码一区二区三区 | 小泽玛莉亚一区二区视频在线 | 丁香花在线影院观看在线播放 | 国产精品永久免费视频 | 性啪啪chinese东北女人 | 特黄特色大片免费播放器图片 | 无码吃奶揉捏奶头高潮视频 | 精品欧洲av无码一区二区三区 | 国产乱人偷精品人妻a片 | 欧美一区二区三区视频在线观看 | 精品无码国产自产拍在线观看蜜 | 中文字幕av伊人av无码av | 图片区 小说区 区 亚洲五月 | 小泽玛莉亚一区二区视频在线 | 久久久av男人的天堂 | 亚洲精品中文字幕乱码 | 99riav国产精品视频 | 久久综合香蕉国产蜜臀av | 真人与拘做受免费视频一 | 久久人妻内射无码一区三区 | 免费国产黄网站在线观看 | 欧美黑人巨大xxxxx | 粗大的内捧猛烈进出视频 | 一区二区三区高清视频一 | 国产激情艳情在线看视频 | 无码一区二区三区在线观看 | 国产卡一卡二卡三 | 欧美放荡的少妇 | 国产精品久久久久久无码 | 无码人妻出轨黑人中文字幕 | 久久久久亚洲精品中文字幕 | 永久免费精品精品永久-夜色 | 少妇性l交大片 | 国产精品毛多多水多 | 九九热爱视频精品 | 国产人妻精品一区二区三区不卡 | 狠狠色色综合网站 | 黑人巨大精品欧美黑寡妇 | 7777奇米四色成人眼影 | 内射巨臀欧美在线视频 | 人妻人人添人妻人人爱 | 中文字幕日韩精品一区二区三区 | 亚洲国产精品一区二区第一页 | 无码福利日韩神码福利片 | 一本色道婷婷久久欧美 | 男人扒开女人内裤强吻桶进去 | 欧洲vodafone精品性 | 亚洲色偷偷男人的天堂 | 天天燥日日燥 | 呦交小u女精品视频 | 国产高清不卡无码视频 | 51国偷自产一区二区三区 | 人人澡人人透人人爽 | 老子影院午夜伦不卡 | 漂亮人妻洗澡被公强 日日躁 | 欧美成人免费全部网站 | 免费无码的av片在线观看 | 色一情一乱一伦一视频免费看 | 国产精品久久国产精品99 | 亚洲日韩av一区二区三区四区 | 亚洲精品美女久久久久久久 | 精品无码国产一区二区三区av | 最新国产麻豆aⅴ精品无码 | 欧美性生交xxxxx久久久 | 亚洲午夜福利在线观看 | 中文字幕无线码免费人妻 | 麻豆精品国产精华精华液好用吗 | 熟女少妇人妻中文字幕 | 中文字幕人成乱码熟女app | 精品无码国产自产拍在线观看蜜 | 一本大道伊人av久久综合 | 婷婷五月综合激情中文字幕 | 国产乱人伦av在线无码 | 中文字幕无码av波多野吉衣 | 国产一区二区三区影院 | √8天堂资源地址中文在线 | 在线视频网站www色 | 人妻少妇精品久久 | 免费无码肉片在线观看 | 日韩成人一区二区三区在线观看 | 少妇无套内谢久久久久 | 波多野结衣av一区二区全免费观看 | 精品无人区无码乱码毛片国产 | 波多野结衣一区二区三区av免费 | 成人三级无码视频在线观看 | 久久久久久国产精品无码下载 | 国语精品一区二区三区 | 九九在线中文字幕无码 | 成人无码精品1区2区3区免费看 | 人妻天天爽夜夜爽一区二区 | 人妻插b视频一区二区三区 | 影音先锋中文字幕无码 | 内射巨臀欧美在线视频 | 四十如虎的丰满熟妇啪啪 | 奇米影视888欧美在线观看 | 四虎永久在线精品免费网址 | 亚洲小说春色综合另类 | 少妇性荡欲午夜性开放视频剧场 | 高潮毛片无遮挡高清免费视频 | 草草网站影院白丝内射 | 免费人成网站视频在线观看 | 国产精品人人爽人人做我的可爱 | 久久久精品国产sm最大网站 | 久久综合久久自在自线精品自 | 亚洲精品中文字幕 | 人人妻人人澡人人爽欧美精品 | 疯狂三人交性欧美 | 亚洲成a人一区二区三区 | 色综合久久88色综合天天 | 俄罗斯老熟妇色xxxx | 少女韩国电视剧在线观看完整 | 国产无套内射久久久国产 | 丰满少妇人妻久久久久久 | 亚洲国产精品久久人人爱 | 国语精品一区二区三区 | 精品一区二区三区无码免费视频 | 精品国产乱码久久久久乱码 | 一本久道久久综合婷婷五月 | 国产亚洲精品精品国产亚洲综合 | 亚洲成a人片在线观看日本 | 亚洲熟妇色xxxxx亚洲 | 国内综合精品午夜久久资源 | 久久综合色之久久综合 | 国产一区二区不卡老阿姨 | 乱码午夜-极国产极内射 | 精品日本一区二区三区在线观看 | 国内精品人妻无码久久久影院蜜桃 | 六月丁香婷婷色狠狠久久 | 久久久中文久久久无码 | 无码国产色欲xxxxx视频 | 啦啦啦www在线观看免费视频 | 全球成人中文在线 | 精品国产麻豆免费人成网站 | 狂野欧美性猛xxxx乱大交 | 久久精品女人的天堂av | 黑人玩弄人妻中文在线 | 亚洲小说春色综合另类 | 成年美女黄网站色大免费全看 | 日韩 欧美 动漫 国产 制服 | 99久久亚洲精品无码毛片 | 久久综合久久自在自线精品自 | 欧美国产日产一区二区 | 成人毛片一区二区 | 精品无人国产偷自产在线 | 久久精品国产精品国产精品污 | 久久综合给久久狠狠97色 | 国产精品无码成人午夜电影 | 国产精品亚洲综合色区韩国 | 欧美日韩久久久精品a片 | 日韩在线不卡免费视频一区 | 中文字幕日韩精品一区二区三区 | 欧美性猛交xxxx富婆 | 国产精品.xx视频.xxtv | 国语自产偷拍精品视频偷 | 久久久久99精品成人片 | 欧美日韩久久久精品a片 | 在线欧美精品一区二区三区 | 任你躁国产自任一区二区三区 | 久9re热视频这里只有精品 | 18禁止看的免费污网站 | 久久久久久久久888 | 成人免费视频在线观看 | 日本一本二本三区免费 | 久久久精品456亚洲影院 | 亚洲欧洲无卡二区视頻 | 狠狠亚洲超碰狼人久久 | 精品国产成人一区二区三区 | 色一情一乱一伦 | 99久久精品日本一区二区免费 | 亚洲欧美色中文字幕在线 | 精品aⅴ一区二区三区 | 狠狠躁日日躁夜夜躁2020 | 中文字幕人成乱码熟女app | 久久精品中文闷骚内射 | 亚洲精品国产a久久久久久 | 精品熟女少妇av免费观看 | 亚洲精品一区二区三区在线观看 | 久久精品一区二区三区四区 | 国产亚洲人成在线播放 | 久久亚洲精品中文字幕无男同 | 久久久久av无码免费网 | 国产人妻精品一区二区三区 | 亚洲综合色区中文字幕 | 久久精品国产一区二区三区 | 欧美熟妇另类久久久久久不卡 | 中文字幕乱码中文乱码51精品 | 亚洲高清偷拍一区二区三区 | 久久无码中文字幕免费影院蜜桃 | 久久久精品国产sm最大网站 | 中文字幕av无码一区二区三区电影 | 午夜丰满少妇性开放视频 | 中文字幕亚洲情99在线 | 亚洲人成网站色7799 | 水蜜桃亚洲一二三四在线 | 亚洲一区二区三区四区 | 十八禁视频网站在线观看 | 亚洲aⅴ无码成人网站国产app | 激情内射日本一区二区三区 | 一本久道高清无码视频 | 国产乱人偷精品人妻a片 | 少妇被粗大的猛进出69影院 | 强开小婷嫩苞又嫩又紧视频 | 中文久久乱码一区二区 | 中文字幕乱码人妻无码久久 | 国产av久久久久精东av | 国产激情精品一区二区三区 | 一本久久伊人热热精品中文字幕 | 国产人成高清在线视频99最全资源 | 欧美丰满老熟妇xxxxx性 | 伊在人天堂亚洲香蕉精品区 | 高潮毛片无遮挡高清免费 | 真人与拘做受免费视频一 | 狠狠色噜噜狠狠狠狠7777米奇 | 蜜桃视频韩日免费播放 | 人人超人人超碰超国产 | аⅴ资源天堂资源库在线 | 成人三级无码视频在线观看 | 国产人妻精品一区二区三区 | 偷窥日本少妇撒尿chinese | 免费国产黄网站在线观看 | 麻豆国产97在线 | 欧洲 | 国产精品久久久久9999小说 | 动漫av网站免费观看 | 丰满少妇女裸体bbw | 国产精品人人爽人人做我的可爱 | 国产精品美女久久久网av | 好屌草这里只有精品 | 免费乱码人妻系列无码专区 | 亚洲色在线无码国产精品不卡 | 夜精品a片一区二区三区无码白浆 | 亚洲成a人片在线观看无码 | 最新版天堂资源中文官网 | 中文字幕无码视频专区 | 亚洲小说图区综合在线 | 亚洲精品一区三区三区在线观看 | 97久久超碰中文字幕 | 欧美阿v高清资源不卡在线播放 | 亚洲 a v无 码免 费 成 人 a v | 东北女人啪啪对白 | 人妻无码αv中文字幕久久琪琪布 | 亚洲爆乳大丰满无码专区 | 女人被爽到呻吟gif动态图视看 | 久久久久久久女国产乱让韩 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 5858s亚洲色大成网站www | 丰满少妇熟乱xxxxx视频 | 少妇被黑人到高潮喷出白浆 | 福利一区二区三区视频在线观看 | 成人aaa片一区国产精品 | 欧美真人作爱免费视频 | 国产无遮挡又黄又爽免费视频 | 国产农村乱对白刺激视频 | 无码精品人妻一区二区三区av | 国产极品美女高潮无套在线观看 | 熟妇人妻激情偷爽文 | 成 人 免费观看网站 | 少妇无套内谢久久久久 | 免费无码午夜福利片69 | 99精品视频在线观看免费 | 午夜福利电影 | 免费中文字幕日韩欧美 | 久久这里只有精品视频9 | 狠狠色噜噜狠狠狠7777奇米 | 我要看www免费看插插视频 | 强开小婷嫩苞又嫩又紧视频 | 九九在线中文字幕无码 | 色综合久久网 | 国产偷国产偷精品高清尤物 | 熟妇人妻无乱码中文字幕 | 国内精品九九久久久精品 | 精品久久久无码中文字幕 | 久久国产劲爆∧v内射 | 图片区 小说区 区 亚洲五月 | 国产人妻大战黑人第1集 | 久久99久久99精品中文字幕 | 曰韩无码二三区中文字幕 | 亚洲熟熟妇xxxx | 亚洲精品国产第一综合99久久 | 成人欧美一区二区三区黑人 | 曰本女人与公拘交酡免费视频 | 99精品无人区乱码1区2区3区 | 久久久久亚洲精品中文字幕 | 97精品国产97久久久久久免费 | 国产精品亚洲一区二区三区喷水 | 日本又色又爽又黄的a片18禁 | 荫蒂添的好舒服视频囗交 | 一本加勒比波多野结衣 | 亚洲色欲色欲天天天www | 成人av无码一区二区三区 | 曰韩少妇内射免费播放 | 国产成人无码区免费内射一片色欲 | 粉嫩少妇内射浓精videos | 亚洲精品久久久久久一区二区 | 亚洲精品美女久久久久久久 | 欧美性生交活xxxxxdddd | 久久国产精品_国产精品 | 人妻无码αv中文字幕久久琪琪布 | 人妻中文无码久热丝袜 | 人妻无码αv中文字幕久久琪琪布 | 久久久久久a亚洲欧洲av冫 | 乌克兰少妇xxxx做受 | ass日本丰满熟妇pics | 久久精品丝袜高跟鞋 | 日本xxxx色视频在线观看免费 | 人妻体内射精一区二区三四 | 天天拍夜夜添久久精品大 | 中文字幕无码热在线视频 | 精品夜夜澡人妻无码av蜜桃 | 国产人成高清在线视频99最全资源 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产深夜福利视频在线 | 无码人妻精品一区二区三区下载 | 日本熟妇人妻xxxxx人hd | 午夜精品久久久内射近拍高清 | 色婷婷av一区二区三区之红樱桃 | 国产人妻人伦精品 | 亚洲国产综合无码一区 | 无码人妻久久一区二区三区不卡 | 久久久久久久久蜜桃 | www国产亚洲精品久久久日本 | 久久综合九色综合97网 | 大肉大捧一进一出视频出来呀 | 国产精品va在线播放 | 日本熟妇大屁股人妻 | 亚洲日韩av片在线观看 | 欧美丰满熟妇xxxx | 欧洲欧美人成视频在线 | 亚洲成av人综合在线观看 | 亚洲国产精品久久久久久 | 亚洲人成网站在线播放942 | 亚洲综合无码一区二区三区 | 两性色午夜免费视频 | 国产成人无码一二三区视频 | 少妇激情av一区二区 | 国产午夜无码视频在线观看 | 又大又紧又粉嫩18p少妇 | 日本高清一区免费中文视频 | 97无码免费人妻超级碰碰夜夜 | 丰满人妻翻云覆雨呻吟视频 | 国产色在线 | 国产 | 99精品无人区乱码1区2区3区 | av无码不卡在线观看免费 | 大地资源中文第3页 | 丝袜人妻一区二区三区 | 又粗又大又硬毛片免费看 | 国产电影无码午夜在线播放 | 亚洲 高清 成人 动漫 | 免费国产成人高清在线观看网站 | 亚洲一区二区三区 | 日韩精品无码一本二本三本色 | 亚洲七七久久桃花影院 | 免费国产成人高清在线观看网站 | 欧美老妇交乱视频在线观看 | 国产女主播喷水视频在线观看 | 国产美女精品一区二区三区 | 婷婷五月综合激情中文字幕 | 国产精品久久国产三级国 | 麻豆av传媒蜜桃天美传媒 | 男女作爱免费网站 | 成人欧美一区二区三区黑人 | 天堂无码人妻精品一区二区三区 | 天天爽夜夜爽夜夜爽 | 欧美第一黄网免费网站 | 色欲久久久天天天综合网精品 | 欧美一区二区三区视频在线观看 | 性欧美牲交xxxxx视频 | 天天av天天av天天透 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲综合无码久久精品综合 | 欧美日韩亚洲国产精品 | 成人无码精品1区2区3区免费看 | 日本熟妇大屁股人妻 | 无码国产乱人伦偷精品视频 | 天天燥日日燥 | 欧美大屁股xxxxhd黑色 | 无套内谢老熟女 | 久久精品国产一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 国产日产欧产精品精品app | 少妇人妻偷人精品无码视频 | 成在人线av无码免费 | aⅴ亚洲 日韩 色 图网站 播放 | av人摸人人人澡人人超碰下载 | 日本熟妇大屁股人妻 | 男女性色大片免费网站 | 5858s亚洲色大成网站www | 亚洲乱码国产乱码精品精 | 亚洲熟妇色xxxxx欧美老妇y | 国精产品一区二区三区 | 欧美色就是色 | 51国偷自产一区二区三区 | 老司机亚洲精品影院无码 | 久久精品国产日本波多野结衣 | 黑人巨大精品欧美黑寡妇 | yw尤物av无码国产在线观看 | 任你躁在线精品免费 | 免费国产成人高清在线观看网站 | 天堂一区人妻无码 | 国产熟妇高潮叫床视频播放 | 中文亚洲成a人片在线观看 | 久久婷婷五月综合色国产香蕉 | 精品久久久无码中文字幕 | 日韩少妇内射免费播放 | 婷婷丁香六月激情综合啪 | 国内老熟妇对白xxxxhd | 亚洲熟妇色xxxxx亚洲 | 午夜福利电影 | 国产三级久久久精品麻豆三级 | 国产精品va在线观看无码 | av无码电影一区二区三区 | 国产精品第一区揄拍无码 | 激情亚洲一区国产精品 | 国产手机在线αⅴ片无码观看 | 成人影院yy111111在线观看 | 国产激情艳情在线看视频 | 伊人色综合久久天天小片 | 国语精品一区二区三区 | 亚洲中文字幕无码中文字在线 | 亚洲成av人在线观看网址 | 国产成人无码av片在线观看不卡 | 欧美freesex黑人又粗又大 | 少女韩国电视剧在线观看完整 | 成人无码影片精品久久久 | 人人爽人人澡人人人妻 | 成年美女黄网站色大免费全看 | 亚洲天堂2017无码 | 国产乱子伦视频在线播放 | 国内精品一区二区三区不卡 | 波多野结衣高清一区二区三区 | 伊在人天堂亚洲香蕉精品区 | 精品无码国产自产拍在线观看蜜 | 性欧美牲交在线视频 | 欧美性黑人极品hd | 又粗又大又硬又长又爽 | 无码任你躁久久久久久久 | 性生交大片免费看l | 黑人巨大精品欧美一区二区 | 国产精品无码一区二区桃花视频 | 国产手机在线αⅴ片无码观看 | 精品国产精品久久一区免费式 | 亚洲精品鲁一鲁一区二区三区 | 久久亚洲国产成人精品性色 | 老熟妇仑乱视频一区二区 | 亚洲国产成人a精品不卡在线 | 日本大乳高潮视频在线观看 | 任你躁国产自任一区二区三区 | 色综合久久88色综合天天 | 国产精品亚洲综合色区韩国 | 亚洲春色在线视频 | 亚洲国产精品无码一区二区三区 | 亚洲人成网站免费播放 | 免费视频欧美无人区码 | 2019nv天堂香蕉在线观看 | www国产亚洲精品久久久日本 | 国产精品99久久精品爆乳 | 精品厕所偷拍各类美女tp嘘嘘 | 天海翼激烈高潮到腰振不止 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产激情一区二区三区 | 精品国产aⅴ无码一区二区 | 久久成人a毛片免费观看网站 | 亚洲成色www久久网站 | 久久久久人妻一区精品色欧美 | 丰腴饱满的极品熟妇 | 国产乱人伦偷精品视频 | 日本va欧美va欧美va精品 | 久久国产劲爆∧v内射 | 国产热a欧美热a在线视频 | 在线观看欧美一区二区三区 | 国产精品久久久久久无码 | 亚无码乱人伦一区二区 | 日韩亚洲欧美精品综合 | 成年美女黄网站色大免费全看 | 国产香蕉97碰碰久久人人 | 亚洲一区二区观看播放 | 亚洲精品久久久久中文第一幕 | 天下第一社区视频www日本 | 亚洲一区二区三区无码久久 | 亚洲 a v无 码免 费 成 人 a v | 国产高清av在线播放 | 国产偷国产偷精品高清尤物 | 少妇的肉体aa片免费 | 一本色道久久综合狠狠躁 | 一本色道久久综合亚洲精品不卡 | 精品无码国产一区二区三区av | 18黄暴禁片在线观看 | 人人爽人人爽人人片av亚洲 | 我要看www免费看插插视频 | 国产极品美女高潮无套在线观看 | 亚洲国产精品久久人人爱 | 性欧美疯狂xxxxbbbb | 美女黄网站人色视频免费国产 | 亚洲乱亚洲乱妇50p | 黑人巨大精品欧美一区二区 | 免费看男女做好爽好硬视频 | 国产偷国产偷精品高清尤物 | 999久久久国产精品消防器材 | 精品国精品国产自在久国产87 | 激情五月综合色婷婷一区二区 | 国产偷抇久久精品a片69 | 夜夜夜高潮夜夜爽夜夜爰爰 | 欧美性色19p | 亚洲精品久久久久avwww潮水 | 欧美老妇交乱视频在线观看 | 亚洲中文字幕在线无码一区二区 | 久久国产精品精品国产色婷婷 | 宝宝好涨水快流出来免费视频 | 亚洲区小说区激情区图片区 | 国产激情无码一区二区 | 狂野欧美性猛交免费视频 | 午夜嘿嘿嘿影院 | 老子影院午夜伦不卡 | 男女作爱免费网站 | 欧美人与牲动交xxxx | 成人亚洲精品久久久久软件 | 性啪啪chinese东北女人 | 好爽又高潮了毛片免费下载 | 99久久精品无码一区二区毛片 | 欧美色就是色 | 日本精品高清一区二区 | 国内老熟妇对白xxxxhd | 天天综合网天天综合色 | 欧美精品免费观看二区 | 无码人妻丰满熟妇区毛片18 | 全黄性性激高免费视频 | 内射后入在线观看一区 | 成人综合网亚洲伊人 | 夫妻免费无码v看片 | 久久精品国产99精品亚洲 | 曰韩无码二三区中文字幕 | 国产无遮挡又黄又爽又色 | 亚洲日韩精品欧美一区二区 | 人人妻人人澡人人爽欧美一区 | 性开放的女人aaa片 | 国产精品香蕉在线观看 | 国产精品国产自线拍免费软件 | 国产综合在线观看 | 久久亚洲精品中文字幕无男同 | 波多野结衣aⅴ在线 | 国产人妻精品一区二区三区不卡 | 色综合久久中文娱乐网 | 动漫av一区二区在线观看 | 狠狠综合久久久久综合网 | 在线观看免费人成视频 | 国产亚洲精品久久久闺蜜 | 久久视频在线观看精品 | 亚洲欧美中文字幕5发布 | 亚洲一区av无码专区在线观看 | 成人动漫在线观看 | 性史性农村dvd毛片 | 人人澡人摸人人添 | 亚洲 a v无 码免 费 成 人 a v | 国产亚洲欧美日韩亚洲中文色 | 狠狠cao日日穞夜夜穞av | 欧美性生交活xxxxxdddd | 在线播放无码字幕亚洲 | 狠狠色丁香久久婷婷综合五月 | 图片区 小说区 区 亚洲五月 | 亚洲色在线无码国产精品不卡 | av无码久久久久不卡免费网站 | 精品无码一区二区三区的天堂 | 日本www一道久久久免费榴莲 | 中文无码精品a∨在线观看不卡 | 中文字幕人妻无码一夲道 | 人妻无码αv中文字幕久久琪琪布 | 久久久久久av无码免费看大片 | av无码电影一区二区三区 | 国产精品美女久久久 | 激情五月综合色婷婷一区二区 | 青草青草久热国产精品 | 亚洲aⅴ无码成人网站国产app | 中文字幕人妻丝袜二区 | 国产人妻人伦精品 | 国产人妻久久精品二区三区老狼 | 免费乱码人妻系列无码专区 | 亚洲成av人片在线观看无码不卡 | 中文无码成人免费视频在线观看 | 成人亚洲精品久久久久软件 | 久久久久免费精品国产 | 欧美日本免费一区二区三区 | 亚洲欧美日韩综合久久久 | 欧美真人作爱免费视频 | 国产人妻精品一区二区三区不卡 | 东京一本一道一二三区 | 亚洲国产综合无码一区 | 熟妇人妻中文av无码 | 欧美野外疯狂做受xxxx高潮 | 久久久久se色偷偷亚洲精品av | 成人动漫在线观看 | 国产精品无码一区二区三区不卡 | 国产免费观看黄av片 | 女人高潮内射99精品 | 偷窥日本少妇撒尿chinese | 亚洲中文字幕在线观看 | 国精产品一区二区三区 | 国产精品无码一区二区三区不卡 | 无码福利日韩神码福利片 | 中文字幕日韩精品一区二区三区 | 福利一区二区三区视频在线观看 | 国产人成高清在线视频99最全资源 | 毛片内射-百度 | 亚洲欧美国产精品久久 | 日日碰狠狠躁久久躁蜜桃 | 无套内射视频囯产 | 免费观看又污又黄的网站 | 国产乡下妇女做爰 | 荫蒂被男人添的好舒服爽免费视频 | 图片小说视频一区二区 | 亚洲日韩av片在线观看 | 丝袜美腿亚洲一区二区 | 亚洲精品一区二区三区大桥未久 | 国产亚av手机在线观看 | 性色av无码免费一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 99久久精品午夜一区二区 | 亚洲人成网站色7799 | 国产精品久久久久久久9999 | 久久久久成人片免费观看蜜芽 | 无码人妻出轨黑人中文字幕 | 小sao货水好多真紧h无码视频 | 国产又粗又硬又大爽黄老大爷视 | 国产无遮挡吃胸膜奶免费看 | 娇妻被黑人粗大高潮白浆 | 亚洲色在线无码国产精品不卡 | 精品少妇爆乳无码av无码专区 | 国产午夜福利100集发布 | 日本大乳高潮视频在线观看 | 精品熟女少妇av免费观看 | 亚洲日本va午夜在线电影 | 日韩精品成人一区二区三区 | 国产综合在线观看 | 国产69精品久久久久app下载 | 少妇无码av无码专区在线观看 | 欧美性黑人极品hd | 无码福利日韩神码福利片 | 免费男性肉肉影院 | 久久久久亚洲精品中文字幕 | √8天堂资源地址中文在线 | 亚洲爆乳大丰满无码专区 | 亚洲天堂2017无码中文 | 美女极度色诱视频国产 | 国产sm调教视频在线观看 | 精品国产乱码久久久久乱码 | 国产一区二区三区精品视频 | 国产亚洲精品久久久久久国模美 | 亚洲欧美精品aaaaaa片 | 成人aaa片一区国产精品 | 欧美丰满熟妇xxxx性ppx人交 | 人人澡人人妻人人爽人人蜜桃 | 亚洲高清偷拍一区二区三区 | 中文字幕+乱码+中文字幕一区 | 国产午夜视频在线观看 | 日本精品高清一区二区 | 日韩欧美群交p片內射中文 | 免费人成网站视频在线观看 | ass日本丰满熟妇pics | 东京热一精品无码av | 日日躁夜夜躁狠狠躁 | 亚洲国产欧美国产综合一区 | 国产一区二区不卡老阿姨 | 国产精品嫩草久久久久 | 亚洲精品国产品国语在线观看 | 精品国产一区二区三区四区在线看 | 一本久道久久综合婷婷五月 | 毛片内射-百度 | 亚洲码国产精品高潮在线 | 天堂а√在线地址中文在线 | 欧美性猛交xxxx富婆 | 日产国产精品亚洲系列 | 国产精品丝袜黑色高跟鞋 | 婷婷丁香五月天综合东京热 | 亚洲中文字幕成人无码 | 国产麻豆精品精东影业av网站 | 97无码免费人妻超级碰碰夜夜 | 国产亚洲tv在线观看 | 国产日产欧产精品精品app | 亚洲 高清 成人 动漫 | 熟妇激情内射com | 国产午夜无码视频在线观看 | 无遮挡国产高潮视频免费观看 | 日韩精品久久久肉伦网站 | 牛和人交xxxx欧美 | 无码人妻精品一区二区三区下载 | 好爽又高潮了毛片免费下载 | 久久人人爽人人爽人人片av高清 | 在线 国产 欧美 亚洲 天堂 | 蜜桃臀无码内射一区二区三区 | 窝窝午夜理论片影院 | 中文字幕无码av波多野吉衣 | 国产av一区二区三区最新精品 | 爆乳一区二区三区无码 | 欧美 日韩 亚洲 在线 | 三级4级全黄60分钟 | 狠狠cao日日穞夜夜穞av | 少妇愉情理伦片bd | 亚洲爆乳大丰满无码专区 | 国产高清av在线播放 | 日韩少妇白浆无码系列 | 日本va欧美va欧美va精品 | 日本爽爽爽爽爽爽在线观看免 | 曰本女人与公拘交酡免费视频 | 国产手机在线αⅴ片无码观看 | 一个人看的视频www在线 | 一个人看的www免费视频在线观看 | 久久综合九色综合欧美狠狠 | 亚洲а∨天堂久久精品2021 | 国产精品无码久久av | 又色又爽又黄的美女裸体网站 | 成熟女人特级毛片www免费 | 日日干夜夜干 | 国产亚洲人成a在线v网站 | 日本xxxx色视频在线观看免费 | 欧美黑人性暴力猛交喷水 | 国产精品香蕉在线观看 | 青青青爽视频在线观看 | 亚洲 另类 在线 欧美 制服 | 国产人妻精品一区二区三区 | 国产suv精品一区二区五 | 国产成人精品久久亚洲高清不卡 | 粉嫩少妇内射浓精videos | 国产免费久久久久久无码 | 国产亚洲精品久久久ai换 | 亚洲国产精品久久久久久 | 无码av免费一区二区三区试看 | 国产av剧情md精品麻豆 | 欧美性生交活xxxxxdddd | 国产色视频一区二区三区 | 无码成人精品区在线观看 | 国产成人精品视频ⅴa片软件竹菊 | 麻豆国产人妻欲求不满谁演的 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲日韩精品欧美一区二区 | 精品一区二区三区无码免费视频 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲精品欧美二区三区中文字幕 | 东京热无码av男人的天堂 | 曰本女人与公拘交酡免费视频 | 国产亚洲人成a在线v网站 | 最近的中文字幕在线看视频 | 18精品久久久无码午夜福利 | 国产人妻精品一区二区三区 | 国产亚洲日韩欧美另类第八页 | 无套内谢的新婚少妇国语播放 | 中文字幕无码人妻少妇免费 | 亚洲成av人综合在线观看 | 精品人妻中文字幕有码在线 | 欧美人与禽zoz0性伦交 | 亚洲区欧美区综合区自拍区 | 国产精品久久精品三级 | а√天堂www在线天堂小说 | 帮老师解开蕾丝奶罩吸乳网站 | 免费人成在线观看网站 | 国产精品久久久午夜夜伦鲁鲁 | 国产激情艳情在线看视频 | 日韩精品a片一区二区三区妖精 | 国产莉萝无码av在线播放 | 免费无码午夜福利片69 | 精品久久久久久人妻无码中文字幕 | 亚洲成av人在线观看网址 | 少妇厨房愉情理9仑片视频 | 国产香蕉尹人视频在线 | 国产婷婷色一区二区三区在线 | 在线视频网站www色 | 亚洲国产精品一区二区第一页 | 少妇太爽了在线观看 | 亚洲经典千人经典日产 | 一区二区三区乱码在线 | 欧洲 | 国产舌乚八伦偷品w中 | 久久人人爽人人爽人人片ⅴ | 欧美日韩久久久精品a片 | 午夜丰满少妇性开放视频 | 亚洲午夜福利在线观看 | 国产高清av在线播放 | 国产精品美女久久久久av爽李琼 | 欧美黑人乱大交 | 大地资源网第二页免费观看 | 成人欧美一区二区三区黑人 | 久久国产精品二国产精品 | 麻豆md0077饥渴少妇 | 一个人看的视频www在线 | 色综合视频一区二区三区 | 大色综合色综合网站 | 国产网红无码精品视频 | 日韩无套无码精品 | av人摸人人人澡人人超碰下载 | 成 人 免费观看网站 | 成人免费视频视频在线观看 免费 | 久久99热只有频精品8 | 色综合久久久久综合一本到桃花网 | 日韩无套无码精品 | 国产免费无码一区二区视频 | 国产欧美精品一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 亚洲 另类 在线 欧美 制服 | 2019午夜福利不卡片在线 | 国产精品18久久久久久麻辣 | 97夜夜澡人人爽人人喊中国片 | 成人无码影片精品久久久 | 欧美熟妇另类久久久久久多毛 | 欧美熟妇另类久久久久久多毛 | 玩弄人妻少妇500系列视频 | 亚洲国产综合无码一区 | 国产特级毛片aaaaaa高潮流水 | 国产人妻大战黑人第1集 | 任你躁在线精品免费 | 亚洲精品一区二区三区在线 | 水蜜桃亚洲一二三四在线 | 久久zyz资源站无码中文动漫 | 日日摸日日碰夜夜爽av | 欧美 日韩 亚洲 在线 | 国产精华av午夜在线观看 | 久久久亚洲欧洲日产国码αv | 67194成是人免费无码 | 人人妻人人澡人人爽欧美精品 | 欧美性猛交xxxx富婆 | 综合激情五月综合激情五月激情1 | 亚洲乱亚洲乱妇50p | 国产内射爽爽大片视频社区在线 | 精品久久久久久人妻无码中文字幕 | 丰满妇女强制高潮18xxxx | 精品人人妻人人澡人人爽人人 | 在线成人www免费观看视频 | 亚欧洲精品在线视频免费观看 | 高潮毛片无遮挡高清免费视频 | 欧美人与禽zoz0性伦交 | 国产精品高潮呻吟av久久4虎 | 日韩av无码中文无码电影 | 人妻插b视频一区二区三区 | 成人动漫在线观看 | 亚洲a无码综合a国产av中文 | 亚洲乱码日产精品bd | 又大又硬又黄的免费视频 | 十八禁真人啪啪免费网站 | 少妇激情av一区二区 | 亚洲成av人在线观看网址 | 亚洲精品一区二区三区四区五区 | 国产97色在线 | 免 | 成人三级无码视频在线观看 | 蜜桃无码一区二区三区 | 久久国产精品萌白酱免费 | 永久免费精品精品永久-夜色 | 亚洲综合无码久久精品综合 | 蜜臀aⅴ国产精品久久久国产老师 | 强辱丰满人妻hd中文字幕 | 久久午夜夜伦鲁鲁片无码免费 | 午夜男女很黄的视频 | 国产后入清纯学生妹 | 国产精品久久久午夜夜伦鲁鲁 | 中文久久乱码一区二区 | 国内精品人妻无码久久久影院 | 亚洲欧洲日本综合aⅴ在线 | 一二三四社区在线中文视频 | 精品久久久久久亚洲精品 | 桃花色综合影院 | 国内精品人妻无码久久久影院 | 午夜时刻免费入口 | 久久zyz资源站无码中文动漫 | 乱人伦中文视频在线观看 | 九九久久精品国产免费看小说 | 国产成人综合在线女婷五月99播放 | 内射老妇bbwx0c0ck | 亚洲一区二区三区香蕉 | 国产在线aaa片一区二区99 | 色妞www精品免费视频 | 亚洲小说春色综合另类 | 亚洲一区二区三区国产精华液 | 成人无码视频免费播放 | 免费人成在线观看网站 | 亚洲人成无码网www | 亚洲国产精品一区二区美利坚 | 正在播放东北夫妻内射 | 蜜桃视频韩日免费播放 | 亚洲人交乣女bbw | 国产极品视觉盛宴 | 国产亚洲欧美在线专区 | 国产午夜无码视频在线观看 | 国产精品无码一区二区桃花视频 | 日韩精品无码一本二本三本色 | 人人妻人人澡人人爽精品欧美 | 国产做国产爱免费视频 | 美女扒开屁股让男人桶 | 97资源共享在线视频 | 国产精品怡红院永久免费 | 亚洲爆乳精品无码一区二区三区 | 丰满少妇人妻久久久久久 | 国产成人精品三级麻豆 | 人妻无码αv中文字幕久久琪琪布 | 精品一区二区三区波多野结衣 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲自偷自偷在线制服 | 欧美黑人乱大交 | 日韩人妻无码一区二区三区久久99 | 两性色午夜视频免费播放 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲精品综合五月久久小说 | 九九在线中文字幕无码 | 日本爽爽爽爽爽爽在线观看免 | 精品国产青草久久久久福利 | 国产黑色丝袜在线播放 | 欧美人与物videos另类 | 久久天天躁夜夜躁狠狠 | 欧美丰满熟妇xxxx性ppx人交 | 久激情内射婷内射蜜桃人妖 | 青青久在线视频免费观看 | 久久精品国产一区二区三区肥胖 | 老司机亚洲精品影院 | 国产精品怡红院永久免费 | 波多野结衣乳巨码无在线观看 | 特级做a爰片毛片免费69 | 久久久久国色av免费观看性色 | 国产 精品 自在自线 | 国产熟妇高潮叫床视频播放 | 亚洲日韩精品欧美一区二区 | 亚洲日韩一区二区 | 日韩av无码一区二区三区不卡 | 未满成年国产在线观看 | 最近中文2019字幕第二页 | 国产人妖乱国产精品人妖 | 久9re热视频这里只有精品 | 中文字幕无码免费久久9一区9 | 欧美性猛交xxxx富婆 | 无码av免费一区二区三区试看 | 女人和拘做爰正片视频 | 熟女俱乐部五十路六十路av | 人妻人人添人妻人人爱 | 国产亚洲精品久久久久久国模美 | 日本丰满护士爆乳xxxx | 日韩亚洲欧美精品综合 | 台湾无码一区二区 | 无码人妻久久一区二区三区不卡 | 国产免费无码一区二区视频 | 内射老妇bbwx0c0ck | 欧洲vodafone精品性 | 国产精品久久久久久久9999 | 国产精品久久精品三级 | 精品无码国产一区二区三区av | 国産精品久久久久久久 | 国产精品久免费的黄网站 | 日韩精品久久久肉伦网站 | 午夜福利一区二区三区在线观看 | 国产在线精品一区二区高清不卡 | 蜜臀aⅴ国产精品久久久国产老师 | 精品一区二区三区无码免费视频 | 天堂无码人妻精品一区二区三区 | 久久国产精品精品国产色婷婷 | 欧美黑人巨大xxxxx | 日韩精品a片一区二区三区妖精 | 久久综合九色综合97网 | 激情国产av做激情国产爱 | 亚洲狠狠婷婷综合久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 伊人久久大香线蕉午夜 | 狠狠色欧美亚洲狠狠色www | 国产精品久久久久久亚洲影视内衣 | 中国女人内谢69xxxxxa片 | 色情久久久av熟女人妻网站 | 帮老师解开蕾丝奶罩吸乳网站 | 色一情一乱一伦一区二区三欧美 | 日本一卡二卡不卡视频查询 | 国产精品怡红院永久免费 | 国产suv精品一区二区五 | ass日本丰满熟妇pics | 国产精品.xx视频.xxtv | 天堂无码人妻精品一区二区三区 | 国产激情无码一区二区app | 在线播放无码字幕亚洲 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 欧美人与禽猛交狂配 | 欧美成人午夜精品久久久 | 日本饥渴人妻欲求不满 | 亚洲日韩精品欧美一区二区 | 成人无码视频在线观看网站 | 欧洲熟妇精品视频 | 又粗又大又硬毛片免费看 | 国产午夜福利100集发布 | 国产精品亚洲一区二区三区喷水 | 蜜臀av在线播放 久久综合激激的五月天 | 午夜不卡av免费 一本久久a久久精品vr综合 | 久激情内射婷内射蜜桃人妖 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲第一无码av无码专区 | 成人免费视频一区二区 | 亚洲精品综合五月久久小说 | 无遮无挡爽爽免费视频 | 中文字幕 人妻熟女 | 无码人妻少妇伦在线电影 | 日本大乳高潮视频在线观看 | 日韩精品乱码av一区二区 | 亚洲色无码一区二区三区 | 宝宝好涨水快流出来免费视频 | 免费国产黄网站在线观看 | 少妇人妻大乳在线视频 | 嫩b人妻精品一区二区三区 | 国产sm调教视频在线观看 | 中文字幕精品av一区二区五区 | 国产精品va在线播放 | 亚洲男女内射在线播放 | 成年女人永久免费看片 | 性色av无码免费一区二区三区 | 少妇无码吹潮 | 日韩精品成人一区二区三区 | 自拍偷自拍亚洲精品被多人伦好爽 | 中国大陆精品视频xxxx | 国产sm调教视频在线观看 | 国产综合色产在线精品 | 中文字幕+乱码+中文字幕一区 | 97久久精品无码一区二区 | 亚洲欧美日韩成人高清在线一区 | 精品成人av一区二区三区 | 亚洲 欧美 激情 小说 另类 | 亚洲熟熟妇xxxx | 女高中生第一次破苞av | 麻豆人妻少妇精品无码专区 | 亚洲精品一区二区三区婷婷月 | 无码人妻久久一区二区三区不卡 | 丰满少妇弄高潮了www | 蜜桃臀无码内射一区二区三区 | 蜜臀av无码人妻精品 | 麻豆精品国产精华精华液好用吗 | 免费国产成人高清在线观看网站 | 初尝人妻少妇中文字幕 | 国产精品-区区久久久狼 | 国产9 9在线 | 中文 | 窝窝午夜理论片影院 | 影音先锋中文字幕无码 | 激情爆乳一区二区三区 | 午夜成人1000部免费视频 | 色窝窝无码一区二区三区色欲 | 高清不卡一区二区三区 | 激情人妻另类人妻伦 | 久久精品中文闷骚内射 | 熟妇人妻无码xxx视频 | 西西人体www44rt大胆高清 | 伦伦影院午夜理论片 | 久久午夜无码鲁丝片秋霞 | 中文久久乱码一区二区 | 一本一道久久综合久久 | 熟女俱乐部五十路六十路av | 狂野欧美激情性xxxx | 国产成人精品一区二区在线小狼 | 国产精品久免费的黄网站 | 秋霞成人午夜鲁丝一区二区三区 | 精品久久久中文字幕人妻 | 中文字幕无码免费久久9一区9 | 中文字幕乱码人妻二区三区 | 俄罗斯老熟妇色xxxx | 国产亚洲精品久久久久久大师 | 欧美日韩精品 | 少妇无码一区二区二三区 | 人人妻人人澡人人爽人人精品 | 亚洲一区二区三区含羞草 | 午夜福利一区二区三区在线观看 | 亚洲 日韩 欧美 成人 在线观看 | 少妇被黑人到高潮喷出白浆 | 久久99精品久久久久婷婷 | 国产乱人偷精品人妻a片 | 久久亚洲中文字幕无码 | 久久久久免费看成人影片 | 色偷偷人人澡人人爽人人模 | 欧美老人巨大xxxx做受 | 国产精品a成v人在线播放 | 欧美丰满熟妇xxxx性ppx人交 | 野外少妇愉情中文字幕 | 无码国产乱人伦偷精品视频 | 人妻少妇精品无码专区二区 | 在线а√天堂中文官网 | 老头边吃奶边弄进去呻吟 | 国产精品丝袜黑色高跟鞋 | 国产精品久久久久久无码 | 3d动漫精品啪啪一区二区中 | 国产色视频一区二区三区 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 一区二区传媒有限公司 | 成 人 网 站国产免费观看 | 日本护士毛茸茸高潮 | 成人欧美一区二区三区 | 成 人 免费观看网站 | 欧美xxxxx精品 | 国产成人精品一区二区在线小狼 | 国产一区二区三区精品视频 | 日韩无套无码精品 | 国产精品人人爽人人做我的可爱 | 中文字幕av日韩精品一区二区 | 国产精品亚洲五月天高清 | 国产尤物精品视频 | 人人爽人人澡人人高潮 | 亚洲色大成网站www国产 | 国产精品久久久久久亚洲影视内衣 | 精品久久久久香蕉网 | 2020久久超碰国产精品最新 | 天天躁日日躁狠狠躁免费麻豆 | 特黄特色大片免费播放器图片 | 狠狠综合久久久久综合网 | 成人精品一区二区三区中文字幕 | 午夜无码人妻av大片色欲 | 水蜜桃av无码 | 免费观看的无遮挡av | 狠狠噜狠狠狠狠丁香五月 | 无码国产色欲xxxxx视频 | 少妇人妻av毛片在线看 | 精品水蜜桃久久久久久久 | 国产精品亚洲综合色区韩国 | 日产国产精品亚洲系列 | 久久精品视频在线看15 | 精品厕所偷拍各类美女tp嘘嘘 | 色五月五月丁香亚洲综合网 | 熟女俱乐部五十路六十路av | 最近的中文字幕在线看视频 | 色五月五月丁香亚洲综合网 | 亚无码乱人伦一区二区 | 成人av无码一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 荫蒂添的好舒服视频囗交 | 久久久久久亚洲精品a片成人 | 人人爽人人澡人人人妻 | 久久人人爽人人爽人人片av高清 | 成 人 网 站国产免费观看 | 中文无码精品a∨在线观看不卡 | 99麻豆久久久国产精品免费 | 内射后入在线观看一区 | 国内揄拍国内精品少妇国语 | 欧美freesex黑人又粗又大 | 国产人妖乱国产精品人妖 | 国产精品人妻一区二区三区四 | 无码中文字幕色专区 | 无码国产乱人伦偷精品视频 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产内射老熟女aaaa | 美女毛片一区二区三区四区 | 啦啦啦www在线观看免费视频 | 免费看男女做好爽好硬视频 | 波多野结衣av一区二区全免费观看 | 国产凸凹视频一区二区 | 5858s亚洲色大成网站www | 无码人妻丰满熟妇区毛片18 | 99麻豆久久久国产精品免费 | 亚洲精品一区二区三区婷婷月 | 日日橹狠狠爱欧美视频 | 国产两女互慰高潮视频在线观看 | 亚洲欧美精品aaaaaa片 | 亚洲爆乳大丰满无码专区 | 欧美自拍另类欧美综合图片区 | 欧美xxxx黑人又粗又长 | 狂野欧美性猛xxxx乱大交 | 成熟女人特级毛片www免费 | 国产 精品 自在自线 | 四虎国产精品免费久久 | 人妻插b视频一区二区三区 | 亚洲国产成人a精品不卡在线 | 久久婷婷五月综合色国产香蕉 | 又紧又大又爽精品一区二区 | 97久久国产亚洲精品超碰热 | 色一情一乱一伦一区二区三欧美 | 一本大道伊人av久久综合 | 日韩av无码一区二区三区不卡 | 亚洲乱码国产乱码精品精 | 欧美性猛交xxxx富婆 | 国产电影无码午夜在线播放 | 中文字幕无码视频专区 | 99久久婷婷国产综合精品青草免费 | 日韩欧美成人免费观看 | 欧美亚洲国产一区二区三区 | 人人妻人人澡人人爽精品欧美 | 最新版天堂资源中文官网 | 永久黄网站色视频免费直播 | 国产亚洲精品久久久久久大师 | 成人欧美一区二区三区 | 青青草原综合久久大伊人精品 | 中文毛片无遮挡高清免费 | 国产成人无码av一区二区 | 两性色午夜免费视频 | 理论片87福利理论电影 | 伊人久久大香线蕉亚洲 | 国产特级毛片aaaaaa高潮流水 | 国产精品久免费的黄网站 | 18禁止看的免费污网站 | 亚洲男女内射在线播放 | 99精品无人区乱码1区2区3区 | 亚洲欧美国产精品专区久久 | 久久久亚洲欧洲日产国码αv | 日产国产精品亚洲系列 | 无套内射视频囯产 | 帮老师解开蕾丝奶罩吸乳网站 | 2020久久香蕉国产线看观看 | 欧美成人家庭影院 | 亚洲 激情 小说 另类 欧美 | 大肉大捧一进一出好爽视频 | 亚洲男人av天堂午夜在 | 亚洲一区二区三区国产精华液 | 亚洲午夜福利在线观看 | 精品少妇爆乳无码av无码专区 | 亚洲理论电影在线观看 | 国产精品美女久久久久av爽李琼 | 中文字幕av日韩精品一区二区 | 久久久久久a亚洲欧洲av冫 | 中文字幕无码av激情不卡 | 中文毛片无遮挡高清免费 | 日韩欧美中文字幕公布 | 装睡被陌生人摸出水好爽 | 国产极品美女高潮无套在线观看 | 久久99精品国产.久久久久 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 学生妹亚洲一区二区 | 人人爽人人澡人人人妻 | 美女张开腿让人桶 | 亚洲码国产精品高潮在线 | 少妇激情av一区二区 | 国产精品久久久一区二区三区 | 人妻夜夜爽天天爽三区 | 少妇人妻大乳在线视频 | 在线天堂新版最新版在线8 | 中文字幕 亚洲精品 第1页 | 人妻aⅴ无码一区二区三区 | 欧美人与物videos另类 | 又大又硬又黄的免费视频 | 亚洲精品国产品国语在线观看 | 色综合久久久无码中文字幕 | 亚洲国产高清在线观看视频 | 人妻aⅴ无码一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 午夜理论片yy44880影院 | 一区二区三区乱码在线 | 欧洲 | 欧美日韩人成综合在线播放 | 日韩 欧美 动漫 国产 制服 | 国产午夜福利亚洲第一 | 亚洲男人av天堂午夜在 | 日韩人妻无码一区二区三区久久99 | 亚洲国产成人a精品不卡在线 | 中文字幕无码人妻少妇免费 | 亚洲日韩av一区二区三区四区 | 亚洲精品午夜国产va久久成人 | 亚洲国产精品久久久久久 | 亚洲国产精品美女久久久久 | 熟女俱乐部五十路六十路av | 色一情一乱一伦一视频免费看 | 丁香花在线影院观看在线播放 | 偷窥村妇洗澡毛毛多 | a在线观看免费网站大全 | 无码福利日韩神码福利片 | 国产在线一区二区三区四区五区 | 欧洲欧美人成视频在线 | 亚洲熟妇色xxxxx欧美老妇 | 国产成人av免费观看 | 精品亚洲韩国一区二区三区 | 亚洲欧美国产精品专区久久 | 亚洲成av人综合在线观看 | 日本爽爽爽爽爽爽在线观看免 | 天天摸天天碰天天添 | 日韩欧美成人免费观看 | 国产一区二区三区四区五区加勒比 | 国产av久久久久精东av | 麻豆av传媒蜜桃天美传媒 | 成人试看120秒体验区 | 无码精品国产va在线观看dvd | 亚洲国产精品毛片av不卡在线 | 中文字幕无码免费久久9一区9 | 日韩精品一区二区av在线 | 色五月五月丁香亚洲综合网 | 伊人色综合久久天天小片 | 人妻少妇精品视频专区 | 国产精品丝袜黑色高跟鞋 | 国产97人人超碰caoprom | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 日本高清一区免费中文视频 | 久久久久久亚洲精品a片成人 | 国产精品va在线观看无码 | 亚洲日韩av一区二区三区四区 | 久久综合给合久久狠狠狠97色 | 丰满少妇高潮惨叫视频 | 中文字幕无码av激情不卡 | 真人与拘做受免费视频 | 国产sm调教视频在线观看 | 国精品人妻无码一区二区三区蜜柚 | 精品乱码久久久久久久 | 无码一区二区三区在线 | 久久久久久av无码免费看大片 | 免费观看激色视频网站 | 大肉大捧一进一出视频出来呀 | 成人欧美一区二区三区黑人 | 亚洲精品欧美二区三区中文字幕 | 久久久久久a亚洲欧洲av冫 | 学生妹亚洲一区二区 | 国产人妻精品一区二区三区不卡 | 久久久久成人精品免费播放动漫 | 一本久久伊人热热精品中文字幕 | 丰腴饱满的极品熟妇 | 兔费看少妇性l交大片免费 | 欧美国产日产一区二区 | 久久久久久a亚洲欧洲av冫 | 亚洲精品一区三区三区在线观看 | 日韩亚洲欧美中文高清在线 | 中文字幕无线码免费人妻 | 婷婷五月综合激情中文字幕 | 日本一区二区三区免费高清 | 久久综合久久自在自线精品自 | 日韩av无码一区二区三区不卡 | 一个人免费观看的www视频 | 国产一区二区三区四区五区加勒比 | 亚洲无人区午夜福利码高清完整版 | 日韩精品久久久肉伦网站 | 久久久无码中文字幕久... | 国产在线一区二区三区四区五区 | 天堂在线观看www | 女人和拘做爰正片视频 | 欧美午夜特黄aaaaaa片 | 成人一在线视频日韩国产 | 日本乱偷人妻中文字幕 | aa片在线观看视频在线播放 | 久久精品丝袜高跟鞋 | 精品日本一区二区三区在线观看 | 亚洲色大成网站www | 黑人巨大精品欧美黑寡妇 | 午夜丰满少妇性开放视频 | 老熟女乱子伦 | 亚洲小说图区综合在线 | aa片在线观看视频在线播放 | 国产精品国产三级国产专播 | 亚洲国产av精品一区二区蜜芽 | 国产精品人人妻人人爽 | 久久精品国产日本波多野结衣 | 51国偷自产一区二区三区 | 中文字幕av日韩精品一区二区 | 丁香花在线影院观看在线播放 | 无码播放一区二区三区 | 性色欲情网站iwww九文堂 | 蜜桃臀无码内射一区二区三区 | 久久久久免费精品国产 | 国产人妻精品一区二区三区不卡 | 又粗又大又硬毛片免费看 | 国产舌乚八伦偷品w中 | 亚洲精品鲁一鲁一区二区三区 | 波多野结衣av一区二区全免费观看 | 国产猛烈高潮尖叫视频免费 | 欧美黑人巨大xxxxx | 日韩精品a片一区二区三区妖精 | 亚洲熟熟妇xxxx | 免费无码av一区二区 | 2020久久香蕉国产线看观看 | 日本爽爽爽爽爽爽在线观看免 | 国精产品一区二区三区 | 日韩亚洲欧美精品综合 | 久久伊人色av天堂九九小黄鸭 |