久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術文章
文章詳情頁

JVM系列之:再談java中的safepoint說明

瀏覽:3日期:2022-08-24 16:58:25

safepoint是什么

java程序里面有很多很多的java線程,每個java線程又有自己的stack,并且共享了heap。這些線程一直運行呀運行,不斷對stack和heap進行操作。

這個時候如果JVM需要對stack和heap做一些操作該怎么辦呢?

比如JVM要進行GC操作,或者要做heap dump等等,這時候如果線程都在對stack或者heap進行修改,那么將不是一個穩定的狀態。GC直接在這種情況下操作stack或者heap,會導致線程的異常。

怎么處理呢?

這個時候safepoint就出場了。

safepoint就是一個安全點,所有的線程執行到安全點的時候就會去檢查是否需要執行safepoint操作,如果需要執行,那么所有的線程都將會等待,直到所有的線程進入safepoint。

然后JVM執行相應的操作之后,所有的線程再恢復執行。

safepoint的例子

我們舉個例子,一般safepoint比如容易出現在循環遍歷的情況,還是使用我們之前做null測試用的例子:

public class TestNull { public static void main(String[] args) throws InterruptedException { List<String> list= new ArrayList(); list.add('www.flydean.com'); for (int i = 0; i < 10000; i++) { testMethod(list); } Thread.sleep(1000); } private static void testMethod(List<String> list) { list.get(0); }}

運行結果如下:

JVM系列之:再談java中的safepoint說明

標紅的就是傳說中的safepoint。

線程什么時候會進入safepoint

那么線程什么時候會進入safepoint呢?

一般來說,如果線程在競爭鎖被阻塞,IO被阻塞,或者在等待獲得監視器鎖狀態時,線程就處于safepoint狀態。

如果線程再執行JNI代碼的哪一個時刻,java線程也處于safepoint狀態。因為java線程在執行本地代碼之前,需要保存堆棧的狀態,讓后再移交給native方法。

如果java的字節碼正在執行,那么我們不能判斷該線程是不是在safepint上。

safepoint是怎么工作的

如果你使用的是hotspot JVM,那么這個safepoint是一個全局的safepoint,也就是說執行Safepoint需要暫停所有的線程。

如果你使用的是Zing,那么可以在線程級別使用safepoint。

我們可以看到生成的匯編語言中safepoint其實是一個test命令。

test指向的是一個特殊的內存頁面地址,當JVM需要所有的線程都執行到safepint的時候,就會對該頁面做一個標記。從而通知所有的線程。

我們再用一張圖來詳細說明:

JVM系列之:再談java中的safepoint說明

thread1在收到設置safepoint之前是一直執行的,在收到信號之后還會執行一段時間,然后到達Safepint暫停執行。

thread2先執行了一段時間,然后因為CPU被搶奪,空閑了一段時間,在這段時間里面,thread2收到了設置safepoint的信號,然后thread2獲得執行權力,接著繼續執行,最后到達safepoint。

thread3是一個native方法,將會一直執行,知道safepoint結束。

thread4也是一個native方法,它和thread3的區別就在于,thread4在safepoint開始和結束之間結束了,需要將控制器轉交給普通的java線程,因為這個時候JVM在執行Safepoint的操作,所以任然需要暫停執行。

在HotSpot VM中,你可以在匯編語言中看到safepoint的兩種形式:’{poll}’ 或者 ‘{poll return}’ 。

總結

本文詳細的講解了JVM中Safepoint的作用,希望大家能夠喜歡。

補充知識:JVM源碼分析之安全點safepoint

上周有幸參加了一次關于JVM的小范圍分享會,聽完R大對虛擬機C2編譯器的講解,我的膝蓋一直是腫的,能記住的實在有點少,能聽進去也不多

1、什么時候進行C2編譯,如何進行C2編譯(這個實在太復雜)

2、C2編譯的時候,是對整個方法體進行編譯,而不是某個方法段

3、JVM中的safepoint

一直都知道,當發生GC時,正在執行Java code的線程必須全部停下來,才可以進行垃圾回收,這就是熟悉的STW(stop the world),但是STW的背后實現原理,比如這些線程如何暫停、又如何恢復?就比較疑惑了。

然而這一切的一切,都涉及到一個概念safepoint,openjdk的實現位于

