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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java对象分配原理

發布時間:2023/12/10 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java对象分配原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java對象模型: OOP-Klass模型

在正式探討JVM對象的創建前,先簡單地介紹一下hotspot中實現的Java的對象模型。在JVM中,并沒有直接將Java對象映射成C++對象,而是采用了oop-klass模型,主要是不希望每個對象中都包含有一份虛函數表,其中:

  • OOP(Ordinary Object Point),表示對象的實例信息
  • Klass,是Java類的在C++中的表示,用來描述Java類的信息
  • 簡單地說,一個Java類在JVM中被拆分為了兩個部分:數據和描述信息,分別對應OOP和Klass。

    在具體的JVM源碼中,當加載一個Class時,會創建一個InstanceKlass對象,實例化的對象則對應InstanceOopDesc,其中InstanceKlass存放在元空間,InstanceOopDesc存放在堆中。

    對象創建過程

    首先先來看InstanceOopDesc的數據結構,InstanceOopDesc繼承了OopDesc,數據結構如下

    // 此處為了方便閱讀,改寫了一下代碼 class instanceOopDesc : public oopDesc {private:volatile markOop _mark;union _metadata {Klass* _klass;narrowKlass _compressed_klass;} _metadata; };

    其中_metadata指向該對象的InstanceKlass,而_mark中則存儲了對象運行時的狀態數據,數據結構如下(圖中為32位的情況下的數據,64位也大同小異)

    32 bits: -------- hash:25 ------------>| age:4 biased_lock:1 lock:2 (normal object) JavaThread*:23 epoch:2 age:4 biased_lock:1 lock:2 (biased object) size:32 ------------------------------------------>| (CMS free block) PromotedObject*:29 ---------->| promo_bits:3 ----->| (CMS promoted object)

    每一行都代表了一種情況,描述了哈希碼、GC分代年齡、鎖等狀態信息,如下:

    hash: 哈希碼 age: 分代年齡 biased_lock: 偏向鎖標識位 lock: 鎖狀態標識位 JavaThread*: 持有偏向鎖的線程ID epoch: 偏向時間戳

    instanceOopDesc其實保存的是對象的頭部信息,除了頭部信息,對象還有數據,對象數據緊跟著頭部后面,圖示如下:

    ?

    1. 入口

    ?

    上圖截取了一段程序字節碼,紅線所框對應了Java中new操作的字節碼,Java中的new操作對應了字節碼的三個操作,本文主要講述第一個操作(new)。字節碼中new操作對應JVM中的InterpreterRuntime::_new,代碼如下,

    // hotspot/share/interpreter/interpreterRuntime.cpp IRT_ENTRY(void, InterpreterRuntime::_new(JavaThread* thread, ConstantPool* pool, int index))Klass* k = pool->klass_at(index, CHECK);InstanceKlass* klass = InstanceKlass::cast(k);klass->check_valid_for_instantiation(true, CHECK); // 校驗:接口/抽象類/Class不能實例化klass->initialize(CHECK); // 初始化klassoop obj = klass->allocate_instance(CHECK); // 分配實例thread->set_vm_result(obj); IRT_END 里面主要包含了兩個部分:初始化klass和分配實例

    2. 初始化klass

    // hotspot/share/oops/instanceKlass.cpp void InstanceKlass::initialize(TRAPS) {if (this->should_be_initialized()) {initialize_impl(CHECK);} else {assert(is_initialized(), "sanity check");} }

    在這里我們繼續看initialize_impl()方法

    // hotspot/share/oops/instanceKlass.cpp void InstanceKlass::initialize_impl(TRAPS) {HandleMark hm(THREAD);link_class(CHECK); // 鏈接classbool wait = false;// Step 1{Handle h_init_lock(THREAD, init_lock());ObjectLocker ol(h_init_lock, THREAD, h_init_lock() != NULL);Thread *self = THREAD;// Step 2while(is_being_initialized() && !is_reentrant_initialization(self)) {wait = true;ol.waitUninterruptibly(CHECK);}// Step 3if (is_being_initialized() && is_reentrant_initialization(self)) {DTRACE_CLASSINIT_PROBE_WAIT(recursive, -1, wait);return;}// Step 4if (is_initialized()) {DTRACE_CLASSINIT_PROBE_WAIT(concurrent, -1, wait);return;}// Step 5if (is_in_error_state()) {DTRACE_CLASSINIT_PROBE_WAIT(erroneous, -1, wait);ResourceMark rm(THREAD);const char* desc = "Could not initialize class ";const char* className = external_name();size_t msglen = strlen(desc) + strlen(className) + 1;char* message = NEW_RESOURCE_ARRAY(char, msglen);if (NULL == message) {// Out of memory: can't create detailed error messageTHROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className);} else {jio_snprintf(message, msglen, "%s%s", desc, className);THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), message);}}// Step 6set_init_state(being_initialized);set_init_thread(self);}// Step 7if (!is_interface()) {Klass* super_klass = super();if (super_klass != NULL && super_klass->should_be_initialized()) {super_klass->initialize(THREAD);}if (!HAS_PENDING_EXCEPTION && has_nonstatic_concrete_methods()) {initialize_super_interfaces(THREAD);}if (HAS_PENDING_EXCEPTION) {Handle e(THREAD, PENDING_EXCEPTION);CLEAR_PENDING_EXCEPTION;{EXCEPTION_MARK;// Locks object, set state, and notify all waiting threadsset_initialization_state_and_notify(initialization_error, THREAD);CLEAR_PENDING_EXCEPTION;}DTRACE_CLASSINIT_PROBE_WAIT(super__failed, -1, wait);THROW_OOP(e());}}AOTLoader::load_for_klass(this, THREAD);// Step 8{assert(THREAD->is_Java_thread(), "non-JavaThread in initialize_impl");JavaThread* jt = (JavaThread*)THREAD;DTRACE_CLASSINIT_PROBE_WAIT(clinit, -1, wait);PerfClassTraceTime timer(ClassLoader::perf_class_init_time(),ClassLoader::perf_class_init_selftime(),ClassLoader::perf_classes_inited(),jt->get_thread_stat()->perf_recursion_counts_addr(),jt->get_thread_stat()->perf_timers_addr(),PerfClassTraceTime::CLASS_CLINIT);call_class_initializer(THREAD);}// Step 9if (!HAS_PENDING_EXCEPTION) {set_initialization_state_and_notify(fully_initialized, CHECK);{debug_only(vtable().verify(tty, true);)}}else {// Step 10 and 11Handle e(THREAD, PENDING_EXCEPTION);CLEAR_PENDING_EXCEPTION;JvmtiExport::clear_detected_exception((JavaThread*)THREAD);{EXCEPTION_MARK;set_initialization_state_and_notify(initialization_error, THREAD);CLEAR_PENDING_EXCEPTION;JvmtiExport::clear_detected_exception((JavaThread*)THREAD);}DTRACE_CLASSINIT_PROBE_WAIT(error, -1, wait);if (e->is_a(SystemDictionary::Error_klass())) {THROW_OOP(e());} else {JavaCallArguments args(e);THROW_ARG(vmSymbols::java_lang_ExceptionInInitializerError(),vmSymbols::throwable_void_signature(),&args);}}DTRACE_CLASSINIT_PROBE_WAIT(end, -1, wait); }

    2.1 鏈接

    // hotspot/share/oops/instanceKlass.cpp bool InstanceKlass::link_class_impl(bool throw_verifyerror, TRAPS) {if (is_linked()) {return true;}assert(THREAD->is_Java_thread(), "non-JavaThread in link_class_impl");JavaThread* jt = (JavaThread*)THREAD;// 先鏈接父類Klass* super_klass = super();if (super_klass != NULL) {if (super_klass->is_interface()) {ResourceMark rm(THREAD);Exceptions::fthrow(THREAD_AND_LOCATION,vmSymbols::java_lang_IncompatibleClassChangeError(),"class %s has interface %s as super class",external_name(),super_klass->external_name());return false;}InstanceKlass* ik_super = InstanceKlass::cast(super_klass);ik_super->link_class_impl(throw_verifyerror, CHECK_false);}// 鏈接該類的所有借口Array<Klass*>* interfaces = local_interfaces();int num_interfaces = interfaces->length();for (int index = 0; index < num_interfaces; index++) {InstanceKlass* interk = InstanceKlass::cast(interfaces->at(index));interk->link_class_impl(throw_verifyerror, CHECK_false);}if (is_linked()) {return true;}// 驗證 & 重寫{HandleMark hm(THREAD);Handle h_init_lock(THREAD, init_lock());ObjectLocker ol(h_init_lock, THREAD, h_init_lock() != NULL);if (!is_linked()) {if (!is_rewritten()) {{bool verify_ok = verify_code(throw_verifyerror, THREAD);if (!verify_ok) {return false;}}if (is_linked()) {return true;}// 重寫類rewrite_class(CHECK_false);} else if (is_shared()) {SystemDictionaryShared::check_verification_constraints(this, CHECK_false);}// 重寫完成后鏈接方法link_methods(CHECK_false);// 初始化vtable和itableClassLoaderData * loader_data = class_loader_data();if (!(is_shared() &&loader_data->is_the_null_class_loader_data())) {ResourceMark rm(THREAD);vtable().initialize_vtable(true, CHECK_false);itable().initialize_itable(true, CHECK_false);}// 將類的狀態標記為已鏈接set_init_state(linked);if (JvmtiExport::should_post_class_prepare()) {Thread *thread = THREAD;assert(thread->is_Java_thread(), "thread->is_Java_thread()");JvmtiExport::post_class_prepare((JavaThread *) thread, this);}}}return true; }

    class鏈接的過程就是這樣,主要步驟總結如下:

  • 鏈接父類和實現的接口
  • 重寫類
  • 初始化vtable和itable
  • 將類的狀態標記為已鏈接
  • 關于重寫類和初始化vtable、itable的內容有空新開一章,本文就不描述具體細節了。

    2.2 初始化過程

    這段初始化klass步驟在JVM規范中有詳細描述,假設當前類(接口)為C,它持有一個獨有的初始化鎖LC

  • 同步鎖LC,防止并發導致多次初始化
  • 如果有其他線程正在初始化C,就釋放LC并阻塞當前線程直到那個線程完成初始化
  • 如果是執行初始化的是當前線程,則表明是遞歸請求,釋放LC并正常完成初始化
  • 如果C已經被初始化了,則釋放LC并正常完成初始化
  • 如果C的對象處于一個錯誤狀態,則釋放LC并拋出NoClassDefFoundError異常
  • 記錄C正在被當前線程初始化并釋放LC,初始化類中所有final static字段
  • 如果C是一個類,初始化其父類和接口
  • 判斷C是否打開斷言
  • 執行類(接口)的初始化方法
  • 標記C已經完全初始化,并喚醒所有的等待線程
  • 如果初始化失敗,則拋出異常,并將C標記為錯誤,同時喚醒所有的等待線程
  • 上文為JVM11規范中的步驟,實際中可以看到hotspot在實現時和規范所寫略有偏差,但基本差不多。

    3. 分配實例

    // hotspot/share/oops/instanceKlass.cpp instanceOop InstanceKlass::allocate_instance(TRAPS) {bool has_finalizer_flag = has_finalizer(); // 是否存在非空finalize()方法int size = size_helper(); // 類的大小instanceOop i;i = (instanceOop)Universe::heap()->obj_allocate(this, size, CHECK_NULL); // 分配對象if (has_finalizer_flag && !RegisterFinalizersAtInit) {i = register_finalizer(i, CHECK_NULL);}return i; } 在這里我們比較關注的是堆空間分配對象環節,

    3.1 堆空間分配對象

    代碼如下:

    // hotspot/share/gc/shared/memAllocator.cpp oop MemAllocator::allocate() const {oop obj = NULL;{Allocation allocation(*this, &obj);HeapWord* mem = mem_allocate(allocation);if (mem != NULL) {obj = initialize(mem);}}return obj; } 很容易可以看到,此處的主流程分為兩個部分,內存分配和初始化。

    3.1.1 內存分配

    直接打開代碼,如下:

    // hotspot/share/gc/shared/memAllocator.cpp HeapWord* MemAllocator::mem_allocate(Allocation& allocation) const {if (UseTLAB) {HeapWord* result = allocate_inside_tlab(allocation);if (result != NULL) {return result;}}return allocate_outside_tlab(allocation); } 在這段代碼中,我們可以看到一個很耳熟的東西——TLAB(ThreadLocalAllocBuffer),默認情況下TLAB是打開狀態,而且其對Java性能提升非常顯著。首先,先簡單介紹一下TLAB的概念,

    因為JVM堆空間是所有線程共享的,因此分配一個對象時會鎖住整個堆,這樣效率就會比較低下。因此JVM在eden區分配了一塊空間作為線程的私有緩沖區,這個緩沖區稱為TLAB。不同線程不共享TLAB,因此在TLAB中分配對象時是無需上鎖的,從而可以快速分配。

    在這段代碼中,內存分配劃分為了兩個部分——TLAB內分配和TLAB外分配。

    a. TLAB內分配

    我們先來看看TLAB內分配的過程,

    // hotspot/share/gc/shared/memAllocator.cpp HeapWord* MemAllocator::allocate_inside_tlab(Allocation& allocation) const {HeapWord* mem = _thread->tlab().allocate(_word_size);if (mem != NULL) {return mem;}return allocate_inside_tlab_slow(allocation); }

    同樣的在TLAB的分配的過程中,也被拆成了兩種情況,一種是直接使用線程現有的TLAB來進行分配,代碼如下,在下面的這段代碼中,我們可以看到TLAB的分配就只是簡單地將top指針向上增加了size大小,并且將原先top的位置分配給了obj,因此分配效率可以說是極速了。(事實上,TLAB就是通過start、top、end等指針標記了TLAB的存儲信息以及分配空間)

    // hotspot/share/gc/shared/threadLocalAllocBuffer.inline.hpp inline HeapWord* ThreadLocalAllocBuffer::allocate(size_t size) {invariants(); // 校驗TLAB是否合法HeapWord* obj = top();if (pointer_delta(end(), obj) >= size) {set_top(obj + size);invariants();return obj;}return NULL; }

    接下來我們來看看TLAB內的慢分配,

    // hotspot/share/gc/shared/memAllocator.cpp HeapWord* MemAllocator::allocate_inside_tlab_slow(Allocation& allocation) const {HeapWord* mem = NULL;ThreadLocalAllocBuffer& tlab = _thread->tlab();if (ThreadHeapSampler::enabled()) {tlab.set_back_allocation_end();mem = tlab.allocate(_word_size);if (mem != NULL) {allocation._tlab_end_reset_for_sample = true;return mem;}}// 如果TLAB的剩余空間大于閾值,則保留TLAB,這樣就會進入TLAB外分配。在這里,每次TLAB分配失敗,該TLAB都會調大該閾值,以防線程重復分配同樣大小的對象if (tlab.free() > tlab.refill_waste_limit()) {tlab.record_slow_allocation(_word_size);return NULL;}// 計算一個新的TLAB的大小,公式=min{可用空間,期待空間+對象占據空間,最大TLAB空間}size_t new_tlab_size = tlab.compute_size(_word_size);// 清理原先的TLAB。會將剩余的未使用空間填充進一個假數組,創造EDEN連續的假象,并且將start、end、top等指針全部置為空tlab.clear_before_allocation();if (new_tlab_size == 0) {return NULL;}// 創建一個新的TLAB,空間可能在min_tlab_size到new_tlab_size之間size_t min_tlab_size = ThreadLocalAllocBuffer::compute_min_size(_word_size);mem = _heap->allocate_new_tlab(min_tlab_size, new_tlab_size, &allocation._allocated_tlab_size);if (mem == NULL) {return NULL;}// 將分配的空間數據全部清0if (ZeroTLAB) {Copy::zero_to_words(mem, allocation._allocated_tlab_size);}// 將mem位置分配word_size大小給objtlab.fill(mem, mem + _word_size, allocation._allocated_tlab_size);return mem; }

    b. TLAB外分配

    // hotspot/share/gc/shared/memAllocator.cpp HeapWord* MemAllocator::allocate_outside_tlab(Allocation& allocation) const {allocation._allocated_outside_tlab = true;HeapWord* mem = _heap->mem_allocate(_word_size, &allocation._overhead_limit_exceeded);if (mem == NULL) {return mem;}NOT_PRODUCT(_heap->check_for_non_bad_heap_word_value(mem, _word_size));size_t size_in_bytes = _word_size * HeapWordSize;_thread->incr_allocated_bytes(size_in_bytes);return mem; } 這里的核心關注點只有一個——堆內存分配,此處以openjdk11的默認GC——G1為例,看一看分配的過程。 // hotspot/share/gc/g1/g1CollectedHeap.cpp HeapWord* G1CollectedHeap::mem_allocate(size_t word_size,bool* gc_overhead_limit_was_exceeded) {assert_heap_not_locked_and_not_at_safepoint();if (is_humongous(word_size)) {return attempt_allocation_humongous(word_size);}size_t dummy = 0;return attempt_allocation(word_size, word_size, &dummy); }

    在G1中,對象的分配分為了兩種形式:大對象分配、普通分配。由于代碼比較長,簡單描述大對象的分配過程如下:

  • 檢查是否需要GC,如需要則觸發GC,因為大對象消耗堆的速度非常快
  • 計算大對象需要占據多少區塊,嘗試分配連續的空閑區塊
  • 如果沒有足夠的連續空間,找到一塊包含空閑和使用中的連續區塊,嘗試擴展
  • 嘗試GC,如果失敗達到閾值則分配失敗,進行下一步的普通分配
  • 接下來的普通分配過程較為復雜,本文就不再深入探究了。

    3.1.2 初始化對象

    代碼如下

    // hotspot/share/gc/shared/memAllocator.cpp oop ObjAllocator::initialize(HeapWord* mem) const {mem_clear(mem);return finish(mem); }其中mem_clear()方法比較簡單,就是將對象除頭部以外的數據全部置為0,代碼如下, // hotspot/share/gc/shared/memAllocator.cpp void MemAllocator::mem_clear(HeapWord* mem) const {const size_t hs = oopDesc::header_size();oopDesc::set_klass_gap(mem, 0);Copy::fill_to_aligned_words(mem + hs, _word_size - hs); }

    接下來看看finish()函數,

    // hotspot/share/gc/shared/memAllocator.cpp oop MemAllocator::finish(HeapWord* mem) const {assert(mem != NULL, "NULL object pointer");if (UseBiasedLocking) {oopDesc::set_mark_raw(mem, _klass->prototype_header());} else {oopDesc::set_mark_raw(mem, markOopDesc::prototype());}oopDesc::release_set_klass(mem, _klass);return oop(mem); }

    還記得對象頭中有兩個屬性mark和metadata嗎?finish()方法就是設置對象的頭部數據。

    3.2 注冊finalize()方法

    由于平時幾乎很少用到finalize(),且內部邏輯比較復雜,因此本文暫時不探究finalize的注冊機制。

    4. 整體流程

    整個JVM對象分配的整體流程大致如下,

    總結

    以上是生活随笔為你收集整理的Java对象分配原理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    天海翼一区二区三区免费 | 欧美精品久久天天躁 | av在线进入 | 欧美午夜a | 91黄色影视 | 97在线观看 | 热久久视久久精品18亚洲精品 | 四虎影视8848aamm | 日韩精品一区二 | 国产三级视频在线 | 综合久久久久 | 免费成人av在线看 | 欧美日韩性视频在线 | 久草视频免费在线播放 | 激情综合五月网 | 最近中文字幕在线 | 视频国产在线 | 欧美一级片免费播放 | 日韩大片免费观看 | 国产视频精选在线 | 国产精品久久久久久久7电影 | 久久丁香 | 97精品国产91久久久久久 | 97理论电影 | 91麻豆网站 | 国产精品久久久视频 | 91高清视频在线 | 亚州精品在线视频 | 国产一级黄色免费看 | 亚洲高清在线 | 免费观看性生活大片 | 国产一二三四在线视频 | 在线观看视频一区二区三区 | 天天综合亚洲 | 免费观看性生交大片3 | 日韩在线第一区 | 午夜视频日本 | 国产精品12| 美女免费黄网站 | a视频在线播放 | 亚洲一级黄色大片 | 国产精品美女视频 | 亚洲2019精品 | 国产美女网站视频 | 美女视频黄在线 | 在线亚洲人成电影网站色www | 国产一区在线播放 | 色婷婷国产| 五月色综合 | 91桃色视频 | 国产区网址| 国产一区在线免费 | 在线观看免费一级片 | 9999毛片 | 色网站视频 | 久久精品国产免费 | 在线看国产一区 | 特级黄录像视频 | 亚洲一区av | 成人免费色 | 精品国产亚洲在线 | 一区av在线播放 | 日韩女同一区二区三区在线观看 | 久久亚洲影院 | 国产精品免费在线播放 | 免费中文字幕在线观看 | 在线亚洲人成电影网站色www | 99精品视频在线观看 | 五月天高清欧美mv | 国产91精品久久久久久 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 日本中文字幕免费观看 | 国产精品国产三级国产aⅴ9色 | 久久夜色电影 | av在线日韩 | 91在线免费播放 | 97视频资源| 亚洲激情校园春色 | 日韩高清久久 | 在线综合色 | 久久婷婷影视 | 欧美日韩中文在线视频 | 中文字幕精品一区二区精品 | 色姑娘综合天天 | 人人草天天草 | 97视频在线观看免费 | 不卡中文字幕在线 | 日韩免费高清 | 婷婷国产一区二区三区 | 麻豆精品在线 | 激情五月婷婷激情 | 九色91在线| 九九热免费在线视频 | 在线a视频免费观看 | 中文字幕一区二 | 九九热在线视频免费观看 | 在线观看av中文字幕 | 欧美视频www | 欧美精品久久久久a | 亚洲精品久久久久999中文字幕 | 亚州精品在线视频 | 97视频总站 | 日韩精品视频免费在线观看 | 在线视频欧美日韩 | 国产手机视频在线播放 | 在线免费观看黄网站 | 91免费在线| 国产麻豆精品一区二区 | 日本中文一区二区 | 天天色天天干天天 | 国产大陆亚洲精品国产 | 91chinese在线 | 在线看岛国av | 亚洲视频网站在线观看 | 日本韩国精品一区二区在线观看 | 久久久国产精品网站 | 亚洲国产精品成人va在线观看 | 久久视频在线免费观看 | 亚洲第一区在线观看 | 一区二区三区中文字幕在线观看 | 亚洲专区欧美 | 免费h视频| 玖玖在线看 | 玖玖在线观看视频 | 黄色大全免费观看 | 日韩电影在线看 | 中文字幕第一页在线 | 蜜臀av性久久久久av蜜臀妖精 | www.午夜| 三级在线视频观看 | 99热99热| 亚洲精品九九 | 激情丁香婷婷 | 91热视频在线观看 | 91夫妻视频 | 久久网站免费 | 激情www | 免费黄色网止 | 久久国产精品一区二区 | 九九导航 | 欧美激情片在线观看 | 97国产视频 | 天天拍天天干 | 亚洲精品成人 | 亚洲国产视频在线 | 97涩涩视频| 午夜婷婷网 | 欧美在线观看视频一区二区 | 久久这里只有精品1 | 成人亚洲精品国产www | 91av视频在线免费观看 | 午夜久久福利视频 | 黄色网址中文字幕 | 美女福利视频一区二区 | 久久综合狠狠综合 | 久久国产精品视频 | 成人黄色电影视频 | 中文字幕乱码一区二区 | 免费麻豆 | 99中文字幕在线观看 | 欧美日韩在线观看不卡 | 伊人热| 国产在线播放观看 | 一级片免费观看视频 | 国产精品嫩草影院99网站 | 亚洲精品午夜国产va久久成人 | 欧美射射射 | 国产一级二级在线 | 日韩视频中文 | 91人人干| 欧美国产在线看 | 久草在线视频免赞 | 99久久99久久精品免费 | 99久久精品国产免费看不卡 | 久久免费视频一区 | 美女免费视频网站 | 99在线精品免费视频九九视 | 91大神精品视频 | 免费视频a | 午夜在线免费观看 | 精品久久久一区二区 | 免费观看完整版无人区 | 丁香婷婷激情国产高清秒播 | 中文字幕av一区二区三区四区 | 6699私人影院 | 欧美在线一 | 免费观看国产精品视频 | 久久激情综合 | av免费观看高清 | 一区二区三区电影在线播 | 亚洲精品乱码久久久一二三 | 国产福利免费在线观看 | 免费www视频| 91黄色在线视频 | 激情视频免费观看 | 69精品人人人人 | 天天做天天爱夜夜爽 | 天天插综合 | 亚洲成a人片在线www | 中国一级特黄毛片大片久久 | 久久 国产一区 | 日韩在线视频观看 | 国产视频久久 | 韩国av一区二区三区 | 激情综合网天天干 | 精壮的侍卫呻吟h | 欧美激情精品久久久久久免费 | 黄色www在线观看 | 国产精品美女久久久久久久久久久 | 亚洲伊人色| 国产精品一区二区三区免费视频 | 天天操天天色天天射 | 色a网 | 国产精品国产亚洲精品看不卡 | 午夜在线资源 | 国产传媒中文字幕 | 国产拍在线 | 婷五月激情 | 久久久亚洲麻豆日韩精品一区三区 | 国产精品视频永久免费播放 | 日本成人中文字幕在线观看 | 精品国产观看 | 视频一区视频二区在线观看 | 蜜臀久久99精品久久久无需会员 | 狠狠成人 | 五月天久久久久 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 国产成人一二三 | 91超级碰 | 国产在线观看xxx | 久久精品成人欧美大片古装 | 亚洲欧美视频在线播放 | 亚洲婷婷综合色高清在线 | 日本护士三级少妇三级999 | 97香蕉久久超级碰碰高清版 | 国产精品免费一区二区 | 丁香婷婷激情国产高清秒播 | 国产精品免费av | 人人爽人人做 | 特级西西444www大精品视频免费看 | 日韩精品视频在线观看网址 | 81精品国产乱码久久久久久 | 日韩精品免费在线 | 久久精品国产久精国产 | 亚洲 欧洲av | 国产一级片网站 | 在线播放 日韩专区 | 免费看的黄色 | 国产精品一区二区三区免费看 | 狠狠的干 | 激情偷乱人伦小说视频在线观看 | 九九热在线观看视频 | 日韩伦理片一区二区三区 | 欧美在线观看禁18 | 日韩欧美一区二区不卡 | 狠狠操夜夜 | 久久99精品久久久久久 | 丁香伊人网| 国产午夜精品久久久久久久久久 | 亚洲精品五月 | 国产一级免费观看 | 日韩在线第一 | 久久夜色网| 久久久久久国产一区二区三区 | 欧美日韩大片在线观看 | 国产精品9999 | 国产精品一区二区久久精品 | 欧美一级久久久久 | 91亚瑟视频 | 中文字幕乱码亚洲精品一区 | 九九爱免费视频 | 婷婷久久亚洲 | 日本三级不卡视频 | 久久久av免费 | 久草免费新视频 | www成人av| 欧美日韩国产网站 | 毛片网站在线看 | 韩国一区二区三区视频 | av一区二区三区在线 | 丁香激情综合久久伊人久久 | 国产一区在线免费观看 | 天天干天天看 | 国产xx在线 | 成年人黄色大全 | 成人黄视频 | 色婷婷丁香 | 又长又大又黑又粗欧美 | 欧美精品久久人人躁人人爽 | 久久婷婷视频 | 精品毛片一区二区免费看 | 粉嫩aⅴ一区二区三区 | 一区二区三区视频网站 | 国产中文字幕大全 | 99精品在线观看视频 | 国产精品一区二区三区免费视频 | 国产精品扒开做爽爽的视频 | 五月婷婷深开心 | av一级片在线观看 | 日韩av不卡在线观看 | 日韩毛片久久久 | 国产精品9区 | 国产精品久久网站 | 91麻豆精品国产午夜天堂 | 男女男视频 | 天堂av一区二区 | 在线精品亚洲一区二区 | 国产91av视频在线观看 | 欧美日本国产在线观看 | 日韩欧美在线免费观看 | 色婷婷成人 | 亚洲国产精品成人av | 亚洲精选在线 | 精品久久久久一区二区国产 | 91精品国产九九九久久久亚洲 | 午夜久久电影网 | 在线天堂中文www视软件 | 一区二区精 | 久久国语露脸国产精品电影 | 国产福利专区 | 亚洲国产精品免费 | 中文字幕丝袜一区二区 | 日韩黄色一级电影 | 狠狠黄| 天天操夜夜想 | 99精品国产99久久久久久福利 | 国产中文字幕视频在线观看 | 国产色黄网站 | 欧美日韩精品综合 | 国产美女精品在线 | 国产亚洲高清视频 | 97在线精品国自产拍中文 | 国产精品久久久久久久7电影 | 色国产精品| 日韩精品一区二区三区在线播放 | 超碰在97| 久久久久久久久亚洲精品 | 日本在线观看中文字幕无线观看 | 国产日本三级 | 天天射天天干天天 | 久久免费久久 | 久久激情视频 | www.狠狠操.com | 天天插天天爱 | 国产福利专区 | 99精品久久只有精品 | 日韩激情中文字幕 | 久久精品国产免费看久久精品 | 久久毛片视频 | 欧美午夜精品久久久久久浪潮 | 成人免费网站视频 | 色婷婷88av视频一二三区 | 免费午夜视频在线观看 | 久久九九久久精品 | 激情伊人五月天久久综合 | 国产福利电影网址 | 亚洲国产剧情av | 国产精品乱码久久久久 | 中文字幕在线久一本久 | 激情九九 | 国产高清视频在线播放 | 蜜桃麻豆www久久囤产精品 | 国产麻豆视频免费观看 | 久草线| 97精品伊人 | 色综合夜色一区 | 特黄一级毛片 | 欧洲视频一区 | 天躁狠狠躁 | 久久久久高清毛片一级 | 国产精品久久久久久久久久久久冷 | 狠狠狠色丁香综合久久天下网 | 久久香蕉国产精品麻豆粉嫩av | 丝袜av网站| 国产麻豆视频在线观看 | 狠狠干天天射 | 天天干天天干天天色 | 欧美日韩在线播放一区 | 91精品在线视频观看 | 正在播放一区 | 97香蕉久久国产在线观看 | 国内精品久久久久久久久久 | 成人免费视频免费观看 | 黄色的网站免费看 | 区一区二区三区中文字幕 | 久久精品视频免费 | 国产在线观看你懂得 | 国产黄色成人 | 成人av片在线观看 | 911精品美国片911久久久 | 91桃花视频| 不卡的av中文字幕 | 91精彩在线视频 | 狠狠艹夜夜干 | 精品国偷自产国产一区 | 天天插天天干 | 久久免费av电影 | 精品亚洲男同gayvideo网站 | 99热国内精品 | 免费看成人av | 亚洲最新在线视频 | 一级免费黄视频 | 久99精品| 精品国产亚洲一区二区麻豆 | 91九色网站 | 一级性视频 | 99精品系列 | 国产精品ssss在线亚洲 | 免费91在线观看 | 国产精品久久久久久久久久直播 | 国产精品久久久99 | 亚洲一区二区三区在线看 | 中文字幕高清在线播放 | 99久久日韩精品视频免费在线观看 | 亚洲精品视频在线观看免费视频 | 国产色网站 | 久久久久久伊人 | 亚洲人成免费 | 国产乱对白刺激视频在线观看女王 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 色婷婷综合成人av | 91桃色在线观看视频 | 欧美日韩不卡在线视频 | 日韩二区在线 | 亚洲日日日 | 97在线精品国自产拍中文 | 国产精品一区二区久久国产 | 缴情综合网五月天 | 日本午夜免费福利视频 | 亚洲欧美激情精品一区二区 | 黄色成人91 | 精品国产电影 | 午夜在线免费观看视频 | 国产视频一区在线 | 九九九九九国产 | 91免费观看视频在线 | 少妇av网| 激情综合网五月婷婷 | av在线免费网 | 国产中文a | 国产字幕在线观看 | 91电影福利 | 成人亚洲欧美 | 天天爱天天爽 | 美女久久 | 日日摸日日 | 日日夜夜精品免费观看 | 在线播放你懂 | 欧美91精品国产自产 | 日韩视频一区二区三区 | www.色午夜 | 少妇bbbb搡bbbb搡bbbb | 天天干天天干天天干天天干天天干天天干 | 亚洲黄色免费观看 | 成年人在线观看 | 亚洲精品xxx | 国产主播大尺度精品福利免费 | 一区二区精品在线 | 99热最新地址 | 国产91精品欧美 | 久久久久亚洲精品男人的天堂 | 精品高清美女精品国产区 | 人人狠狠综合久久亚洲 | 国产一级在线看 | 伊人狠狠色丁香婷婷综合 | 免费十分钟 | 色网站国产精品 | 91在线日韩 | 久久精品99| 久久久久久久久久网 | 爱爱av在线 | 国产成人精品av | 亚洲精品福利在线 | 高清久久久久久 | 播五月综合| 国产美女网站视频 | 手机av资源 | 欧美婷婷色 | 国产伦精品一区二区三区免费 | www.狠狠| 久久久国际精品 | 久久久999| 国产在线一区观看 | 国产亚洲婷婷免费 | 国产中文字幕第一页 | 免费在线观看污网站 | 永久免费精品视频网站 | 久久美女电影 | 欧美日韩精品二区第二页 | 亚洲精品在线网站 | 天天综合成人网 | 久久夜色精品国产欧美乱极品 | 久久成人免费视频 | 国产在线999 | 久久久久国产精品免费网站 | 中文字幕一区二区三区四区 | 欧美日韩精品在线观看 | 久草视频免费播放 | 亚洲欧美日韩一区二区三区在线观看 | 日韩欧美一级二级 | 精品亚洲免费 | 精品久久久久久久久久久久 | 成片免费观看视频 | 日韩资源在线播放 | 综合久久2023| 99视频精品全部免费 在线 | 一区二区三区免费在线观看视频 | 国产精品免费在线播放 | 99精品国产99久久久久久福利 | 国内毛片毛片 | 成人综合婷婷国产精品久久免费 | 看片网站黄 | 在线观看色网站 | 国产精品视频不卡 | 国产视频资源在线观看 | 西西444www大胆无视频 | 成人午夜剧场在线观看 | 99久久精品无码一区二区毛片 | 国产+日韩欧美 | 天天干.com| 国产精品一区二区av麻豆 | av在线影视| 国产精品入口66mio女同 | 亚洲精品男人天堂 | 国内成人av| 一区二区视频电影在线观看 | 亚洲五月 | 免费黄av | 亚洲成av人影院 | 免费午夜在线视频 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 99这里只有精品视频 | 夜夜高潮夜夜爽国产伦精品 | 91丨精品丨蝌蚪丨白丝jk | 成人免费观看大片 | 午夜美女影院 | 亚洲免费av网站 | 国产免费一区二区三区网站免费 | 精品国内 | 激情视频久久 | 最近中文字幕免费观看 | 国产亚洲精品bv在线观看 | 国产福利免费看 | 午夜精品区 | 最新91在线视频 | 亚洲一区二区三区在线看 | bbbb操bbbb| 午夜精品福利在线 | 丁香六月网 | 国产精品成人久久久久久久 | 国产99久久久国产精品免费看 | 国产成人精品一区二区在线 | 在线国产中文字幕 | 久久伊人精品天天 | 丁五月婷婷 | 成人av在线观 | 黄色亚洲精品 | 久久久国产影视 | 综合久久久久 | 国产精品不卡在线观看 | 天天摸天天干天天操天天射 | 亚洲国产影院 | 亚洲欧美日韩精品久久奇米一区 | 成片免费观看视频大全 | 精品女同一区二区三区在线观看 | 国产精品每日更新 | 中文字幕在线观看完整版 | 久久综合给合久久狠狠色 | 日韩中文幕 | 激情综合网五月婷婷 | 五月婷婷操 | 国产一区成人在线 | 一区二区不卡高清 | 午夜精品久久久久久久99水蜜桃 | 91视频这里只有精品 | 国产 视频 久久 | 久久精品超碰 | 中国一级片在线观看 | 欧美大片在线看免费观看 | 二区三区在线 | 国产精品一区在线观看 | 久久免费在线视频 | 免费看的黄色的网站 | 人人草在线观看 | 久久久久久久99精品免费观看 | 中文字幕成人 | 亚洲高清在线 | 亚洲涩涩网| 最近中文字幕视频网 | 国产精品成 | 999热线在线观看 | 亚洲国产综合在线 | 一区二区三区四区在线免费观看 | 在线观看日韩精品视频 | 久久久久久高潮国产精品视 | 婷婷av综合| 国产精品日韩欧美 | 欧美日韩一区二区免费在线观看 | 天天射综合 | av在线网站免费观看 | av免费在线免费观看 | 激情五月六月婷婷 | 国产一区黄色 | 色全色在线资源网 | 欧美综合久久 | 久草在线看片 | 精品黄色在线 | 国产精品白浆视频 | 久久久久国产精品午夜一区 | 51精品国自产在线 | 91视频免费国产 | 一级黄网 | 国产精品网址在线观看 | 久久狠狠一本精品综合网 | 欧美91视频 | 91在线视频 | 色偷偷人人澡久久超碰69 | 97视频人人澡人人爽 | 色七七亚洲影院 | 欧美在线久久 | www日日| 日本中出在线观看 | 91精品久久久久久综合乱菊 | 99免费在线观看视频 | www久久99| 国产精品第十页 | 在线小视频你懂得 | 成人亚洲精品国产www | 久久精品精品电影网 | 九色在线| 欧美做受高潮1 | 麻豆91网站 | 激情欧美一区二区三区免费看 | 中文字幕一区二区三区四区久久 | 干干操操 | 黄色小说在线免费观看 | 久久综合五月天婷婷伊人 | 精品视频一区在线观看 | 国产精品免费久久 | 国产成人免费网站 | 亚洲综合视频在线 | 狠狠色丁香婷婷综合欧美 | 二区视频在线观看 | 久久成人精品电影 | 91成人看片| 日韩在线视频观看免费 | 免费福利在线播放 | 精品伊人久久久 | 天天射天天爱天天干 | 91插插插免费视频 | 国产小视频在线免费观看 | 中日韩在线视频 | 亚洲免费视频观看 | 97人人澡人人爽人人模亚洲 | 欧美网址在线观看 | 黄色av一区 | 日日干干 | 91中文字幕网 | 国产一级性生活 | 狠狠操精品 | 高清免费在线视频 | www·22com天天操 | 最近中文字幕完整视频高清1 | 国产专区欧美专区 | 亚洲免费av一区二区 | 在线免费视频a | 国产精品人人做人人爽人人添 | 国产黄色一级片在线 | 亚洲精品国产自产拍在线观看 | 亚洲精品美女久久久久 | 国产精品美女www爽爽爽视频 | 亚洲欧美国内爽妇网 | 91最新国产 | 日韩一区二区三区免费视频 | 在线看片日韩 | 美女视频一区 | 国产精品自在欧美一区 | 国产看片网站 | 玖玖玖精品 | 在线观看视频国产一区 | 国产免费专区 | 国产一区在线不卡 | 国产在线精品一区二区 | 国产精品一区二区吃奶在线观看 | www.人人草| 日本最新一区二区三区 | 天天射天天操天天干 | 亚洲精品国产自产拍在线观看 | 欧美一级特黄aaaaaa大片在线观看 | 超碰97中文 | 精品免费观看视频 | 久久99久久99精品免观看软件 | 久久久久久久久久亚洲精品 | 亚洲一二区视频 | 国产黄色在线看 | a国产精品 | 999精品| 久久色视频| 天天插天天狠天天透 | 欧美aaa大片 | 日韩精品中文字幕在线不卡尤物 | 9幺看片| 国产视频一二三 | 亚洲精品午夜一区人人爽 | 97成人啪啪网 | 亚洲欧洲一区二区在线观看 | 色a资源在线 | 国产成在线观看免费视频 | 一区中文字幕电影 | 免费三级在线 | 国产在线精品二区 | 人人澡人人干 | 人人玩人人添人人澡超碰 | 国产夫妻性生活自拍 | 中文字幕日本特黄aa毛片 | 国产亚洲一区二区在线观看 | 久久综合久久久久88 | 91麻豆.com | 久久国产美女视频 | 一区二区三区三区在线 | 成年人毛片在线观看 | 精品五月天 | 婷婷丁香色综合狠狠色 | 亚洲美女久久 | 麻豆91在线播放 | 青春草免费视频 | 国产一区二区成人 | 日本女人的性生活视频 | 亚洲天天干 | 中文字幕在线视频国产 | 国产网站色 | 亚洲精品一区二区精华 | 草久久影院 | 色视频在线观看 | 国产精品一区二区三区免费看 | 91精品国产乱码久久桃 | 国产字幕在线播放 | 日日干av| 伊人久久在线观看 | 四虎影视欧美 | 欧美日韩一区二区三区视频 | 最近中文字幕久久 | 久久久电影网站 | 欧美日韩综合在线 | 国产色婷婷精品综合在线手机播放 | 国产成人精品午夜在线播放 | 亚洲视频久久久 | 亚洲电影久久久 | 91精品视频在线看 | 久久久久国产成人免费精品免费 | 亚洲 中文字幕av | 最新av在线播放 | 久久久久综合视频 | 在线观看国产www | 黄网在线免费观看 | 国内精品视频免费 | 久久久久区 | 国产一级一片免费播放放 | 亚洲自拍偷拍色图 | 99久久激情视频 | 成人免费看电影 | 狠狠干夜夜操 | 中文字幕有码在线观看 | 欧美性色综合 | 国产一区二区不卡视频 | 免费国产ww | 久久久久久久久电影 | 18久久久久 | 99精品热视频只有精品10 | 久久综合之合合综合久久 | 久草在线视频免赞 | 欧美日韩国产精品爽爽 | 午夜精品久久久久久久久久久 | 久久色亚洲 | 国产精品国产亚洲精品看不卡15 | 中文字幕国产视频 | 中文字幕人成乱码在线观看 | a天堂最新版中文在线地址 久久99久久精品国产 | 在线天堂中文www视软件 | 日日夜夜狠狠干 | 国产精品久久久久久麻豆一区 | 国产精品久久久网站 | 天天色图 | 中文字幕麻豆 | 国产精品不卡在线播放 | 国产亚洲成人精品 | 成年人免费观看国产 | 日韩av电影中文字幕 | av在线网站免费观看 | 日日爽 | 91成人看片 | 色夜视频 | 97香蕉久久国产在线观看 | 视频在线国产 | 亚洲伊人色 | 在线播放91 | 日韩激情第一页 | 91成人在线观看高潮 | 丁香六月五月婷婷 | 96超碰在线 | 亚洲黄网站 | 久草在线视频国产 | 人人视频网站 | 国产一区二区在线免费播放 | 91成人精品在线 | 粉嫩av一区二区三区入口 | 欧美一进一出抽搐大尺度视频 | 亚洲精品国产日韩 | 国产中文视 | a v在线观看 | 91精品色 | 久久久久久久精 | 日韩特黄av| 日本精品午夜 | 人人爱人人做人人爽 | 色综合天天射 | 国内丰满少妇猛烈精品播 | 天天色天天爱天天射综合 | 91精品视频在线观看免费 | 午夜国产一区二区三区四区 | 成人wwwxxx视频 | 久久综合久色欧美综合狠狠 | 日日干精品 | 国产精品一区二区三区在线免费观看 | 久久免费视频99 | 日韩xxxxxxxxx | 麻花豆传媒mv在线观看 | 色婷婷免费视频 | 国产成年人av | 91精品电影 | 日韩精品久久久久 | 热re99久久精品国产66热 | 日韩精品在线看 | 国产在线v| 在线观看不卡视频 | 国产一线在线 | 久艹视频在线免费观看 | 国产小视频免费在线网址 | 久草在线在线精品观看 | 国产黄色观看 | 九九在线视频 | 国产一区二区电影在线观看 | 超碰在线97观看 | 丁香花在线观看免费完整版视频 | 全黄色一级片 | 欧美性色黄 | 日韩簧片在线观看 | 毛片美女网站 | 欧美精彩视频在线观看 | 国产视频2| 欧美日韩另类在线观看 | 欧美色图88 | 成人av网站在线 | 国产婷婷精品 | 夜色成人网 | av中文字幕在线观看网站 | 手机av在线不卡 | 一区二区电影在线观看 | 黄色91在线 | 伊人国产在线观看 | 久久五月精品 | www久久久久 | 国产一级视屏 | 欧美精品视 | 国产精品露脸在线 | 色综合久久久久久中文网 | 国产99久久久精品 | 久久久久免费 | 免费在线观看毛片网站 | 日韩av线观看| 久草精品视频在线看网站免费 | 国产视频精品久久 | 中文字幕在线观看免费高清完整版 | 亚洲理论片在线观看 | 婷婷播播网| 国产码电影 | 国产黄在线播放 | www色av| 日韩最新在线 | 韩国三级在线一区 | 国产精品久久久久久久电影 | freejavvideo日本免费 | 99久久精品国产毛片 | 亚洲国产精品日韩 | 麻豆91精品视频 | 999成人免费视频 | 永久中文字幕 | 久久国产精品成人免费浪潮 | 久久久综合精品 | 四虎影视成人精品国库在线观看 | 久久精品视频4 | 最新国产视频 | 日韩精品久久久久久中文字幕8 | 91在线操 | 天天射综合 | 色综合久久久网 | 99精品国产在热久久下载 | 丁香激情婷婷 | 色资源二区在线视频 | 少妇bbw撒尿 | 日本中文字幕视频 | 国产精品久久久久久久婷婷 | 就要色综合| 欧美日韩亚洲在线 | 精品日韩中文字幕 | 亚洲一级黄色 | 国产在线无 | 亚洲色图27p| 2019免费中文字幕 | 亚洲精选在线 | 欧美色图30p | 久久字幕 | 久久综合狠狠综合 | 国产成人精品久久亚洲高清不卡 | 国产成人久久精品一区二区三区 | 三级黄色免费片 | 蜜臀av夜夜澡人人爽人人桃色 | 8x成人在线 | 亚洲日日夜夜 | 99 色| 久久只有精品 | 日韩在线观看三区 | av成人免费在线 | 黄色三级网站在线观看 | 天天综合网久久综合网 | 国产91电影在线观看 | 丁香六月久久综合狠狠色 | 日韩av电影免费观看 | 911免费视频 | av永久网址| 久久综合欧美精品亚洲一区 | 精品美女久久久久 | 日韩最新在线视频 | 欧美在线视频一区二区 | 欧美性视频网站 | 色哟哟国产精品 | 亚洲视频,欧洲视频 | 国产在线自 | 日本在线观看一区二区三区 | 亚洲国产视频直播 | 中文字幕一区二区三区在线观看 | 玖玖玖精品 | 日本韩国欧美在线观看 | 天天射天天色天天干 | 中文字幕在线免费播放 | 国产高清在线观看av | www.五月婷婷.com | 免费观看的黄色片 | 国产精品少妇 | 欧美性久久久久久 | 91久久久久久国产精品 | 99日韩精品| 色视频 在线 | 有码中文字幕在线观看 | 亚洲精品高清一区二区三区四区 | 五月天婷婷视频 | 欧美性生交大片免网 | 欧亚久久| 欧美精品资源 | 国产精品视频最多的网站 | 国产黄色大全 | 久久久影院一区二区三区 | 人人爱人人舔 | 三级黄免费看 | 91在线视频播放 | 免费在线国产精品 | 久久成人麻豆午夜电影 | 日韩免费三区 | 欧洲av在线 | 一区二区在线电影 | 一区二区三区免费网站 | 日韩久久精品一区二区 | 亚洲免费精彩视频 | 日韩在线观看高清 | 久久激情小视频 | 国产精品免费观看视频 | 在线观看欧美成人 | 激情综合啪 | 亚洲国产欧美在线看片xxoo | 超碰人人做 | 免费成人av在线 | 日本中文字幕在线免费观看 | 亚州黄色一级 | 欧美大片大全 | 久久首页 | 波多野结衣视频一区 | 久久视影 | 国产精品视频区 | 九九久久电影 | 久久精品一区二区三区视频 | 韩国一区二区三区在线观看 | 一区在线免费观看 | 色吊丝在线永久观看最新版本 | 久久国产精品一二三区 | 黄色网址中文字幕 | 五月天天色 | 一区二区三区电影在线播 | 97超碰总站 |