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

關于 JVM 內存的 N 個問題和定位工具

存儲
JVM的內存劃分中,有部分區域是線程私有的,有部分是屬于整個JVM進程;有些區域會拋出OOM異常,有些則不會,了解JVM的內存區域劃分以及特征,是定位線上內存問題的基礎。那么JVM內存區域是怎么劃分的呢?

[[316385]]

JVM的內存區域是怎么劃分的?

JVM的內存劃分中,有部分區域是線程私有的,有部分是屬于整個JVM進程;有些區域會拋出OOM異常,有些則不會,了解JVM的內存區域劃分以及特征,是定位線上內存問題的基礎。那么JVM內存區域是怎么劃分的呢?

首先是程序計數器(Program Counter Register),在JVM規范中,每個線程都有自己的程序計數器。這是一塊比較小的內存空間,存儲當前線程正在執行的Java方法的JVM指令地址,即字節碼的行號。如果正在執行Native方法,則這個計數器為空。該內存區域是唯一一個在Java虛擬機規范中沒有規定任何OOM情況的內存區域。

第二,Java虛擬機棧(Java Virtal Machine Stack),同樣也是屬于線程私有區域,每個線程在創建的時候都會創建一個虛擬機棧,生命周期與線程一致,線程退出時,線程的虛擬機棧也回收。虛擬機棧內部保持一個個的棧幀,每次方法調用都會進行壓棧,JVM對棧幀的操作只有出棧和壓棧兩種,方法調用結束時會進行出棧操作。

該區域存儲著局部變量表,編譯時期可知的各種基本類型數據、對象引用、方法出口等信息。

第三,本地方法棧(Native Method Stack)與虛擬機棧類似,本地方法棧是在調用本地方法時使用的棧,每個線程都有一個本地方法棧。

第四,堆(Heap),幾乎所有創建的Java對象實例,都是被直接分配到堆上的。堆被所有的線程所共享,在堆上的區域,會被垃圾回收器做進一步劃分,例如新生代、老年代的劃分。Java虛擬機在啟動的時候,可以使用“Xmx”之類的參數指定堆區域的大小。

第五,方法區(Method Area)。方法區與堆一樣,也是所有的線程所共享,存儲被虛擬機加載的元(Meta)數據,包括類信息、常量、靜態變量、即時編譯器編譯后的代碼等數據。這里需要注意的是運行時常量池也在方法區中。根據Java虛擬機規范的規定,當方法區無法滿足內存分配需求時,將拋出OutOfMemoryError異常。由于早期HotSpot JVM的實現,將CG分代收集拓展到了方法區,因此很多人會將方法區稱為永久代。Oracle JDK8中已永久代移除永久代,同時增加了元數據區(Metaspace)。

第六,運行時常量池(Run-Time Constant Pool),這是方法區的一部分,受到方法區內存的限制,當常量池無法再申請到內存時,會拋出OutOfMemoryError異常。

在Class文件中,除了有類的版本、方法、字段、接口等描述信息外,還有一項信息是常量池。每個Class文件的頭四個字節稱為Magic Number,它的作用是確定這是否是一個可以被虛擬機接受的文件;接著的四個字節存儲的是Class文件的版本號。緊挨著版本號之后的,就是常量池入口了。常量池主要存放兩大類常量:

  • 字面量(Literal),如文本字符串、final常量值
  • 符號引用,存放了與編譯相關的一些常量,因為Java不像C++那樣有連接的過程,因此字段方法這些符號引用在運行期就需要進行轉換,以便得到真正的內存入口地址。

class文件中的常量池,也稱為靜態常量池,JVM虛擬機完成類裝載操作后,會把靜態常量池加載到內存中,存放在運行時常量池。

第七,直接內存(Direct Memory),直接內存并不屬于Java規范規定的屬于Java虛擬機運行時數據區的一部分。Java的NIO可以使用Native方法直接在java堆外分配內存,使用DirectByteBuffer對象作為這個堆外內存的引用。