openjdk/hotspot/src/share/vm/runtime/safepoint.cpp

什么是safepoint

safepoint可以用在不同地方,比如GC、Deoptimization,在Hotspot VM中,GC safepoint比較常見,需要一個數據結構記錄每個線程的調用棧、寄存器等一些重要的數據區域里什么地方包含了GC管理的指針。

從線程角度看,safepoint可以理解成是在代碼執行過程中的一些特殊位置,當線程執行到這些位置的時候,說明虛擬機當前的狀態是安全的,如果有需要,可以在這個位置暫停,比如發生GC時,需要暫停暫停所以活動線程,但是線程在這個時刻,還沒有執行到一個安全點,所以該線程應該繼續執行,到達下一個安全點的時候暫停,等待GC結束。

什么地方可以放safepoint

下面以Hotspot為例,簡單的說明一下什么地方會放置safepoint

1、理論上,在解釋器的每條字節碼的邊界都可以放一個safepoint,不過掛在safepoint的調試符號信息要占用內存空間,如果每條機器碼后面都加safepoint的話,需要保存大量的運行時數據,所以要盡量少放置safepoint,在safepoint會生成polling代碼詢問VM是否要“進入safepoint”,polling操作也是有開銷的,polling操作會在后續解釋。

2、通過JIT編譯的代碼里,會在所有方法的返回之前,以及所有非counted loop的循環(無界循環)回跳之前放置一個safepoint,為了防止發生GC需要STW時,該線程一直不能暫停。另外,JIT編譯器在生成機器碼的同時會為每個safepoint生成一些“調試符號信息”,為GC生成的符號信息是OopMap,指出棧上和寄存器里哪里有GC管理的指針。

線程如何被掛起

如果觸發GC動作,VM thread會在VMThread::loop()方法中調用SafepointSynchronize::begin()方法,最終使所有的線程都進入到safepoint。

// Roll all threads forward to a safepoint and suspend them allvoid SafepointSynchronize::begin() { Thread* myThread = Thread::current(); assert(myThread->is_VM_thread(), 'Only VM thread may execute a safepoint'); if (PrintSafepointStatistics || PrintSafepointStatisticsTimeout > 0) { _safepoint_begin_time = os::javaTimeNanos(); _ts_of_current_safepoint = tty->time_stamp().seconds(); }

在safepoint實現中,有這樣一段注釋,Java threads可以有多種不同的狀態,所以掛起的機制也不同,一共列舉了5中情況:

1、執行Java code

在執行字節碼時會檢查safepoint狀態,因為在begin方法中會調用Interpreter::notice_safepoints()方法,通知解釋器更新dispatch table,實現如下:

void TemplateInterpreter::notice_safepoints() { if (!_notice_safepoints) { // switch to safepoint dispatch table _notice_safepoints = true; copy_table((address*)&_safept_table, (address*)&_active_table, sizeof(_active_table) / sizeof(address)); }}

2、執行native code

如果VM thread發現一個Java thread正在執行native code,并不會等待該Java thread阻塞,不過當該Java thread從native code返回時,必須檢查safepoint狀態,看是否需要進行阻塞。

這里涉及到兩個狀態:Java thread state和safepoint state,兩者之間有著嚴格的讀寫順序,一般可以通過內存屏障實現,但是性能開銷比較大,Hotspot采用另一種方式,調用os::serialize_thread_states()把每個線程的狀態依次寫入到同一個內存頁中,實現如下:

// Serialize all thread state variablesvoid os::serialize_thread_states() { // On some platforms such as Solaris & Linux, the time duration of the page // permission restoration is observed to be much longer than expected due to // scheduler starvation problem etc. To avoid the long synchronization // time and expensive page trap spinning, ’SerializePageLock’ is used to block // the mutator thread if such case is encountered. See bug 6546278 for details. Thread::muxAcquire(&SerializePageLock, 'serialize_thread_states'); os::protect_memory((char *)os::get_memory_serialize_page(), os::vm_page_size(), MEM_PROT_READ); os::protect_memory((char *)os::get_memory_serialize_page(), os::vm_page_size(), MEM_PROT_RW); Thread::muxRelease(&SerializePageLock);}

通過VM thread執行一系列mprotect os call,保證之前所有線程狀態的寫入可以被順序執行,效率更高。

3、執行complied code

如果想進入safepoint,則設置polling page不可讀,當Java thread發現該內存頁不可讀時,最終會被阻塞掛起。在SafepointSynchronize::begin()方法中,通過os::make_polling_page_unreadable()方法設置polling page為不可讀。

if (UseCompilerSafepoints && DeferPollingPageLoopCount < 0) { // Make polling safepoint aware guarantee (PageArmed == 0, 'invariant') ; PageArmed = 1 ; os::make_polling_page_unreadable();}

方法make_polling_page_unreadable()在不同系統的實現不一樣

linux下實現

// Mark the polling page as unreadablevoid os::make_polling_page_unreadable(void) { if( !guard_memory((char*)_polling_page, Linux::page_size()) ) fatal('Could not disable polling page');};

solaris下實現

// Mark the polling page as unreadablevoid os::make_polling_page_unreadable(void) { if( mprotect((char *)_polling_page, page_size, PROT_NONE) != 0 ) fatal('Could not disable polling page');};

在JIT編譯中,編譯器會把safepoint檢查的操作插入到機器碼指令中,比如下面的指令:

0x01b6d627: call 0x01b2b210 ; OopMap{[60]=Oop off=460} ;*invokeinterface size ; - Client1::main@113 (line 23) ; {virtual_call} 0x01b6d62c: nop ; OopMap{[60]=Oop off=461} ;*if_icmplt ; - Client1::main@118 (line 23) 0x01b6d62d: test %eax,0x160100 ; {poll} 0x01b6d633: mov 0x50(%esp),%esi 0x01b6d637: cmp %eax,%esi

test %eax,0x160100 就是一個檢查polling page是否可讀的操作,如果不可讀,則該線程會被掛起等待。

4、線程處于Block狀態

即使線程已經滿足了block condition,也要等到safepoint operation完成,如GC操作,才能返回。

5、線程正在轉換狀態

會去檢查safepoint狀態,如果需要阻塞,就把自己掛起。

最終實現

當線程訪問到被保護的內存地址時,會觸發一個SIGSEGV信號,進而觸發JVM的signal handler來阻塞這個線程,The GC thread can protect some memory to which all threads in the process can write (using the mprotect system call) so they no longer can. Upon accessing this temporarily forbidden memory, a signal handler kicks in。

再看看底層是如何處理這個SIGSEGV信號,實現位于

hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp// Check to see if we caught the safepoint code in the// process of write protecting the memory serialization page.// It write enables the page immediately after protecting it// so we can just return to retry the write.if ((sig == SIGSEGV) && os::is_memory_serialize_page(thread, (address) info->si_addr)) { // Block current thread until the memory serialize page permission restored. os::block_on_serialize_page_trap(); return true;}

執行os::block_on_serialize_page_trap()把當前線程阻塞掛起。

線程如何恢復

有了begin方法,自然有對應的end方法,在SafepointSynchronize::end()中,會最終喚醒所有掛起等待的線程,大概實現如下:

1、重新設置pooling page為可讀

if (PageArmed) { // Make polling safepoint aware os::make_polling_page_readable(); PageArmed = 0 ; }

2、設置解釋器為ignore_safepoints,實現如下:

// switch from the dispatch table which notices safepoints back to the// normal dispatch table. So that we can notice single stepping points,// keep the safepoint dispatch table if we are single stepping in JVMTI.// Note that the should_post_single_step test is exactly as fast as the// JvmtiExport::_enabled test and covers both cases.void TemplateInterpreter::ignore_safepoints() { if (_notice_safepoints) { if (!JvmtiExport::should_post_single_step()) { // switch to normal dispatch table _notice_safepoints = false; copy_table((address*)&_normal_table, (address*)&_active_table, sizeof(_active_table) / sizeof(address)); } }}

3、喚醒所有掛起等待的線程

// Start suspended threads for(JavaThread *current = Threads::first(); current; current = current->next()) { // A problem occurring on Solaris is when attempting to restart threads // the first #cpus - 1 go well, but then the VMThread is preempted when we get // to the next one (since it has been running the longest). We then have // to wait for a cpu to become available before we can continue restarting // threads. // FIXME: This causes the performance of the VM to degrade when active and with // large numbers of threads. Apparently this is due to the synchronous nature // of suspending threads. // // TODO-FIXME: the comments above are vestigial and no longer apply. // Furthermore, using solaris’ schedctl in this particular context confers no benefit if (VMThreadHintNoPreempt) { os::hint_no_preempt(); } ThreadSafepointState* cur_state = current->safepoint_state(); assert(cur_state->type() != ThreadSafepointState::_running, 'Thread not suspended at safepoint'); cur_state->restart(); assert(cur_state->is_running(), 'safepoint state has not been reset'); }

對JVM性能有什么影響

通過設置JVM參數 -XX:+PrintGCApplicationStoppedTime, 可以打出系統停止的時間,大概如下:

Total time for which application threads were stopped: 0.0051000 seconds Total time for which application threads were stopped: 0.0041930 seconds Total time for which application threads were stopped: 0.0051210 seconds Total time for which application threads were stopped: 0.0050940 seconds Total time for which application threads were stopped: 0.0058720 seconds Total time for which application threads were stopped: 5.1298200 secondsTotal time for which application threads were stopped: 0.0197290 seconds Total time for which application threads were stopped: 0.0087590 seconds

從上面數據可以發現,有一次暫停時間特別長,達到了5秒多,這在線上環境肯定是無法忍受的,那么是什么原因導致的呢?

一個大概率的原因是當發生GC時,有線程遲遲進入不到safepoint進行阻塞,導致其他已經停止的線程也一直等待,VM Thread也在等待所有的Java線程掛起才能開始GC,這里需要分析業務代碼中是否存在有界的大循環邏輯,可能在JIT優化時,這些循環操作沒有插入safepoint檢查。

以上這篇JVM系列之:再談java中的safepoint說明就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
主站蜘蛛池模板: 99re在线精品 | 日韩视频在线免费观看 | 欧美日韩精品一区 | 欧美在线xxx | 久久精品免费观看视频 | 欧美一级精品 | 九九在线国产视频 | 日日干夜夜操 | 亚洲高清视频在线 | 一区二区三区免费在线观看 | 日本精品一区二区三区在线观看视频 | 亚洲国产精品久久久久秋霞不卡 | 国产日韩一区 | 黄色毛片在线观看 | 日韩专区一区二区三区 | 国产精品视频不卡 | 国产麻豆一区二区三区 | 日韩视频免费在线观看 | 热久久久| 欧美va天堂 | 国产日韩精品在线 | 欧美成人中文字幕 | 秋霞av在线 | 亚洲女人天堂av | 欧美国产在线一区 | 中文字幕7777 | 久久精品视频网 | 欧美激情综合五月色丁香小说 | 久久久免费视频播放 | 亚洲人人 | 欧美精品成人一区二区三区四区 | 在线观看中文字幕 | 精品乱子伦一区二区三区 | 久久久久久国产精品mv | 狠狠操狠狠操 | 超碰一区二区三区 | 久久国产精品一区 | 成人免费观看视频 | 国产午夜精品久久久久久久 | 成人午夜视频在线观看 | 国内精品久久久久 | 天天干天天操 | 日韩精品一区二区三区在线 | 91亚洲国产成人久久精品网站 | 精品国产乱码久久久久久丨区2区 | 中文字幕一二三区 | 欧美另类亚洲 | 久久久久九九九九九 | 欧美视频xxx | 国产欧美综合一区二区三区 | 99久久久久久久久 | 亚洲人黄色片 | 国产精品99 | 一级全黄少妇性色生活片毛片 | 一区二区在线不卡 | 精品成人 | 国产一级一级特黄女人精品毛片 | 欧美中文字幕在线观看 | 久久久久久9 | 色先锋资源| 久综合网 | 日韩一区二区三区在线 | 一级免费片 | 日韩欧美一区二区三区免费观看 | 国产成人精品一区二区三区网站观看 | 色av综合在线| 国产色在线 | 涩涩操 | 成人欧美一区二区三区在线播放 | 国产精品3区 | 国产一区二区三区精品久久久 | 中文字幕 视频一区 | 国产视频一区二区 | 就操成人网 | 日韩国产欧美一区 | 久久久精品高清 | 欧美性猛交一区二区三区精品 | 色噜噜视频 | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 久久国产区 | 在线视频自拍 | 国产精品视频 | 五月婷婷综合网 | 日本做暖暖视频高清观看 | 国产69精品久久久久观看黑料 | 亚洲成人免费影院 | 日韩在线观看视频一区二区三区 | 国产精品免费在线 | 亚洲国产二区 | 久久久精品免费观看 | 九九亚洲| 一区二区三区国产精品 | 国产日韩一级片 | 婷婷在线观看视频 | av毛片 | 国产精品国产三级国产a | 久久三区| 亚洲福利一区二区 | 天天操天天色天天 | 天天天天天天天天操 | 91污在线 | 男女啪啪高清无遮挡 | 91精产国品一二三区在线观看 | 久久久久国产精品免费免费搜索 | 欧美二区三区 | 国产精品日韩一区二区 | 国产精品一二三 | 久久a国产 | a级性生活片 | 日韩中文字幕在线免费观看 | 亚洲精品3| 亚洲精品视频网 | 国产免费一区二区三区四区五区 | 亚洲国产综合在线 | 亚洲成人久久久 | 亚洲高清久久 | baoyu133. con永久免费视频 | 久久久精品网站 | www.一级电影 | 99久久99久久久精品色圆 | 国产高清av在线一区二区三区 | 中文字幕亚洲欧美日韩在线不卡 | www.888www看片 | 日韩免费在线 | 国产毛片精品 | 精品国产一区二区三区久久久 | 亚洲精品91| 精品人成 | 一级毛片免费看 | 欧美精品成人一区二区三区四区 | 91精品国产91久久久久游泳池 | 亚洲天堂中文字幕 | 欧美日韩激情一区二区三区 | 久久一区| av在线一区二区三区 | 亚洲片在线观看 | 在线免费黄色 | 亚洲国产一区二区在线观看 | 国产精品污www在线观看 | 国产成人一区二区 | 日韩欧美中字 | 999在线观看精品免费不卡网站 | 成人欧美一区二区三区黑人孕妇 | 国产精品视频一区二区三区 | 亚洲三区在线观看 | 成人不卡视频 | 国产一区日韩在线 | 亚洲欧美日韩电影 | 午夜精品久久久久久99热软件 | 人人干网站| 毛片日韩 | 91高清视频在线观看 | 日本亚洲欧美 | 91视频在线| 亚洲欧洲一区二区 | 一区二区不卡 | 欧美喷潮久久久xxxxx | 国内精品久久久久国产 | 91精品国产综合久久福利 | 精品一区二区三区在线观看 | 亚洲网站在线观看 | 亚洲日韩欧美一区二区在线 | 欧美激情一区二区三区四区 | 韩国精品一区二区 | 国产精品女人视频 | 亚洲高清视频在线 | 国产一区二区三区四区视频 | www久久久久久久 | av在线免费观看网站 | 99re免费视频精品全部 | 国产一区二精品区在线 | 另类国产ts人妖高潮系列视频 | 在线免费国产 | 亚洲一区二区在线免费观看 | 手机看片169 | 日韩日韩日韩日韩日韩日韩日韩 | 亚洲欧美日韩国产综合精品二区 | 午夜精品久久久久久久久久久久 | 99国产精品久久久久久久 | 国产成人精品免高潮在线观看 | 99伊人 | av成人在线观看 | 久久久久久久久久久久网站 | 91久久精品一区二区二区 | 精品少妇一区二区三区日产乱码 | 欧美精三区欧美精三区 | 一区二区三区精品视频 | 欧美精品一区二区在线观看 | 免费毛片视频 | 欧美成人一区二区三区片免费 | 男女免费视频 | 日韩精品久久理论片 | 一区在线观看 | 精品乱子伦一区二区三区 | 天天看天天操 | 国内精品视频一区二区三区 | 日本三级国产 | 中文字幕99 | 最新中文字幕 | 欧美日韩在线精品 | 欧美区亚洲区 | 在线中文字幕视频 | 国产剧情一区二区 | 91九色视频在线 | 亚洲欧美一区二区三区久久 | 午夜电影网 | 综合久久综合久久 | 天天操网 | 久久久久久电影 | 欧洲黄色 级黄色99片 | 能直接看的av网站 | 亚洲第一色片 | 欧美精品乱码久久久久久按摩 | 亚洲乱码国产乱码精品精 | 久久久日本 | 精品久久久久久 | 国产欧美在线视频 | 欧洲视频一区二区 | 国产高潮好爽受不了了夜色 | 亚洲人人 | 久久免费精品视频 | 午夜精品久久久久久久久 | 精品久久久久香蕉网 | 中文字幕在线第一页 | 视频网站免费观看 | 中文久久| 国产成人在线免费观看 | 久久在线视频 | 免费观看的av | 欧美精品一区二区三区四区在线 | 日本天天操 | 国产精品女教师av久久 | 精品国产免费久久久久久尖叫 | a中文字幕| 日本一区二区精品 | 国产精品美女久久久久久久久久久 | 久久狠狠 | 国产亚洲精品精品国产亚洲综合 | 国产福利一区二区三区四区 | 婷婷av在线| 中文字幕加勒比 | 午夜私人影院在线观看 | 亚洲成人日韩 | 亚洲视频免费在线 | 亚洲九九| 国产第一区在线观看 | 在线中文日韩 | 夜夜夜久久久 | 亚洲影视一区二区 | 亚洲精品一区二区在线观看 | 四虎影院在线免费播放 | 91亚洲高清 | 亚洲欧美中文日韩在线v日本 | 婷婷中文字幕 | 亚洲一区久久 | 国产成人精品综合 | 欧美激情一区二区三级高清视频 | 精品国产髙清在线看国产毛片 | 欧美精品成人一区二区在线 | av黄在线观看| 草草成人| 天天网| 狠狠操综合网 | 国产欧美日韩 | 国产在线视频一区二区 | 一区二区不卡 | 另类 综合 日韩 欧美 亚洲 | 中文字幕一区二区三区精彩视频 | 午夜精品在线 | 国产色| 国产精品久久久久久久久久久久 | 99热69| 亚洲一区二区三区在线视频 | 国产二区视频 | 日本一区不卡 | 国产精品视频区 | 日韩精品毛片 | 伊人久久视频 | 免费的污网站 | 午夜影院免费观看 | 国产精品三级在线 | 欧美精品一区二区三区四区 | 亚洲精品二区 | 欧美日韩国产精品一区 | vagaa欧洲色爽免影院 | 成人在线观 | 成人免费视频网站在线观看 | 久久精品国产亚洲一区二区三区 | 成人免费观看49www在线观看 | 精品久久亚洲 | 中文久久 | 久久精品极品 | 欧美在线国产 | 天天插天天干 | 午夜影院普通用户体验区 | 九九热免费精品视频 | 成人做爰69片免费 | 日韩在线视频网站 | 美女又黄又免费 | 亚洲国产视频精品 | 午夜毛片| 在线观看成人小视频 | 黄色资源网站 | 黄色在线免费观看 | 伊人色综合久久久天天蜜桃 | 亚洲精品在线播放 | 国产乱肥老妇国产一区二 | 亚洲人人| 99国产精品久久久久久久 | 亚洲男人天堂av | 国产亚州av | 亚洲精品国产电影 | 日本天天操 | 精品视频网站 | 一级全毛片 | 一区二区三区精品视频 | 日韩免费观看视频 | 精品香蕉视频 | 成人综合在线观看 | 91精品国产乱码久久久久久久久 | 看亚洲a级一级毛片 | 欧美在线观看一区二区 | 精品久久久久一区二区国产 | 激情福利视频 | 成人不卡 | 国产精品高清在线 | 狠狠躁夜夜躁人人爽天天天天97 | 日韩大尺度电影在线观看 | 在线视频 中文字幕 | 中国妞xxxhd露脸偷拍视频 | 成人网址在线观看 | 国产精品久久久久国产a级 日韩在线二区 | 国产www在线 | 91在线看 | 日本一区二区高清不卡 | 蜜桃av在线播放 | 亚洲色图综合 | 欧美乱操| 国产福利在线播放 | 国产一级视频免费观看 | 色九九 | 国产二区三区 | 超碰c| 精品欧美一区二区在线观看视频 | 国产一区二区av | 国变精品美女久久久久av爽 | av免费网站在线观看 | 毛片黄色| 亚洲欧美一区二区三区视频 | 久久精品视频免费看 | 国产高清视频在线 | 日韩爽妇网 | 中文在线一区二区 | 亚洲美女av在线 | 日韩一级免费在线观看 | 91豆花视频 | 中字幕视频在线永久在线观看免费 | 天天操狠狠操 | 国产综合精品一区二区三区 | www国产一区 | 国产精品免费视频观看 | 视频二区 | 91久久久久久久久久久久久 | 久久精品在线视频 | 免费一区在线 | 天天精品视频免费观看 | 亚洲一级在线 | 免费看91| 九九香蕉视频 | 91免费在线看 | 欧美寡妇偷汉性猛交 | 在线视频a | 日韩中文字幕在线视频 | 亚洲成人av在线 | 国产精品久久久 | 国产高清一区二区 | 在线成人一区 | 国产一区二区三区免费 | 亚洲精品一二三区 | 特黄一级| 午夜一区二区三区在线观看 | 久久久99久久久国产自输拍 | 欧美 日韩 国产 一区 | 欧美精品1区2区3区 精品国产欧美一区二区 | 欧美日韩在线一区 | 日本高清无卡码一区二区久久 | av网站免费在线观看 | 亚洲男人的天堂在线 | 成人国产在线观看 | 中文字幕在线观看亚洲 | 日韩在线免费 | 99精品国产高清一区二区麻豆 | 欧美大片免费高清观看 | 欧美精品一区视频 | 亚洲人久久| 天天爽夜夜春 | 久久久久久国产免费视网址 | 久草视频播放 | 深夜福利1000 | 精品国产一区二区三区在线观看 | 麻豆av电影在线观看 | 日韩性xxx| 在线日韩欧美 | 亚州成人| 蜜桃av中文字幕 | 国产成人精品一区二区三区视频 | 99色资源 | 夜夜av | 日本精品一区 | 不卡久久 | 欧美日韩精品久久久 | 一级在线免费视频 | 午夜免费看片 | 国产精品资源在线 | 一级片在线观看 | 国产综合一区二区 | 国产伦精品一区二区 | 日日夜夜天天 | 日韩精品在线视频 | 伊人av成人 | 国产91久久精品一区二区 | 欧美三级视频 | 国产精品久久久久9999赢消 | 国产羞羞视频在线观看 | 亚洲精品久久久久久一区二区 | 在线欧美亚洲 | 青青草久| 伊人久久综合 | 欧美激情国产日韩精品一区18 | 亚洲精品久久久久久下一站 | 国产黄色大全 | 日日人人 | √8天堂资源地址中文在线 成人欧美一区二区三区白人 | 福利毛片| 欧美全黄 | 日韩精品免费在线视频 | 国产精品成人免费视频 | 国产精品免费一区 | 国产精品久久久久久久岛一牛影视 | 久久在线视频 | 黄色毛片一级 | 国产96在线观看 | 91免费看片神器 | av国产精品| 亚洲成人综合在线 | 国产免费av在线 | 很黄很污的网站 | 成人a视频在线观看 | 三级黄色片在线播放 | 中文字幕在线视频精品 | 亚洲中午字幕 | 亚洲毛片| 日本在线视频观看 | 可以看的毛片网站 | 91亚洲国产成人久久精品网站 | 狠狠爱亚洲| 久久成人一区 | 一级做a爰片性色毛片 | 久久久精品久久久 | 九色在线观看 | 国产一区二区在线播放 | 黄色大片网站 | 狠狠色综合欧美激情 | 国产日韩欧美一区 | 久久爱www. | 另类久久 | 日韩欧美一区二区三区免费观看 | av大片| 国产精久久久久久久妇剪断 | 午夜影院在线看 | 久久久精品国产 | 国产精品久久久久久影院8一贰佰 | 成人精品久久久 | 黄色大片网站在线观看 | 亚洲视频在线播放 | 日韩精品专区在线影院重磅 | 日韩国产一区二区 | aaa在线观看 | 国产亚洲一区二区三区 | 在线视频二区 | 曰批视频在线观看 | 91春色| 青青久久av北条麻妃海外网 | 免费成人在线电影 | 一区二区三区在线看 | 国产精品视频一区二区三区 | 欧美成年黄网站色视频 | 亚洲国产精品一区二区久久 | 欧美国产日韩一区 | 午夜精品久久久久久久久久久久 | 午夜影院操 | 日韩免费视频一区二区 | 日韩一区二区中文字幕 | 91麻豆精品国产91久久久久久 | 一区二区三区四区不卡视频 | 黄网在线观看 | 久久久久国产 | 久久99深爱久久99精品 | 视频一区二区国产 | 久久久国产视频 | aaaaaa黄色片 | 91视频三区 | 中文字幕在线视频第一页 | 韩日在线视频 | 国产午夜精品久久久久久久 | 欧州一区二区三区 | 一区二区三区四区免费观看 | 久久久国产一区二区三区 | 五月婷婷激情 | 国产精品久久久久久久久 | 亚洲国产精品18久久 | 色乱码一区二区三区网站 | 五月免费视频 | 中文字幕国产一区 | 日韩成人高清电影 | 日韩福利在线 | 免费人成电影 | 毛片日韩| 91一区 | 99这里只有精品视频 | 国产免费自拍 | 国产伦精品一区二区三区四区视频 | 欧美精品一区二区三区视频 | 国产99久久 | 久久国产精品视频一区 | 在线视频成人永久免费 | 日韩欧美在线观看视频 | 免费黄色av | 欧美一区免费 | 国产高清视频一区 | 日韩一区二区三区视频 | 欧美成人毛片 | 国产精品久久久久久久一区探花 | 天堂伊人网 | 日日操天天射 | 日日干天天操 | 精品久久久久久久 | 欧美日本国产欧美日本韩国99 | 国产欧美精品一区二区三区 | 欧美精品在线一区二区三区 | 欧美成人一区二区三区片免费 | 中文学幕专区 | 午夜精品久久久久久久 | 一区二区三区国产亚洲网站 | 免费三片在线观看网站 | 精品二区视频 | 亚洲区国产区 | 精品国产乱码久久久久夜 | 精品久久久久久 | 欧美视频在线播放 | 中文字幕日韩一区二区不卡 | 久久九九这里只有精品 | 成人国产综合 | 精品亚洲成a人在线观看 | 玖玖免费| 毛片毛片毛片毛片毛片毛片 | 欧美一级片 | 欧美在线观看黄 | 国产无套丰满白嫩对白 | 在线日本中文字幕 | 特级av| 杨门女将寡妇一级裸片看 | 麻豆freexxxx性91精品 | 亚洲五月婷婷 | 中文字幕在线视频免费播放 | 日韩a级免费视频 | 精品免费视频 | 国产目拍亚洲精品99久久精品 | 国产在线高清视频 | 国产成人精品一区二区三区视频 | 久久艹99| 福利视频网 | 日本末发育嫩小xxxx | 欧美一区二区三区在线观看视频 | 久久不射网 | 久久这| 午夜在线观看免费 | www.99久| 久久久久女人精品毛片九一韩国 | 欧美猛交ⅹxxx乱大交视频 | 粉嫩高清一区二区三区精品视频 | 婷婷色国产偷v国产偷v小说 | 欧美xxxⅹ性欧美大片 | 龙珠z国语291集普通话 | 中国黄色毛片 大片 | 中文字幕一区在线观看视频 | 99免费视频 | 中文字幕一区二区在线观看 | 成人一级黄色大片 | 黄色成人免费看 | 国产一区二区免费 | 国产中文字幕亚洲 | 日本久久综合 | 品久久久久久久久久96高清 | 可以在线看的黄色网址 | 可以在线观看的黄色 | 国产精品久久久久久亚洲调教 | 国产一区二区免费视频 | 色婷婷国产精品 | 玖玖成人 | 日韩精品一区二区三区 | 日韩在线观看视频免费 | 成人激情在线 | 亚洲精品日韩综合观看成人91 | 在线日韩成人 | 国产欧美精品一区aⅴ影院 毛片视频网站 | 另类sb东北妇女av | 国产一区二区视频在线播放 | 亚洲三级视频 | 精品香蕉一区二区三区 | 国产激情视频在线观看 | 羞视频在线观看 | 亚洲精品久久久久久下一站 | 亚洲欧洲在线观看 | 国产妇女乱码一区二区三区 |