日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hotspot GC Root 对应调用链

發布時間:2023/12/19 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hotspot GC Root 对应调用链 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

GC Root

GC Root全稱是garbage collection root, 即垃圾回收的根. 回到我們的葡萄比喻上來, 也就是一串葡萄的柄. 實際上JVM中的GC Root不只一個, 也就是多個這樣的 “柄”.

?

來看看hotspot網站的解釋:

garbage collection root

A pointer into the Java object heap from outside the heap. These come up, e.g., from static fields of classes, local references in activation frames, etc.

官網的解釋是由heap外部指向heap內的對象的指針, 比如class的靜態字段, 活躍棧幀里的本地引用等. 這里有點小疑問, 從代碼上來看, 靜態字段也是存在于heap對象(Class對象)中的, 這樣來看, 按照heap外指針的定義來解釋好像不太妥當. 可以先不關注這個問題, 等會我們從代碼上來直觀感受一下.

這個說法可能聽起來有點奇怪, 因為GC Root的存在是客觀的, 并不是因為需要, 這里的意思更多的是為什么要單獨提出這么一個概念. 前面介紹過, 對象之間的相互引用會形成一個圖(graph), 而要遍歷存活的對象, 必須從一些點出發, 這些點, 就是GC Root了.

這樣做的目的避免有閉環的出現,閉環的出現講師災難性,大大影響性能。

最為GC Root四種對象:

?

  • 虛擬機棧中的引用對象
  • 方法區中類靜態屬性引用的對象
  • 方法區中常量引用對象
  • 本地方法棧中JNI引用對象

GC Root 遍歷的源碼:

void GenCollectedHeap::process_roots(StrongRootsScope* scope,ScanningOption so,OopClosure* strong_roots,OopClosure* weak_roots,CLDClosure* strong_cld_closure,CLDClosure* weak_cld_closure,CodeBlobToOopClosure* code_roots) {// General roots.assert(Threads::thread_claim_parity() != 0, "must have called prologue code");assert(code_roots != NULL, "code root closure should always be set");// _n_termination for _process_strong_tasks should be set up stream// in a method not running in a GC worker. Otherwise the GC worker// could be trying to change the termination condition while the task// is executing in another GC worker.if (!_process_strong_tasks->is_task_claimed(GCH_PS_ClassLoaderDataGraph_oops_do)) {ClassLoaderDataGraph::roots_cld_do(strong_cld_closure, weak_cld_closure);}// Only process code roots from thread stacks if we aren't visiting the entire CodeCache anywayCodeBlobToOopClosure* roots_from_code_p = (so & SO_AllCodeCache) ? NULL : code_roots;bool is_par = scope->n_threads() > 1;Threads::possibly_parallel_oops_do(is_par, strong_roots, roots_from_code_p);if (!_process_strong_tasks->is_task_claimed(GCH_PS_Universe_oops_do)) {Universe::oops_do(strong_roots);}// Global (strong) JNI handlesif (!_process_strong_tasks->is_task_claimed(GCH_PS_JNIHandles_oops_do)) {JNIHandles::oops_do(strong_roots);}if (!_process_strong_tasks->is_task_claimed(GCH_PS_ObjectSynchronizer_oops_do)) {ObjectSynchronizer::oops_do(strong_roots);}if (!_process_strong_tasks->is_task_claimed(GCH_PS_FlatProfiler_oops_do)) {FlatProfiler::oops_do(strong_roots);}if (!_process_strong_tasks->is_task_claimed(GCH_PS_Management_oops_do)) {Management::oops_do(strong_roots);}if (!_process_strong_tasks->is_task_claimed(GCH_PS_jvmti_oops_do)) {JvmtiExport::oops_do(strong_roots);}if (!_process_strong_tasks->is_task_claimed(GCH_PS_SystemDictionary_oops_do)) {SystemDictionary::roots_oops_do(strong_roots, weak_roots);}// All threads execute the following. A specific chunk of buckets// from the StringTable are the individual tasks.if (weak_roots != NULL) {if (is_par) {StringTable::possibly_parallel_oops_do(weak_roots);} else {StringTable::oops_do(weak_roots);}}if (!_process_strong_tasks->is_task_claimed(GCH_PS_CodeCache_oops_do)) {if (so & SO_ScavengeCodeCache) {assert(code_roots != NULL, "must supply closure for code cache");// We only visit parts of the CodeCache when scavenging.CodeCache::scavenge_root_nmethods_do(code_roots);}if (so & SO_AllCodeCache) {assert(code_roots != NULL, "must supply closure for code cache");// CMSCollector uses this to do intermediate-strength collections.// We scan the entire code cache, since CodeCache::do_unloading is not called.CodeCache::blobs_do(code_roots);}// Verify that the code cache contents are not subject to// movement by a scavenging collection.DEBUG_ONLY(CodeBlobToOopClosure assert_code_is_non_scavengable(&assert_is_non_scavengable_closure, !CodeBlobToOopClosure::FixRelocations));DEBUG_ONLY(CodeCache::asserted_non_scavengable_nmethods_do(&assert_code_is_non_scavengable));} }

http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/9b0ca45cd756/src/share/vm/gc_implementation/

上面是hotspot1.7(openjdk)源代碼

標記存活對象的處理主要在markSweep.cpp

/** Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.** This code is free software; you can redistribute it and/or modify it* under the terms of the GNU General Public License version 2 only, as* published by the Free Software Foundation.** This code is distributed in the hope that it will be useful, but WITHOUT* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License* version 2 for more details (a copy is included in the LICENSE file that* accompanied this code).** You should have received a copy of the GNU General Public License version* 2 along with this work; if not, write to the Free Software Foundation,* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.** Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA* or visit www.oracle.com if you need additional information or have any* questions.**/#include "precompiled.hpp" #include "compiler/compileBroker.hpp" #include "gc_implementation/shared/markSweep.inline.hpp" #include "gc_interface/collectedHeap.inline.hpp" #include "oops/methodDataOop.hpp" #include "oops/objArrayKlass.inline.hpp" #include "oops/oop.inline.hpp"Stack<oop> MarkSweep::_marking_stack; Stack<DataLayout*> MarkSweep::_revisit_mdo_stack; Stack<Klass*> MarkSweep::_revisit_klass_stack; Stack<ObjArrayTask> MarkSweep::_objarray_stack;Stack<oop> MarkSweep::_preserved_oop_stack; Stack<markOop> MarkSweep::_preserved_mark_stack; size_t MarkSweep::_preserved_count = 0; size_t MarkSweep::_preserved_count_max = 0; PreservedMark* MarkSweep::_preserved_marks = NULL; ReferenceProcessor* MarkSweep::_ref_processor = NULL;#ifdef VALIDATE_MARK_SWEEP GrowableArray<void*>* MarkSweep::_root_refs_stack = NULL; GrowableArray<oop> * MarkSweep::_live_oops = NULL; GrowableArray<oop> * MarkSweep::_live_oops_moved_to = NULL; GrowableArray<size_t>* MarkSweep::_live_oops_size = NULL; size_t MarkSweep::_live_oops_index = 0; size_t MarkSweep::_live_oops_index_at_perm = 0; GrowableArray<void*>* MarkSweep::_other_refs_stack = NULL; GrowableArray<void*>* MarkSweep::_adjusted_pointers = NULL; bool MarkSweep::_pointer_tracking = false; bool MarkSweep::_root_tracking = true;GrowableArray<HeapWord*>* MarkSweep::_cur_gc_live_oops = NULL; GrowableArray<HeapWord*>* MarkSweep::_cur_gc_live_oops_moved_to = NULL; GrowableArray<size_t> * MarkSweep::_cur_gc_live_oops_size = NULL; GrowableArray<HeapWord*>* MarkSweep::_last_gc_live_oops = NULL; GrowableArray<HeapWord*>* MarkSweep::_last_gc_live_oops_moved_to = NULL; GrowableArray<size_t> * MarkSweep::_last_gc_live_oops_size = NULL; #endifvoid MarkSweep::revisit_weak_klass_link(Klass* k) {_revisit_klass_stack.push(k); }void MarkSweep::follow_weak_klass_links() {// All klasses on the revisit stack are marked at this point.// Update and follow all subklass, sibling and implementor links.if (PrintRevisitStats) {gclog_or_tty->print_cr("#classes in system dictionary = %d",SystemDictionary::number_of_classes());gclog_or_tty->print_cr("Revisit klass stack size = " SIZE_FORMAT,_revisit_klass_stack.size());}while (!_revisit_klass_stack.is_empty()) {Klass* const k = _revisit_klass_stack.pop();k->follow_weak_klass_links(&is_alive, &keep_alive);}follow_stack(); }void MarkSweep::revisit_mdo(DataLayout* p) {_revisit_mdo_stack.push(p); }void MarkSweep::follow_mdo_weak_refs() {// All strongly reachable oops have been marked at this point;// we can visit and clear any weak references from MDO's which// we memoized during the strong marking phase.assert(_marking_stack.is_empty(), "Marking stack should be empty");if (PrintRevisitStats) {gclog_or_tty->print_cr("#classes in system dictionary = %d",SystemDictionary::number_of_classes());gclog_or_tty->print_cr("Revisit MDO stack size = " SIZE_FORMAT,_revisit_mdo_stack.size());}while (!_revisit_mdo_stack.is_empty()) {_revisit_mdo_stack.pop()->follow_weak_refs(&is_alive);}follow_stack(); }MarkSweep::FollowRootClosure MarkSweep::follow_root_closure; CodeBlobToOopClosure MarkSweep::follow_code_root_closure(&MarkSweep::follow_root_closure, /*do_marking=*/ true);void MarkSweep::FollowRootClosure::do_oop(oop* p) { follow_root(p); } void MarkSweep::FollowRootClosure::do_oop(narrowOop* p) { follow_root(p); }MarkSweep::MarkAndPushClosure MarkSweep::mark_and_push_closure;void MarkSweep::MarkAndPushClosure::do_oop(oop* p) { assert(*p == NULL || (*p)->is_oop(), ""); mark_and_push(p); } void MarkSweep::MarkAndPushClosure::do_oop(narrowOop* p) { mark_and_push(p); }void MarkSweep::follow_stack() {do {while (!_marking_stack.is_empty()) {oop obj = _marking_stack.pop();assert (obj->is_gc_marked(), "p must be marked");obj->follow_contents();}// Process ObjArrays one at a time to avoid marking stack bloat.if (!_objarray_stack.is_empty()) {ObjArrayTask task = _objarray_stack.pop();objArrayKlass* const k = (objArrayKlass*)task.obj()->blueprint();k->oop_follow_contents(task.obj(), task.index());}} while (!_marking_stack.is_empty() || !_objarray_stack.is_empty()); }MarkSweep::FollowStackClosure MarkSweep::follow_stack_closure;void MarkSweep::FollowStackClosure::do_void() { follow_stack(); }// We preserve the mark which should be replaced at the end and the location // that it will go. Note that the object that this markOop belongs to isn't // currently at that address but it will be after phase4 void MarkSweep::preserve_mark(oop obj, markOop mark) {// We try to store preserved marks in the to space of the new generation since// this is storage which should be available. Most of the time this should be// sufficient space for the marks we need to preserve but if it isn't we fall// back to using Stacks to keep track of the overflow.if (_preserved_count < _preserved_count_max) {_preserved_marks[_preserved_count++].init(obj, mark);} else {_preserved_mark_stack.push(mark);_preserved_oop_stack.push(obj);} }MarkSweep::AdjustPointerClosure MarkSweep::adjust_root_pointer_closure(true); MarkSweep::AdjustPointerClosure MarkSweep::adjust_pointer_closure(false);void MarkSweep::AdjustPointerClosure::do_oop(oop* p) { adjust_pointer(p, _is_root); } void MarkSweep::AdjustPointerClosure::do_oop(narrowOop* p) { adjust_pointer(p, _is_root); }void MarkSweep::adjust_marks() {assert( _preserved_oop_stack.size() == _preserved_mark_stack.size(),"inconsistent preserved oop stacks");// adjust the oops we saved earlierfor (size_t i = 0; i < _preserved_count; i++) {_preserved_marks[i].adjust_pointer();}// deal with the overflow stackStackIterator<oop> iter(_preserved_oop_stack);while (!iter.is_empty()) {oop* p = iter.next_addr();adjust_pointer(p);} }void MarkSweep::restore_marks() {assert(_preserved_oop_stack.size() == _preserved_mark_stack.size(),"inconsistent preserved oop stacks");if (PrintGC && Verbose) {gclog_or_tty->print_cr("Restoring %d marks",_preserved_count + _preserved_oop_stack.size());}// restore the marks we saved earlierfor (size_t i = 0; i < _preserved_count; i++) {_preserved_marks[i].restore();}// deal with the overflowwhile (!_preserved_oop_stack.is_empty()) {oop obj = _preserved_oop_stack.pop();markOop mark = _preserved_mark_stack.pop();obj->set_mark(mark);} }#ifdef VALIDATE_MARK_SWEEPvoid MarkSweep::track_adjusted_pointer(void* p, bool isroot) {if (!ValidateMarkSweep)return;if (!isroot) {if (_pointer_tracking) {guarantee(_adjusted_pointers->contains(p), "should have seen this pointer");_adjusted_pointers->remove(p);}} else {ptrdiff_t index = _root_refs_stack->find(p);if (index != -1) {int l = _root_refs_stack->length();if (l > 0 && l - 1 != index) {void* last = _root_refs_stack->pop();assert(last != p, "should be different");_root_refs_stack->at_put(index, last);} else {_root_refs_stack->remove(p);}}} }void MarkSweep::check_adjust_pointer(void* p) {_adjusted_pointers->push(p); }class AdjusterTracker: public OopClosure {public:AdjusterTracker() {}void do_oop(oop* o) { MarkSweep::check_adjust_pointer(o); }void do_oop(narrowOop* o) { MarkSweep::check_adjust_pointer(o); } };void MarkSweep::track_interior_pointers(oop obj) {if (ValidateMarkSweep) {_adjusted_pointers->clear();_pointer_tracking = true;AdjusterTracker checker;obj->oop_iterate(&checker);} }void MarkSweep::check_interior_pointers() {if (ValidateMarkSweep) {_pointer_tracking = false;guarantee(_adjusted_pointers->length() == 0, "should have processed the same pointers");} }void MarkSweep::reset_live_oop_tracking(bool at_perm) {if (ValidateMarkSweep) {guarantee((size_t)_live_oops->length() == _live_oops_index, "should be at end of live oops");_live_oops_index = at_perm ? _live_oops_index_at_perm : 0;} }void MarkSweep::register_live_oop(oop p, size_t size) {if (ValidateMarkSweep) {_live_oops->push(p);_live_oops_size->push(size);_live_oops_index++;} }

這個類中關鍵的數據是:

GrowableArray<oop> * MarkSweep::_live_oops = NULL; GrowableArray<oop> * MarkSweep::_live_oops_moved_to = NULL;

看下GrowableArray 源碼:

/** Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.** This code is free software; you can redistribute it and/or modify it* under the terms of the GNU General Public License version 2 only, as* published by the Free Software Foundation.** This code is distributed in the hope that it will be useful, but WITHOUT* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License* version 2 for more details (a copy is included in the LICENSE file that* accompanied this code).** You should have received a copy of the GNU General Public License version* 2 along with this work; if not, write to the Free Software Foundation,* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.** Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA* or visit www.oracle.com if you need additional information or have any* questions.**/#include "precompiled.hpp" #include "memory/resourceArea.hpp" #include "utilities/growableArray.hpp" #ifdef TARGET_OS_FAMILY_linux # include "thread_linux.inline.hpp" #endif #ifdef TARGET_OS_FAMILY_solaris # include "thread_solaris.inline.hpp" #endif #ifdef TARGET_OS_FAMILY_windows # include "thread_windows.inline.hpp" #endif #ifdef ASSERT void GenericGrowableArray::set_nesting() {if (on_stack()) {_nesting = Thread::current()->resource_area()->nesting();} }void GenericGrowableArray::check_nesting() {// Check for insidious allocation bug: if a GrowableArray overflows, the// grown array must be allocated under the same ResourceMark as the original.// Otherwise, the _data array will be deallocated too early.if (on_stack() &&_nesting != Thread::current()->resource_area()->nesting()) {fatal("allocation bug: GrowableArray could grow within nested ResourceMark");} } #endifvoid* GenericGrowableArray::raw_allocate(int elementSize) {assert(_max >= 0, "integer overflow");size_t byte_size = elementSize * (size_t) _max;if (on_stack()) {return (void*)resource_allocate_bytes(byte_size);} else if (on_C_heap()) {return (void*)AllocateHeap(byte_size, "GrET in " __FILE__);} else {return _arena->Amalloc(byte_size);} }

可以見得,標記存活的對象最后會放到一個二維數組里面,也就是指向存活的對象的指針放在一張連續的二維數組的地址塊內。

這塊地址區域就是極為重要的地址!

但是是如何一步步標記的呢?

?

?

總結

以上是生活随笔為你收集整理的Hotspot GC Root 对应调用链的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲va欧美va人人爽 | 97国产大学生情侣白嫩酒店 | 91精品国产92久久久久 | 国产一区二区三区网站 | 国产精品久久久久久久免费 | 中文av不卡| 91精品久久久久久 | www.五月婷 | 91精品国产高清自在线观看 | 日本黄色免费观看 | 欧美成人在线免费观看 | 精品久久免费 | 黄色毛片观看 | 国产在线观看,日本 | 人人看看人人 | 亚洲国产成人久久综合 | www.成人精品 | 一区二区视频在线观看免费 | 午夜电影久久 | 91久久国产精品 | 久久网站av | 摸bbb搡bbb搡bbbb | 欧美少妇影院 | 天天摸日日摸人人看 | 日韩肉感妇bbwbbwbbw | 国产91勾搭技师精品 | 日韩在线视频国产 | 美国人与动物xxxx | 99精品在线看| 日韩精品一区二区三区中文字幕 | 最近最新mv字幕免费观看 | 黄色影院在线播放 | 国产手机视频在线播放 | 激情开心站 | 日本视频不卡 | 中文字幕色网站 | 婷婷综合av | 五月天激情视频 | 国产精品美女久久久久久 | 国产精品毛片一区二区在线看 | 精品国产一区二区久久 | 99免费在线视频 | 狠狠撸电影 | 午夜日b视频 | 免费福利片2019潦草影视午夜 | 日韩a级免费视频 | 日韩成人不卡 | 四虎最新域名 | 久久久久久在线观看 | 亚洲视频1| 在线观看亚洲国产精品 | 精品国产激情 | 天天在线操 | 色99网| 亚洲午夜电影网 | 激情影院在线观看 | 中文字幕在线观看视频网站 | 狠狠色狠狠色合久久伊人 | 精品在线一区二区三区 | 91麻豆免费版 | 天天爱天天射天天干天天 | 国产黄大片在线观看 | 日韩黄色一区 | 国产高清在线免费视频 | 欧美最猛性xxxxx(亚洲精品) | 日韩精品网址 | 国产成人免费精品 | 麻豆av电影 | 午夜美女福利 | 欧美aaaxxxx做受视频 | 日韩精品中文字幕久久臀 | 激情网五月天 | 久久网站最新地址 | 米奇狠狠狠888 | 亚洲精品白浆高清久久久久久 | www.亚洲激情.com| 国内精品久久久久久久影视简单 | 涩涩网站在线播放 | 久久乐九色婷婷综合色狠狠182 | 一区二区三区中文字幕在线观看 | 国产精品网站一区二区三区 | 免费在线观看午夜视频 | 亚洲专区在线播放 | 国产精品大片在线观看 | 亚洲三级网站 | 91成人在线视频观看 | 日韩黄色免费看 | 亚洲精品国产精品国自产观看 | 亚洲欧洲国产日韩精品 | 亚洲永久精品在线 | 亚洲精品一区二区三区四区高清 | 日韩av高清在线观看 | 亚洲精品在线观看中文字幕 | 久久久免费高清视频 | 在线观看久草 | 91视频免费看 | 天天操天天插 | 夜夜爽88888免费视频4848 | 成人av电影在线 | 日本精品视频在线观看 | 国产精品久久久久久久免费大片 | 91av视频网| 久久九精品 | 成人av免费看 | 天天干天天操天天干 | 欧美性性网 | 国产精品亚洲精品 | 日韩精品中字 | 色综合天天狠狠 | 丁香久久综合 | 91免费国产在线观看 | 在线观看中文字幕2021 | 国内揄拍国产精品 | 中文字幕有码在线观看 | 欧美激情综合五月色丁香 | 97超碰国产精品 | 五月婷婷毛片 | 亚洲国产成人高清精品 | 午夜久久福利视频 | 午夜精品视频一区二区三区在线看 | 成人免费观看视频大全 | 97免费| 国产精品毛片一区二区在线看 | 日韩在线视频免费看 | 国产精品免费观看视频 | 99高清视频有精品视频 | 99久久影院 | 国产精品久久久久久久免费大片 | wwwwwww色| 99re6热在线精品视频 | 久久久www成人免费精品 | 婷婷丁香激情网 | 亚洲精品成人av在线 | 国产免费作爱视频 | 亚洲激情在线播放 | 波多野结衣亚洲一区二区 | 一区 二区 精品 | 99视频免费 | 中文国产成人精品久久一 | 国产精品久久一区二区三区不卡 | 国内精品久久久久久久影视麻豆 | 久久午夜鲁丝片 | av高清影院 | 国产一区二区三区免费在线观看 | 国产精品18久久久久久久久久久久 | 99视频精品在线 | 99久久精品久久亚洲精品 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 男女精品久久 | 亚洲人在线 | 久久国产精品一国产精品 | 美女视频黄免费的 | 亚洲国产mv | 男女激情免费网站 | 久久这里有精品 | 国产手机视频精品 | 啪啪肉肉污av国网站 | 99热99热 | 亚洲精品456在线播放第一页 | 超级碰碰碰免费视频 | 黄色h在线观看 | 亚洲欧美经典 | 欧美综合在线视频 | 亚洲人成网站精品片在线观看 | 96久久| 日产中文字幕 | 97品白浆高清久久久久久 | 成人久久18免费网站麻豆 | 欧美日韩视频在线一区 | 国产视频一区二区在线观看 | 激情五月av | 中文字幕一区二区在线播放 | 奇米影视999 | 97精品国产aⅴ | 美女免费黄网站 | 九九交易行官网 | 99久久婷婷国产一区二区三区 | 一级黄色大片在线观看 | 国产一区二区在线观看免费 | www色综合 | 最新中文字幕在线资源 | 亚洲少妇激情 | 成年人视频免费在线播放 | 激情影音 | av 在线观看 | 亚洲成a人片77777潘金莲 | 少妇精品久久久一区二区免费 | 视频二区在线 | 色吊丝在线永久观看最新版本 | 四虎影视成人永久免费观看视频 | 亚洲码国产日韩欧美高潮在线播放 | 国产人成看黄久久久久久久久 | 日韩国产精品一区 | 亚洲黄色在线观看 | 亚洲国产高清视频 | 国产呻吟在线 | 超碰在线人人爱 | 久久精品久久精品久久精品 | 日韩在线看片 | 亚洲精品乱码久久久久久蜜桃动漫 | 精品视频久久久久久 | 国产成人av网址 | 少妇bbw搡bbbb搡bbb | 午夜手机电影 | 亚洲激情 欧美激情 | 四虎国产精品免费观看视频优播 | 亚洲91精品在线观看 | 久久免费中文视频 | 在线观看视频一区二区三区 | avv天堂| 久久久久国产精品www | 4438全国亚洲精品观看视频 | www.eeuss影院av撸 | 91传媒激情理伦片 | 天天操天天色天天射 | 天天干天天色2020 | 精品自拍av | 99久久er热在这里只有精品15 | 日日碰狠狠添天天爽超碰97久久 | 欧美性护士 | 国内精品亚洲 | 狠狠干天天色 | 九九视频精品在线 | 91中文视频 | 日韩欧美亚州 | 亚洲视频免费 | 欧美日韩不卡在线视频 | 69av免费视频 | 亚洲狠狠丁香婷婷综合久久久 | 夜夜躁狠狠燥 | 国产三级午夜理伦三级 | 四虎影视4hu4虎成人 | www.com.日本一级 | 国产精品美女www爽爽爽视频 | 九九热免费在线视频 | 亚洲欧美日韩国产一区二区 | 91桃色国产在线播放 | 国产一区二三区好的 | 久久影视一区二区 | 五月宗合网 | 91精品国产99久久久久久红楼 | 日韩免费b| 日本在线精品视频 | 激情综合色播五月 | 日本中文字幕观看 | 国产一级在线播放 | 91久久久久久久一区二区 | 久久视频精品在线 | 精品视频www | 国产黄色网 | 国产视频2021 | 视频在线国产 | 亚洲精品高清视频在线观看 | 国产看片网站 | www欧美色| 在线免费观看视频a | 久久经典视频 | www.av免费观看 | 成人毛片在线视频 | 91麻豆看国产在线紧急地址 | 中文字幕一区二区三区四区在线视频 | 国产成人中文字幕 | 手机av在线网站 | 超级碰99 | 伊甸园永久入口www 99热 精品在线 | 成人久久18免费网站 | 国产高清亚洲 | 天天操天天干天天爽 | 一区二区精品在线观看 | 久久久首页 | 黄色大片入口 | 国产伦理久久精品久久久久_ | 久久婷婷视频 | 国产在线第三页 | 午夜久草 | 欧美一二三在线 | 中文字幕成人av | 很污的网站 | 国产成人一二片 | 亚洲午夜av电影 | 99色免费 | 精品国产一区二区三区久久久久久 | 国产三级国产精品国产专区50 | 91在线影院 | 中文字幕综合在线 | 青草视频在线 | 永久免费的啪啪网站免费观看浪潮 | 日韩欧美在线第一页 | 中文字幕一二三区 | 久久免费视频国产 | 黄污在线观看 | 热re99久久精品国产99热 | 日女人电影 | 中文有码在线 | 天堂激情网 | 国产一级不卡毛片 | 精品视频在线视频 | 韩国视频一区二区三区 | 欧美天天综合网 | 久久久久亚洲精品男人的天堂 | 国产精品一二三 | 久久综合九色99 | 伊人首页 | 亚洲精品国产综合久久 | 国产免费人成xvideos视频 | 亚洲成av人片在线观看www | 有码中文在线 | 91精品国产99久久久久久久 | 久草在线播放视频 | 国产精品黄网站在线观看 | 久久久久久久久久久精 | 九九免费在线观看 | 日韩免费一区二区在线观看 | www.天天草 | 91在线小视频 | 午夜三级影院 | 91福利视频免费观看 | 亚洲第一香蕉视频 | 九九久久视频 | 97精品国产97久久久久久免费 | 999视频网站 | 色久av | 亚洲成人免费观看 | 国产视频第二页 | 99精品小视频 | 最新av网址在线 | 日本大尺码专区mv | 中文字幕亚洲字幕 | 亚洲二区精品 | 天天狠狠| 国产精品美女久久久久久久 | 岛国一区在线 | 亚洲精品免费播放 | 黄色三级网站在线观看 | 日韩欧美一区二区三区在线 | 99麻豆久久久国产精品免费 | 天天干人人 | 亚洲天堂精品视频在线观看 | 国产在线一区二区 | 中文字幕视频在线播放 | 在线免费观看一区二区三区 | 麻豆一二 | www..com毛片| 日韩在线电影观看 | 天天爱天天操天天干 | 国产精品美女久久久久久2018 | 99性视频 | 日韩美女免费线视频 | 麻豆91在线播放 | 成人在线免费看视频 | wwwwww色| 麻豆 free xxxx movies hd | 成人三级网站在线观看 | 亚洲视频高清 | 最近中文字幕国语免费av | 中文字幕精品一区二区精品 | 99这里只有精品视频 | 亚洲精品男人天堂 | 久久热亚洲 | 国产精久久久久久妇女av | 精品视频免费看 | 国产原创在线视频 | 在线观看中文字幕dvd播放 | 韩日色视频 | 色在线免费观看 | 欧美日韩中文字幕在线视频 | 天天摸天天干天天操天天射 | 婷婷色资源 | 午夜精品久久久久久久久久久 | www久久久| 久久一区二区三区国产精品 | 国产清纯在线 | 97福利 | 亚洲闷骚少妇在线观看网站 | 成人黄色在线视频 | 国产精品一区二区三区久久久 | 美女中文字幕 | 最近中文字幕视频完整版 | 久久精品麻豆 | 激情综合交| 国产黑丝袜在线 | 免费a级毛片在线看 | 久草网视频 | 麻豆视频www| 九九综合在线 | 久久激情视频免费观看 | 97在线看| 国产综合精品一区二区三区 | 欧美有色 | 99久久国产免费,99久久国产免费大片 | 日韩在线在线 | 日韩免费观看一区二区 | 最近日本字幕mv免费观看在线 | 日日碰狠狠添天天爽超碰97久久 | 久久免费在线观看视频 | 99在线精品视频 | 99在线热播精品免费99热 | 日韩在线| 国产一区久久久 | 在线免费观看黄色大片 | 日韩精品免费一区 | 美女视频久久 | 婷婷综合在线 | 亚洲精品欧洲精品 | 91在线免费播放 | 九九综合九九综合 | 国产资源免费 | 欧美一级艳片视频免费观看 | 精品一区在线 | 91九色丨porny丨丰满6 | 国产精品观看在线亚洲人成网 | 黄色软件在线看 | 免费看搞黄视频网站 | 91中文字幕在线视频 | 丁香九月激情综合 | 四虎在线观看网址 | 美女av在线免费 | a天堂免费 | 国产一级二级在线观看 | 欧美一区二区精品在线 | 国产精品亚洲视频 | 制服丝袜在线 | 日日夜夜噜噜噜 | 97国产大学生情侣酒店的特点 | 精品美女久久久久 | 国产精品精 | 国产精品久久久久久爽爽爽 | 欧美另类v| 久久免费观看少妇a级毛片 久久久久成人免费 | 国产精品久久久久久久久费观看 | 久久免费的精品国产v∧ | 久久久久久草 | 日韩a级免费视频 | 狠狠色狠狠色 | 一二三久久久 | 色综合久久久久综合99 | 伊人久在线 | 国产美腿白丝袜足在线av | 午夜视频一区二区三区 | 日韩一区二区三区在线看 | 成人久久精品 | 免费在线激情视频 | 欧美精品网站 | 日韩在线播放av | 深夜免费福利在线 | 一区二区三区动漫 | 国产成人久久av免费高清密臂 | 久久综合久久综合九色 | 精品一区二区在线观看 | 精品福利网 | 激情网色 | 国产色拍 | 9999国产| 日韩欧美高清免费 | 中文在线免费一区三区 | 日本视频不卡 | zzijzzij亚洲日本少妇熟睡 | 久久久麻豆精品一区二区 | 国产成视频在线观看 | 国产精品一区免费在线观看 | 日韩av一区二区在线播放 | 国产96精品 | 久久99精品久久久久久久久久久久 | 91在线视频在线 | 成人三级av | 69亚洲乱| 免费亚洲片 | 久久五月网 | 毛片网站在线观看 | 国产精品久久久久久爽爽爽 | 天天综合人人 | 色中色亚洲 | 日韩精品短视频 | 色婷婷色 | 日韩欧美一区二区在线观看 | 成人午夜电影久久影院 | 精品国产理论 | 又色又爽又黄高潮的免费视频 | www操操操 | 夜夜澡人模人人添人人看 | 精品国产精品一区二区夜夜嗨 | 亚洲天堂社区 | 日韩av一区二区三区在线观看 | 91精品国产欧美一区二区 | 精品在线一区二区三区 | 99久久99| 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲久草网 | 丰满少妇对白在线偷拍 | 亚洲另类视频在线观看 | 久草视频免费在线播放 | 亚洲一级免费电影 | 久久国产精品99久久久久久进口 | 日韩av午夜在线观看 | 美女黄久久 | 永久精品视频 | 六月丁香婷婷网 | 国产精品18久久久久久久久 | 欧美伦理一区二区三区 | 一区二区三区在线影院 | 91传媒免费观看 | 激情综合五月婷婷 | 欧美一级在线看 | 国内精品福利视频 | 国产第一二区 | 丁香六月欧美 | 久久99热这里只有精品国产 | 91网站在线视频 | 美女视频黄色免费 | 亚洲毛片在线观看. | 91传媒视频在线观看 | 99国产精品 | 中文字幕国产一区二区 | 国产亚洲精品久久久久久无几年桃 | 婷婷av资源 | 免费在线观看视频一区 | 一级全黄毛片 | 成人一级免费视频 | 精品福利视频在线观看 | 黄色大片中国 | 欧美国产日韩一区二区三区 | 久久国产精品免费观看 | 成人国产精品一区 | 精品久久久精品 | 综合五月 | 免费av在线| 成年人国产精品 | 国产97在线观看 | 午夜精品久久久久久久久久久久久久 | 91福利在线观看 | 91在线观看视频网站 | 色婷婷综合在线 | 香蕉视频4aa | 欧美视频国产视频 | 亚洲专区在线视频 | 高清在线一区 | 国产精彩视频一区 | 色婷婷激情四射 | 精品xxx | 国内精品亚洲 | 国产一区欧美在线 | 亚洲一区二区麻豆 | 久久热亚洲 | 又黄又刺激视频 | 久久免费视频在线观看30 | 久久久不卡影院 | 中文免费 | 66av99精品福利视频在线 | 亚洲精品国产综合99久久夜夜嗨 | 97国产在线视频 | 国产原创91 | 国产特黄色片 | 欧美作爱视频 | 久久精品—区二区三区 | 国产成人精品一二三区 | 午夜aaaa| 国产黄色高清 | 国产97碰免费视频 | 亚洲精品日韩一区二区电影 | 在线看毛片网站 | 黄影院| av在线com| 亚洲区二区 | 伊人伊成久久人综合网站 | 能在线观看的日韩av | 午夜色大片在线观看 | 国产成人一区二区三区在线观看 | 欧美精品第一 | 久久99国产综合精品免费 | 天天超碰 | av观看免费在线 | 色婷婷视频在线观看 | 人人爽人人澡 | 六月丁香六月婷婷 | 男女激情免费网站 | 97超碰总站 | 国产又粗又猛又色又黄网站 | 国产精品手机视频 | 国产精品免费在线播放 | 日韩一二区在线观看 | 精品国产一二三四区 | 在线视频日韩 | 干av在线 | 一区二区不卡视频在线观看 | 999免费视频 | 国产精品99久久久精品免费观看 | 色综合久久网 | 五月天激情婷婷 | 香蕉网站在线观看 | 天天色天天射天天操 | 欧美欧美 | 久久av影院| 国产无吗一区二区三区在线欢 | 成人黄色影片在线 | 中国美女一级看片 | 精品在线观看国产 | 国产极品尤物在线 | 国产精品99久久久久久久久久久久 | 中文字幕丝袜 | 国产98色在线 | 日韩 | 国产一级电影在线 | 欧美日韩中文字幕综合视频 | 国产专区在线视频 | 免费观看www7722午夜电影 | 日本精品视频免费观看 | 丰满少妇一级片 | 亚洲精品国产精品久久99 | 欧美成年黄网站色视频 | 色综合婷婷 | 久产久精国产品 | 免费人成网ww44kk44 | 丁香午夜婷婷 | 麻豆传媒在线免费看 | 国产一级二级在线观看 | 日批视频在线 | 天天视频色 | 69夜色精品国产69乱 | 国产精品18久久久久久不卡孕妇 | 国产精品国产三级国产不产一地 | 五月综合久久 | 久久久久久久久久久国产精品 | 一区二区三区免费看 | av在线免费播放网站 | 亚洲国产日韩在线 | 亚洲一级二级 | 欧美激情精品久久久久久变态 | 欧美亚洲国产精品久久高清浪潮 | 日韩精品一区二区三区免费观看视频 | 日韩在线播放欧美字幕 | 亚洲自拍av在线 | 国产尤物在线 | 久久久久久蜜桃一区二区 | 人人草网站| 97超碰国产精品 | 亚洲精品国产精品国自产在线 | 亚洲天天在线日亚洲洲精 | 91精品办公室少妇高潮对白 | 中文字幕激情 | 日日干av | 欧美一级特黄aaaaaa大片在线观看 | 久久久久亚洲精品男人的天堂 | 中文字幕日韩国产 | 久久久久久久久毛片精品 | 国产一区免费在线 | a电影在线观看 | 天天av天天 | 一区二区三区视频在线 | 亚洲 欧美日韩 国产 中文 | 亚洲精品资源在线 | 成年人毛片在线观看 | 二区在线播放 | 一区二区中文字幕在线观看 | 狠狠操导航 | 中文在线亚洲 | 99视频在线免费播放 | 看片的网址 | 天天综合天天做天天综合 | 99精品国产99久久久久久97 | 日免费视频 | 色停停五月天 | 国产亚洲情侣一区二区无 | 黄色免费大全 | 国产高清免费av | 久久免费毛片视频 | 在线电影 一区 | 成人黄色av免费在线观看 | 精壮的侍卫呻吟h | 日韩欧美在线免费 | 免费看一级黄色大全 | 成人av电影免费观看 | 午夜狠狠操 | 黄色亚洲在线 | 91精品久久久久久综合乱菊 | 欧美一进一出抽搐大尺度视频 | 激情欧美丁香 | 毛片无卡免费无播放器 | 深夜免费福利网站 | 91自拍成人 | 国产成人免费观看久久久 | 色网站国产精品 | 狠狠操导航 | 亚洲一级电影视频 | 亚洲精品国产成人 | adc在线观看 | www.com.日本一级 | 亚洲成色777777在线观看影院 | 日韩大陆欧美高清视频区 | 国产麻豆精品久久一二三 | 综合激情久久 | 免费视频区| 在线观看av网 | 久草精品视频在线看网站免费 | 色婷婷视频在线 | 日韩剧情 | 成人h视频在线播放 | 亚洲精品视频第一页 | 日本午夜在线亚洲.国产 | 一区三区视频在线观看 | 国产精品免费在线视频 | 一区三区视频在线观看 | 国产在线无 | 亚洲成a人片在线观看网站口工 | 一本一本久久aa综合精品 | 手机av片| 永久精品视频 | 丝袜av网站| 国产真实精品久久二三区 | 国产精品18久久久久久不卡孕妇 | 婷婷色在线观看 | 免费亚洲精品 | 黄色一级在线免费观看 | 亚洲黄色片一级 | 亚洲综合成人在线 | 国产第一页福利影院 | 丁香久久久| 97品白浆高清久久久久久 | 中文字幕刺激在线 | 美女网站色 | 成人午夜电影网 | 丁香综合av | 亚洲在线成人精品 | 国产精品午夜在线 | 色综合久久精品 | 2023天天干 | 97在线视频免费播放 | av片免费播放 | 色偷偷av男人天堂 | 欧美激情精品久久久久久免费 | 二区三区精品 | 国产视频一区在线免费观看 | 日本爱爱片 | 国产高清免费在线观看 | 91视视频在线直接观看在线看网页在线看 | 国产精品一区二 | 九九九九精品 | 亚洲欧美激情插 | 国产一区网址 | 日韩色视频在线观看 | 91成人精品在线 | 狠狠操在线| 日韩在线免费不卡 | 玖操| 色综合色综合色综合 | 四虎免费在线观看视频 | 91视频久久久 | 在线免费观看国产精品 | 久久99操| 日躁夜躁狠狠躁2001 | 在线观看aa | 亚洲精品久久久蜜臀下载官网 | 亚洲精品乱码久久久久久蜜桃欧美 | 亚洲精品自拍 | 深爱激情五月婷婷 | 中文字幕电影网 | 日日天天| www.久草视频 | 国产探花| 色www.| 国产午夜精品一区二区三区 | 欧美性天天 | 婷婷综合 | av大片网址 | 在线天堂中文在线资源网 | 最近更新好看的中文字幕 | 国产精品一区二区无线 | 日日干天天 | 久久xx视频 | 亚洲精品午夜一区人人爽 | 日韩综合色| 午夜av日韩 | 成人夜晚看av | av黄色成人 | 天堂av在线网站 | 去干成人网 | 国产二区视频在线观看 | 亚州免费视频 | 日韩 在线 | 亚洲精品免费在线观看视频 | 麻豆视频在线免费观看 | 美州a亚洲一视本频v色道 | 日日夜夜狠狠干 | 中文国产在线观看 | 国产麻豆精品在线观看 | 日韩中文久久 | 久久 亚洲视频 | 欧美日韩精品区 | 又黄又爽的视频在线观看网站 | 国产美腿白丝袜足在线av | 久久avav| 开心激情网五月天 | 久久视奸 | 日韩高清三区 | 日韩av午夜 | 成人免费在线播放 | 亚洲成人频道 | 国产在线第三页 | 欧美国产高清 | 狠狠狠狠狠狠天天爱 | 97电影院网 | 久久男女视频 | 中文字幕4| 91久久偷偷做嫩草影院 | 国产精品视频全国免费观看 | 亚洲天堂在线观看完整版 | 婷婷中文在线 | 99 久久久久| 亚洲综合成人婷婷小说 | 国产精品免费在线视频 | 久草视频免费在线播放 | 中文字幕在线观看资源 | 日韩av电影手机在线观看 | 五月丁色| 99资源网 | 麻豆首页| 国产一区二区高清不卡 | 一级一片免费视频 | 中文字幕在线视频一区二区 | 五月天天在线 | 色婷婷综合成人av | 在线观看视频一区二区 | 天堂av免费观看 | 久久久免费精品国产一区二区 | 欧美一级激情 | 国模一二三区 | 久久艹人人 | av在线网站大全 | 色综合狠狠干 | 婷婷去俺也去六月色 | 久久九九影视 | 激情小说网站亚洲综合网 | 日本中文字幕观看 | av在线免费网 | 免费看污黄网站 | 天堂av影院 | 91亚洲精品在线观看 | 天天射天天射 | 91日韩精品一区 | 四虎在线视频免费观看 | 中文字幕中文字幕在线中文字幕三区 | 免费在线观看av | 一区二区三区 亚洲 | 中文字幕国产一区二区 | 中文字幕 91 | 天天操婷婷 | 日韩高清黄色 | 色黄视频免费观看 | 久久久精品99 | www99久久| 激情视频免费在线 | 五月婷婷综合在线视频 | 97热视频| 久久人人添人人爽添人人88v | 中文字幕在线观看视频网站 | 成人久久精品 | 永久免费精品视频网站 | av888.com| 久久久美女 | 久草视频在线免费看 | 久久免费电影网 | av免费成人 | 久久精品视频日本 | 黄色精品在线看 | 天天干人人干 | 欧美天天干 | 国产欧美精品一区二区三区 | www.国产毛片 | av在线电影免费观看 | 国产高清免费av | 最近乱久中文字幕 | www.777奇米 | 激情久久综合 | 国产精品成人免费 | 国产一区精品在线观看 | 亚洲一区二区视频在线播放 | 国产69久久久 | 亚洲最大av网站 | 日韩av一区二区三区在线观看 | 六月丁香激情网 | 国产人成免费视频 | 免费午夜网站 | 久久99精品国产麻豆宅宅 | 色播99 | av看片在线观看 | 成人免费大片黄在线播放 | 亚洲综合在线播放 | 夜夜视频欧洲 | 亚洲黄色成人网 | 久久精品小视频 | 人交video另类hd | 中文在线www | 久久成人免费电影 | 亚洲经典在线 | www激情网 | 婷婷5月色 | 日韩精品视频免费专区在线播放 | 中文字幕在线观看的网站 | 久草在线视频看看 | 亚州精品天堂中文字幕 | 成人av中文字幕在线观看 | 国产中文字幕视频 | 亚洲视频久久 | 亚洲精品自拍视频在线观看 | 欧美天堂视频在线 | 青青久视频 | 97在线观看免费 | 国产一区二区在线免费视频 | 又爽又黄又无遮挡网站动态图 | 青青看片 | 人人干人人添 | av在线色 | 欧美日韩国产二区 | 四虎影视久久久 | 91一区二区三区在线观看 | 国产高清视频免费最新在线 | 一级α片免费看 | 久久激五月天综合精品 | 在线视频日韩一区 | 狠狠干天天干 | 超碰人人av | 亚洲天堂网在线播放 | 超碰在线公开免费 | 香蕉视频网站在线观看 | 国产黄色在线观看 | 美女久久久久久久 | 3d黄动漫免费看 | 九色91在线视频 | 日韩黄色网络 | 欧美日韩视频在线一区 | 亚洲视频1区2区 | 亚洲精品麻豆 | 丝袜av一区| av.com在线| 丁香激情综合久久伊人久久 | 日韩精品播放 | 91香蕉视频 | 97超碰在线播放 | 性色在线视频 | 久久久久久久久久久高潮一区二区 | 亚洲精品小视频在线观看 | 久久久久综合网 | 99电影 | 久久久精品久久日韩一区综合 | 国产日韩精品欧美 | 久久不卡日韩美女 | 午夜91视频 | 精品女同一区二区三区在线观看 | 日韩啪啪小视频 | 国产视频综合在线 | a在线视频v视频 | 最近高清中文字幕 | 婷婷中文字幕在线观看 | a在线免费观看视频 | 91av官网 | 97在线精品| 夜夜躁天天躁很躁波 | 日韩在线不卡视频 | 西西444www大胆高清图片 | 一级片免费观看视频 | 97色国产 | 国产精品一区二区视频 | av电影免费观看 | 天天操天天干天天操天天干 | 欧美午夜寂寞影院 | 免费看黄的 | 婷婷丁香综合 | 欧美色图另类 | 91精品国产91久久久久久三级 | 狠狠狠狠狠干 | 国产剧在线观看片 | 99久久99精品| av网址最新| 久久色视频 | 国产视频中文字幕 | www色婷婷com | 欧美日韩国产一区二 | 亚洲午夜久久久久 | 黄色免费网 | 日韩三级精品 | 日韩中文字幕国产精品 | 精品国产乱码久久久久 | 夜夜爽夜夜操 | 国产一级大片在线观看 | 成人在线观看免费视频 | 久久综合久久综合久久综合 | 丁香六月婷婷开心 | 久久免费片 | 麻豆传媒一区二区 | 最近日本韩国中文字幕 | 国产区免费 | 少妇高潮冒白浆 | 成人免费网视频 | 99 精品 在线 | 精品国产伦一区二区三区免费 | 国产美女视频一区 | 久久色网站 | 又黄又网站 | 亚洲精品久久久久久久不卡四虎 | 婷婷丁香社区 |