下面這張圖,反映了運行中的Java進程內存占用情況:

 

 

 

 

OOM可能發生在哪些區域上?

根據javadoc的描述,OOM是指JVM的內存不夠用了,同時垃圾收集器也無法提供更多的內存。從描述中可以看出,在JVM拋出OutOfMemoryError之前,垃圾收集器一般會出馬先嘗試回收內存。

從上面分析的Java數據區來看,除了程序計數器不會發生OOM外,哪些區域會發生OOM的情況呢?

第一,堆內存。堆內存不足是最常見的發送OOM的原因之一,如果在堆中沒有內存完成對象實例的分配,并且堆無法再擴展時,將拋出OutOfMemoryError異常。當前主流的JVM可以通過-Xmx和-Xms來控制堆內存的大小,發生堆上OOM的可能是存在內存泄露,也可能是堆大小分配不合理。

第二,Java虛擬機棧和本地方法棧,這兩個區域的區別不過是虛擬機棧為虛擬機執行Java方法服務,而本地方法棧則為虛擬機使用到的Native方法服務,在內存分配異常上是相同的。在JVM規范中,對Java虛擬機棧規定了兩種異常:1.如果線程請求的棧大于所分配的棧大小,則拋出StackOverFlowError錯誤,比如進行了一個不會停止的遞歸調用;2. 如果虛擬機棧是可以動態拓展的,拓展時無法申請到足夠的內存,則拋出OutOfMemoryError錯誤。

第三,直接內存。直接內存雖然不是虛擬機運行時數據區的一部分,但既然是內存,就會受到物理內存的限制。在JDK1.4中引入的NIO使用Native函數庫在堆外內存上直接分配內存,但直接內存不足時,也會導致OOM。

第四,方法區。隨著Metaspace元數據區的引入,方法區的OOM錯誤信息也變成了“java.lang.OutOfMemoryError:Metaspace”。對于舊版本的Oracle JDK,由于永久代的大小有限,而JVM對永久代的垃圾回收并不積極,如果往永久代不斷寫入數據,例如String.Intern()的調用,在永久代占用太多空間導致內存不足,也會出現OOM的問題,對應的錯誤信為“java.lang.OutOfMemoryError:PermGen space”

 

 

 

 

堆內存結構是怎么樣的?

可以借助一些工具來了解JVM的內存內容,具體到特定的內存區域,應該用什么工具去定位呢?

  • 圖形化工具。圖形化工具的優點是直觀,連接到Java進程后,可以顯示堆內存、堆外內存的使用情況,類似的工具有JConsole,VisualVm等。
  • 命令行工具。這類工具可以在運行時進行查詢,包括jstat,jmap等,可以對堆內存、方法區等進行查看。定位線上問題時也多會使用這些工具。jmap也可以生成堆轉儲文件(Heap Dump)文件,如果是在linux上,可以將堆轉儲文件拉到本地來,使用Eclipse MAT進行分析,也可以使用jhap進行分析。

關于內存的監控與診斷,在后面會進行深入了解。現在來看下一個問題:堆內的結構是怎么的呢?

站在垃圾收集器的角度來看,可以把內存分為新生代與老年代。內存的分配規則取決于當前使用的是哪種垃圾收集器的組合,以及內存相關的參數配置。往大的方向說,對象優先分配在新生代的Eden區域,而大對象直接進入老年代。

第一, 新生代的Eden區域,對象優先分配在該區域,同時JVM可以為每個線程分配一個私有的緩存區域,稱為TLAB(Thread Local Allocation Buffer),避免多線程同時分配內存時需要使用加鎖等機制而影響分配速度。TLAB在堆上分配,位于Eden中。TLAB的結構如下:

  1. // ThreadLocalAllocBuffer: a descriptor for thread-local storage used by 
  2.  
  3. // the threads for allocation. 
  4.  
  5. //            It is thread-private at any time, but maybe multiplexed over 
  6.  
  7. //            time across multiple threads. The park()/unpark() pair is 
  8.  
  9. //            used to make it avaiable for such multiplexing. 
  10.  
  11. class ThreadLocalAllocBuffer: public CHeapObj<mtThread> { 
  12.  
  13.   friend class VMStructs; 
  14.  
  15. private: 
  16.  
  17.   HeapWord* _start;                              // address of TLAB 
  18.  
  19.   HeapWord* _top;                                // address after last allocation 
  20.  
  21.   HeapWord* _pf_top;                             // allocation prefetch watermark 
  22.  
  23.   HeapWord* _end;                                // allocation end (excluding alignment_reserve) 
  24.  
  25.   size_t    _desired_size;                       // desired size   (including alignment_reserve) 
  26.  
  27.   size_t    _refill_waste_limit;                 // hold onto tlab if free() is larger than this 

從本質上來說,TLAB的管理是依靠三個指針:start、end、top。start與end標記了Eden中被該TLAB管理的區域,該區域不會被其他線程分配內存所使用,top是分配指針,開始時指向start的位置,隨著內存分配的進行,慢慢向end靠近,當撞上end時觸發TLAB refill。因此內存中Eden的結構大體為:

 

 

 

 

第二、新生代的Survivor區域。當Eden區域內存不足時會觸發Minor GC,也稱為新生代GC,在Minor GC存活下來的對象,會被復制到Survivor區域中。我認為Survivor區的作用在于避免過早觸發Full GC。如果沒有Survivor,Eden區每進行一次Minor GC都把對象直接送到老年代,老年代很快便會內存不足引發Full GC。新生代中有兩個Survivor區,我認為兩個Survivor的作用在于提高性能,避免內存碎片的出現。在任何時候,總有一個Survivor是empty的,在發生Minor GC時,會將Eden及另一個的Survivor的存活對象拷貝到該empty Survivor中,從而避免內存碎片的產生。新生代的內存結構大體為:

 

 

 

 

第三、老年代。老年代放置長生命周期的對象,通常是從Survivor區域拷貝過來的對象,不過當對象過大的時候,無法在新生代中用連續內存的存放,那么這個大對象就會被直接分配在老年代上。一般來說,普通的對象都是分配在TLAB上,較大的對象,直接分配在Eden區上的其他內存區域,而過大的對象,直接分配在老年代上。

第四、永久代。如前面所說,在早起的Hotspot JVM中有老年代的概念,老年代用于存儲Java類的元數據、常量池、Intern字符串等。在JDK8之后,就將老年代移除,而引入元數據區的概念。

第五、Vritual空間。前面說過,可以使用Xms與Xmx來指定堆的最小與最大空間。如果Xms小于Xmx,堆的大小不會直接擴展到上限,而是留著一部分等待內存需求不斷增長時,再分配給新生代。Vritual空間便是這部分保留的內存區域。

那么綜上所述,可以畫出Java堆內的內存結構大體為:

 

 

 

 

通過一些參數,可以來指定上述的堆內存區域的大小:

  • -Xmx value 指定最大的堆大小
  • -Xms value 指定初始的最小堆大小
  • -XX:NewSize = value 指定新生代的大小
  • -XX:NewRatio = value 老年代與新生代的大小比例。默認情況下,這個比例是2,也就是說老年代是新生代的2倍大。老年代過大的時候,Full GC的時間會很長;老年代過小,則很容易觸發Full GC,Full GC頻率過高,這就是這個參數會造成的影響。
  • -XX:SurvivorRation = value . 設置Eden與Srivivor的大小比例,如果該值為8,代表一個Survivor是Eden的1/8,是整個新生代的1/10。

常用的性能監控與問題定位工具有哪些?

在系統的性能分析中,CPU、內存與IO是主要的關注項。很多時候服務出現問題,在這三者上會體現出現,比如CPU飆升,內存不足發生OOM等,這時候需要使用對應的工具,來對性能進行監控,對問題進行定位。

對于CPU的監控,首先可以使用top命令來進行查看,下面是使用top查看負載的一個截圖:

 

 

 

 

load average 代表1分鐘、5分鐘、15分鐘的系統平均負載,從這三個數字,可以判斷系統負荷是大還是小。當CPU完全空閑的時候,平均負荷為0;當CPU工作量飽和的時候,平均負荷為1。因此 load average 這三個數值越低,代表系統負荷越小,那么什么時候能看出系統負荷比較重呢?這篇文章(Understanding Linux CPU Load – when should you be worried)里解釋得非常通俗。如果電腦里只有一個CPU,把CPU看成一條單行橋,橋上只有一個車道,所有的車都必須從這個橋上通過。那么

系統負荷為0,代表橋上一輛車也沒有

 

 

 

 

系統負荷0.5,意味著橋上一半路段上有車

 

 

 

 

系統負荷1,意味著橋上道路已經被車占滿

 

 

 

 

系統負荷1.7,代表著在橋上車子已經滿了(100%),同時還有70%的車子在等待從橋上通過:

 

 

 

 

從top命令的截圖中可以看到這三個值機器的load average非常低。如果這三個值非常高,比如超過了50%或60%,就應當引起注意。從時間維度上來說,如果發現CPU負荷慢慢升高,也需要警惕。

其他的內存、CPU等性能監控工具的使用,可以看下歷史文章

Tomcat 性能調優之 JVM 調優

Java七武器系列多情環 --多功能Profiling工具 JVisual VM

Java七武器系列長生劍 -- Java虛擬機的顯微鏡 Serviceability Agent

Java七武器系列孔雀翎-- 問題診斷神器BTrace

以一張腦圖來展示全部:

 

 

 

 

具體的使用方式可以參考從一次線上故障思考Java問題定位思路。

責任編輯:武曉燕 來源: Tomcat那些事兒
相關推薦

2021-04-14 10:14:34

JVM生產問題定位內存泄露

2013-04-09 14:49:18

Linux內存統計內存泄露

2019-11-20 15:02:45

Java虛擬機內存

2023-02-10 09:28:23

優化工具

2010-09-27 13:41:22

JVM內存回收

2012-03-02 14:20:46

JavaJVM

2010-09-25 09:56:46

JVM最大內存

2022-07-03 20:31:59

JVMJava虛擬機

2021-06-04 06:20:47

systemd定位工具系統運維

2025-05-26 00:22:00

2010-09-26 16:42:04

JVM內存組成JVM垃圾回收

2010-09-26 14:44:31

JVM內存監控工具

2024-04-25 10:06:03

內存泄漏

2010-09-26 15:38:33

JVM內存泄漏

2017-04-11 12:37:56

人工智能深度學習互聯網

2019-11-05 08:24:34

JavaOOM快速定位

2011-08-01 15:51:08

2010-09-27 15:03:34

TomcatJVM內存設置

2024-08-19 00:10:00

C++內存

2022-05-27 08:01:36

JVM內存收集器
點贊
收藏

51CTO技術棧公眾號

欧美一级高清片| 亚洲男人的天堂在线aⅴ视频| 97人人做人人爱| av网页在线观看| 小明成人免费视频一区| 成人欧美一区二区三区| 韩国一区二区三区美女美女秀| 日韩熟女一区二区| 伊人青青综合网| 亚洲人精品午夜在线观看| 亚洲免费av一区| 日韩欧美一中文字暮专区| 国产精品不卡在线| 国内成+人亚洲| 国产又爽又黄免费软件| 国产欧美日韩一级| 欧美精品亚州精品| 99精品欧美一区二区| www.久久东京| 欧美精品777| 欧美一级黄色片视频| 日韩激情av| 国产精品久久毛片| 欧美精品v日韩精品v国产精品| 国产美女无遮挡永久免费| 美女尤物久久精品| 欧美国产日韩视频| 五月天色婷婷丁香| 欧美精品momsxxx| 亚洲变态欧美另类捆绑| 一级日本黄色片| 久久久久伊人| 色欧美日韩亚洲| 国产96在线 | 亚洲| 国产成人无吗| 亚洲欧美一区二区视频| 亚洲精品一品区二品区三品区| 五月婷在线视频| 成人国产免费视频| 成人综合电影| 高h震动喷水双性1v1| 紧缚奴在线一区二区三区| 国产精品黄视频| 无码免费一区二区三区| 亚洲一级在线| 91sa在线看| www..com国产| 亚洲黄色精品| 亚洲18私人小影院| www.av视频在线观看| 欧美喷水视频| 欧美激情综合亚洲一二区| 日本在线一级片| 欧美+亚洲+精品+三区| 日韩在线中文字幕| 国产精品成人69xxx免费视频| 日韩国产综合| 日韩在线视频免费观看高清中文 | 成人免费视频网站在线观看| 91免费电影网站| 99国产精品99| 风流少妇一区二区| 国产一区二区三区四区hd| 日本人妻丰满熟妇久久久久久| 成人午夜又粗又硬又大| 国内外成人免费视频| 天天影院图片亚洲| 国产亚洲成年网址在线观看| 视频一区国产精品| 日本成a人片在线观看| 亚洲视频香蕉人妖| 青春草国产视频| 在线观看爽视频| 91福利国产精品| 男人的天堂最新网址| www.久久99| 精品国精品自拍自在线| 熟妇高潮精品一区二区三区| 精品国产精品国产偷麻豆| 最近2019中文免费高清视频观看www99| 国产又黄又粗又猛又爽的| 性欧美欧美巨大69| 午夜精品久久久久久久99热| 欧美a视频在线观看| 久久成人免费电影| 岛国一区二区三区高清视频| 男人av在线| 亚洲欧美在线视频观看| 国产人妻777人伦精品hd| 三上悠亚国产精品一区二区三区| 欧美日韩精品欧美日韩精品| 色男人天堂av| 免费欧美视频| 欧美大荫蒂xxx| 国产精品suv一区| 国产伦精品一区二区三区免费迷 | 波多野吉衣在线视频| 日本亚洲不卡| 久久国产精品影视| 4438国产精品一区二区| 国产乱人伦精品一区二区在线观看| 粉嫩精品一区二区三区在线观看| 国产在线一二三| 一区二区三区免费网站| 欧美一级裸体视频| 一区二区三区四区视频免费观看| 亚洲区在线播放| 免费中文字幕视频| 免费观看成人av| 久久天堂国产精品| 成人a在线视频免费观看| 色综合久久99| 无码一区二区精品| 最新欧美人z0oozo0| 国产不卡av在线免费观看| 亚洲国产精品久久久久久久 | 麻豆明星ai换脸视频| 国产精品一二| 国产精品久久国产精品| 麻豆传媒在线免费| 在线观看三级视频欧美| 久久福利小视频| 欧美私人啪啪vps| 91久久国产婷婷一区二区| 蜜桃免费在线| 精品国产乱码久久久久酒店| 久久出品必属精品| 日韩欧美午夜| 国产精品美女久久| 黄色av网站在线| 精品二区三区线观看| 在线观看免费视频国产| 一区二区蜜桃| 成人免费自拍视频| 免费黄色在线| 欧美精品日韩一区| www.xx日本| 麻豆精品国产91久久久久久| 欧洲一区二区日韩在线视频观看免费| 免费一二一二在线视频| 精品成人a区在线观看| 青青草偷拍视频| 国产一区二区三区高清播放| 制服丝袜综合日韩欧美| 国产麻豆一区| 日韩视频一区在线| 亚洲一区二区三区网站| 中文字幕在线观看一区二区| 性生活免费在线观看| 日韩免费一区| 91在线高清视频| 超碰porn在线| 欧美成人video| 久久午夜无码鲁丝片| 成人av网站在线观看免费| 精品视频在线观看一区| 美女av一区| 欧美在线国产精品| 黄网在线观看| 欧美日韩欧美一区二区| 亚洲欧美另类日本| 国产乱人伦精品一区二区在线观看 | 国产日韩在线观看一区| 亚洲精品国产成人久久av盗摄| 国产老头和老头xxxx×| 亚洲天堂偷拍| 欧美日韩亚洲一区二区三区四区| 高清电影一区| 日韩在线观看免费高清完整版| 国产伦精品一区二区三区免.费| 亚洲视频在线观看一区| 深夜视频在线观看| 久久久成人网| 亚洲精品中字| 综合伊人久久| 欧美在线国产精品| 女女色综合影院| 欧美成人一区二区三区在线观看 | 欧美专区日韩专区| 天天爽天天爽天天爽| 国产.精品.日韩.另类.中文.在线.播放| 日本一区午夜艳熟免费| 香蕉久久精品| 亚洲free嫩bbb| 男人久久天堂| 色偷偷偷综合中文字幕;dd| 超碰在线播放97| 色综合一区二区| 青青操在线视频观看| 成a人片亚洲日本久久| av五月天在线| 国内精品久久久久久久97牛牛 | 国产精品综合| 中文字幕日韩精品一区二区| 国产福利一区二区精品秒拍| 国产精品免费一区| h片视频在线观看| 在线电影av不卡网址| 精品人妻久久久久一区二区三区 | 免费看污污网站| 狠狠入ady亚洲精品| 日韩欧美99| 欧美变态网站| 91久久国产婷婷一区二区| 免费观看亚洲| 欧美福利视频在线| 9色在线视频网站| 日韩精品免费在线播放| 国产毛片一区二区三区va在线| 日韩欧美国产免费播放| 欧美日韩在线视频免费播放| 国产日韩精品一区二区浪潮av| 免费观看黄网站| 老司机午夜精品99久久| 亚洲国产精品久久久久婷蜜芽| 91精品国产自产拍在线观看蜜| 欧美欧美一区二区| 欧美电影在线观看完整版| 亚洲a成v人在线观看| 福利一区二区三区视频在线观看| 91成人国产在线观看| 岛国片av在线| 欧美人在线观看| 黄色一级片在线观看| 中文字幕亚洲一区二区三区| 青草久久伊人| 日韩成人av网址| 全国男人的天堂网| 日韩小视频在线观看专区| 97人妻一区二区精品免费视频 | 久久爱www成人| 国产午夜精品在线| 豆花视频一区二区| 97se国产在线视频| 亚洲国产高清在线观看| 成人有码在线视频| 伊人久久大香线蕉综合影院首页| 国产精品久久久久久中文字| 国产高清不卡| 欧美一级在线播放| 午夜伦理福利在线| 日本伊人精品一区二区三区介绍| 国产拍在线视频| 久久久噜噜噜久久| 草草视频在线| 欧美一级免费看| av日韩电影| 国产99久久精品一区二区永久免费 | 亚洲欧洲综合另类| 亚洲国产精品免费在线观看| 最新国产の精品合集bt伙计| 婷婷伊人五月天| 亚洲日本中文字幕区| 永久看片925tv| 一区二区三区四区国产精品| 久久国产露脸精品国产| 亚洲一区二区三区在线播放| 国产一级片网址| 欧美日韩国产中文字幕| 国产精品一区二区三区四| 欧美性生交xxxxx久久久| 亚洲无码精品一区二区三区| 在线看国产一区二区| 亚洲一级视频在线观看| 国产精品久久久久久福利| 国产日韩欧美一区二区三区综合| 成年人在线观看av| 久久久久国产免费免费| 黄色三级生活片| 中文字幕在线一区二区三区| 国产少妇在线观看| 亚洲一级在线观看| yjizz国产| 欧美日韩亚洲丝袜制服| 精品久久在线观看| 日韩国产欧美区| 超碰免费在线| 欧美肥臀大乳一区二区免费视频| 久草免费在线视频| 国产精品网红福利| ccyy激情综合| 热re99久久精品国产99热| 外国成人免费视频| 男人插女人视频在线观看| 日韩在线a电影| 日本亚洲一区二区三区| 91麻豆国产香蕉久久精品| 免费看黄色三级| 亚洲国产wwwccc36天堂| www.av88| 亚洲福利在线看| 午夜老司机在线观看| 欧美极品第一页| 成人黄色图片网站| 国产精品加勒比| 国产精品成人av| 激情六月丁香婷婷| 国产精品一区不卡| 亚洲一级片在线播放| 亚洲综合丝袜美腿| 亚洲天堂手机在线| 亚洲国产91色在线| 国产在线69| 国产精品久久久久久久久久免费| 中文无码日韩欧| 亚洲永久激情精品| 午夜亚洲视频| 国产精品日日摸夜夜爽| 国产精品你懂的在线欣赏| 日韩av免费网址| 欧美一区午夜视频在线观看| 国产在线视频你懂得| 欧美疯狂xxxx大交乱88av| 国产亚洲人成a在线v网站| 久久久久久九九| 午夜日韩福利| 日本黄大片一区二区三区| 久久这里都是精品| 精品少妇久久久| 91精品欧美一区二区三区综合在| 成年在线观看免费人视频| 欧美亚洲成人网| 国产色噜噜噜91在线精品| 四虎免费在线观看视频| 青青草国产精品亚洲专区无| 亚洲の无码国产の无码步美| 亚洲综合激情小说| 国产露脸国语对白在线| 中文字幕亚洲一区在线观看 | 国产日韩在线免费| 国产亚洲欧美日韩在线观看一区二区 | 国产日韩精品中文字无码| 日韩欧美亚洲国产一区| 天天摸天天干天天操| 欧美精品video| 中文字幕一区二区三区日韩精品| 最新国产精品久久| 久久黄色级2电影| av在线免费播放网址| 欧美性大战久久久| 99免在线观看免费视频高清| 日韩av免费在线| 国产一区二区三区电影在线观看| 狠狠97人人婷婷五月| 91片在线免费观看| 最新中文字幕一区| 亚洲日韩中文字幕| 蜜臀国产一区| 亚州欧美一区三区三区在线| 日韩黄色免费网站| 日日碰狠狠添天天爽| 欧美日韩电影在线| 九七久久人人| 高清视频一区| 国产日韩高清一区二区三区在线| 日批在线观看视频| 欧美三级免费观看| 久热av在线| 国产精品日韩av| 亚洲精品久久| 欧美性生交xxxxx| 精品福利一区二区| shkd中文字幕久久在线观看| 国产欧美日韩最新| 国产精品mm| 波多野结衣福利| 欧美三级三级三级爽爽爽| 精品视频在线一区二区| 国产91一区二区三区| 国产精品视频久久一区| 免费福利视频网站| 日韩一区二区三区在线| 国产精品69xx| 日本一区二区不卡高清更新| 蜜桃一区二区三区在线观看| 日本精品人妻无码77777| 亚洲精品aⅴ中文字幕乱码 | 亚洲一区二区在线播放| 一区免费视频| 免费一级黄色录像| 日韩欧美一级二级三级久久久| 136福利第一导航国产在线| 欧美精品v日韩精品v国产精品| 久久99国产乱子伦精品免费| 久久精品女人毛片国产| 亚洲欧美制服第一页| 成人av在线播放| 久久无码高潮喷水| 中文字幕一区在线观看视频| 午夜精品久久久久久久爽 | 国产美女精品视频免费播放软件| 欧美一级视频在线播放| 欧美国产精品一区| 黄色av一区二区三区| 国产精品久久久久久久久久久新郎| 中文在线播放一区二区| 亚洲一区视频在线播放| 日韩丝袜美女视频| 91tv亚洲精品香蕉国产一区| 老子影院午夜伦不卡大全|