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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

浅析UE4垃圾回收

發布時間:2023/12/31 综合教程 31 生活家
生活随笔 收集整理的這篇文章主要介紹了 浅析UE4垃圾回收 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

垃圾回收(Garbage Collection)算法分類:

分類一 引用計數式

通過額外的計數來實時計算對單個對象的引用次數,當引用次數為0時回收對象。

如:微軟COM對象、句柄的加減引用值以及C++中的智能指針都是通過引用計數來實現GC的

追蹤式(UE4) 達到GC條件時(內存不夠用、到達GC間隔時間或者強制GC)通過掃描系統中是否有對象的引用來判斷對象是否存活,然后回收無用對象
分類二 保守式

不能準備識別每一個無用的對象(比如在32位程序中的一個4字節的值,它是不能判斷出它是一個對象指針或者是一個數字的),但是能保證在不會錯誤的回收存活的對象的情況下回收一部分無用對象。

不需要額外的數據來支持查找對象的引用,它將所有的內存數據假定為指針,通過一些條件來判定這個指針是否是一個合法的對象

精確式(UE4) 在回收過程中能準確得識別和回收每一個無用對象的GC方式,為了準確識別每一個對象的引用,通過需要一些額外的數據(比如虛幻中的屬性UPROPERTY)
分類三 搬遷式 GC過程中需要移動對象在內存中的位置,當然移動對象位置后需要將所有引用到這個對象的地方更新到新位置(有的通過句柄來實現、而有的可能需要修改所有引用內存的指針)。
非搬遷式(UE4) 在GC過程中不需要移動對象的內存位置
分類四 實時 不需要停止用戶執行的GC方式
非實時(UE4) 需要停止用戶程序的執行(stop the world)
分類五 漸進式 不會在對象拋棄時立即回收占用的內存資源,而在GC達成一定條件時進行回收操作
非漸進式(UE4) 在對象拋棄時立即回收占用的內存資源

UE4采用“追蹤式、精確式、非搬遷式、非實時、非漸進式”的標記清掃(Mark-Sweep)GC算法。該算法分為兩個階段:標記階段(GC Mark)和清掃階段(GC Sweep) 注:以下代碼基于UE 4.25.1版本

UObject對象采用垃圾回收機制,被UPROPERTY宏修飾或在AddReferencedObjects函數被手動添加引用的UObject*成員變量,才能被GC識別和追蹤,GC通過這個機制,建立起引用鏈(Reference Chain)網絡。

沒有被UPROPERTY宏修飾或在AddReferencedObjects函數被沒添加引用的UObject*成員變量無法被虛幻引擎識別,這些對象不會進入引用鏈網絡,不會影響GC系統工作(如:自動清空為nullptr或阻止垃圾回收)。

垃圾回收器定時或某些階段(如:LoadMap、內存較低等)從根節點Root對象開始搜索,從而追蹤所有被引用的對象。

當UObject對象沒有直接或間接被根節點Root對象引用或被設置為PendingKill狀態,就被GC標記成垃圾,并最終被GC回收。

注1:USTRUCT宏修飾的結構體對象和普通的C++對象一樣,是不被GC管理

注2:FGCObject對象和普通的C++對象一樣,是不被GC管理

基礎概念及操作

置nullptr

若將UObject對象的UPROPERTY宏修飾的UObject*成員變量置成nullptr,只會斷掉這個節點的子鏈路

獲取FUObjectItem

/**
* Single item in the UObject array.
*/
struct FUObjectItem
{
    // Pointer to the allocated object
    class UObjectBase* Object;
    // Internal flags
    int32 Flags;
    // UObject Owner Cluster Index
    int32 ClusterRootIndex;    
    // Weak Object Pointer Serial number associated with the object
    int32 SerialNumber;
};

// 獲取UObject對象對應的FUObjectItem
FUObjectItem* ObjItem = GUObjectArray.IndexToObject(Obj->GetUniqueID());

Root

1. AddToRoot函數會將UObject對象加到根節點Root上,讓其不被GC回收

該UObject對象對應GUObjectArray中的FUObjectItem的Flags會加上EInternalObjectFlags::RootSet標記

2. RemoveFromRoot函數會將UObject對象從根節點Root上移除

會去掉該UObject對象對應GUObjectArray中的FUObjectItem的Flags的EInternalObjectFlags::RootSet標記

標記為PendingKill

1. UObject對象不為Root對象,可通過調用MarkPendingKill函數將把該對象設置為等待回收的對象。

將UObject對象對應GUObjectArray中的FUObjectItem的Flags加上EInternalObjectFlags::PendingKill標記

UObject本身內存數據是沒有修改的,可對其成員進行讀寫

2. 可通過IsPendingKill函數來判斷一個UObject是否處于PendingKill狀態

3. 調用ClearPendingKill函數來清除PendingKill狀態

防止被GC的方法

1. 調用AddToRoot函數將UObject對象加到根節點Root上

2.直接或間接被根節點Root對象引用(UPROPERTY宏修飾的UObject*成員變量 注:UObject*放在UPROPERTY宏修飾的TArray、TMap中也可以)

標記階段(GC Mark)

從根節點集合開始,標記出所有不可達的對象。該階段執行時需要保證對象引用鏈不被修改,因此是阻塞的

一個對象一旦被標記為不可達,就被貼上垃圾的標簽,不可能再被復活,通過FindObject函數也不能獲取該對象,只能等待被GC回收

該階段后,不會修改UObject對象內存塊中任何數據

標記對象為不可達

等待回收UObjec對象,在經過GC Mark時,會將對象設置上EInternalObjectFlags::Unreachable標記,此時調用IsUnreachable函數才會返回true

需要注意的是,在GC Mark之前,即使等待回收UObjec對象已經是不可達的,但是此時由于未設置EInternalObjectFlags::Unreachable標記,因此調用IsUnreachable函數仍然會返回false

設置EInternalObjectFlags::Unreachable標記是在TaskGraph線程上做的

此時,游戲線程的Stack如下:

自動更新引用

一個UObject成為等待回收的對象時,以下幾種情況:

①賦值給其他UObject對象的UPROPERTY宏修飾的UObject*成員變量

②賦值給其他UObject對象的無UPROPERTY宏修飾的UObject*成員變量,但這些成員變量在重寫的靜態AddReferencedObjects函數中被手動添加引用

// AMyTest1Character重寫靜態函數AddReferencedObjects
// 將無UPROPERTY宏修飾的成員變量m_Obj3手動添加到引用鏈中
// 該函數在GC Mark和GC Sweep階段的過程中都會被調用
void AMyTest1Character::AddReferencedObjects(UObject* InThis, FReferenceCollector& Collector)
{
    AMyTest1Character* This = CastChecked<AMyTest1Character>(InThis);
    Collector.AddReferencedObject(This->m_Obj3);

    Super::AddReferencedObjects(InThis, Collector);
}

③賦值給其他FGCObject對象的無UPROPERTY宏修飾的UObject*成員變量,但這些成員變量在重寫的AddReferencedObjects函數中被手動添加引用

// FTestGCObject重寫函數AddReferencedObjects
// 將無UPROPERTY宏修飾的成員變量m_Obj3手動添加到引用鏈中  注:非UObject的對象也不允許添加UPROPERTY宏修
// 該函數在GC Mark和GC Sweep階段的過程中都會被調用
void FTestGCObject::AddReferencedObjects(FReferenceCollector& Collector) // FTestGCObject : public FGCObject
{
    Collector.AddReferencedObject(m_Obj3);  // UMyObject* m_Obj3為FTestGCObject的成員變量
}

在GC Mark階段,會將UObject*成員變量自動清空為nullptr,以防止出現野指針

將UObject*成員變量設置成nullptr是在TaskGraph線程上做的

此時,游戲線程處于等待狀態,其Stack如下:

清掃階段(GC Sweep)

階段遍歷所有對象,將標記為不可達的對象回收。該階段可通過限制時間來分幀異步進行,避免導致卡頓

在BeginDestroy函數中將UObject對象的Name設置成空 注:UObject對象的Flags通過RF_BeginDestroyed標志,來防止BeginDestroy函數執行多次

在FinishDestroy函數中銷毀所有UObject對象的非Native的屬性 注:UObject對象的Flags通過RF_FinishDestroyed標志,來防止FinishDestroy函數執行多次

最后,在TickDestroyObjects函數中調用UObject的析構函數,并調用GUObjectAllocator.FreeUObject函數來釋放內存

判斷UObject對象有效性

IsValid全局函數

判斷UObject對象指針是否為空以及是否為PendingKill狀態

IsValidLowLevel成員函數

依次檢查:①UObject對象指針是否為空 ②UObject對象的Class是否為空 ③檢查UObject對象的Index是否有效 ④在全局表GUObjectArray中對應的FUObjectItem中對象是否為空,是否與原UObject對象相同

在進行GC Sweep時,在調用UObject的析構函數中,IsValidLowLevel函數仍然能返回true

只有執行GUObjectArray.FreeUObjectIndex函數,發出NotifyUObjectDeleted通知時,IsValidLowLevel函數才返回false

IsValidLowLevelFast成員函數

依次檢查:①UObject對象指針是否為空或小于0x100,是否8字節對齊 ②UObject對象的虛表是否為空 ③UObject對象的ObjectFlags是否有效

④UObject對象的Class、Outer是否8字節對齊 ⑤UObject對象的Class及Class的CDO對象是否為空、Class的CDO對象是否8字節對齊

⑥UObject對象的Index是否在全局表GUObjectArray范圍內 ⑦UObject對象的Name是否有效

⑧如果參數bool bRecursive為true,還會對UObject對象的Class執行IsValidLowLevelFast(false)檢查

GC Sweep后,GUObjectAllocator.FreeUObject函數會回收掉這個UObject對象的內存。此時如果存在一個野指針指向該UObject,調用IsValidLowLevelFast(true)函數會返回false

注:野指針調用IsValidLowLevelFast函數本身是非法的,是未定義行為

注意:在PIE下執行GC沒有效果,PC上需要在Standalone下執行

執行GC操作的函數

以阻塞的方式嘗試進行一次GC Mark

GEngine->PerformGarbageCollectionAndCleanupActors();

TryCollectGarbage(GARBAGE_COLLECTION_KEEPFLAGS, false); // ① 會先檢查在其他線程中是否有UObject操作 ② 連續嘗試沒成功的次數 >GNumRetriesBeforeForcingGC時 注:UE4.25中GNumRetriesBeforeForcingGC配置為10

GEngine->ForceGarbageCollection(false); // 下一幀才以阻塞的方式嘗試進行一次GC Mark

以阻塞的方式進行一次GC Mark

CollectGarbage(RF_NoFlags, false);

CollectGarbage(GARBAGE_COLLECTION_KEEPFLAGS, false);

如果連續2次調用GC Mark,在第2次GC Mark之前,會先阻塞執行一次全量的GC Sweep

限制時間來分幀進行一次GC Sweep

IncrementalPurgeGarbage(true);// 以缺省0.002的時間進行一次GC Sweep

IncrementalPurgeGarbage(true, 0.1);// 以0.1的時間進行一次GC Sweep

引擎在每幀Tick中都在通過限制時間來分幀異步進行GC Sweep

阻塞的方式進行一次GC Sweep

IncrementalPurgeGarbage(false); // 以阻塞的方式進行一次GC Sweep

以阻塞的方式嘗試進行一次全量的GC(包括Mark和Sweep階段)

TryCollectGarbage(GARBAGE_COLLECTION_KEEPFLAGS, true);

GEngine->Exec(nullptr, TEXT("obj trygc"));

GEngine->ForceGarbageCollection(true); // 下一幀才以阻塞的方式嘗試進行一次全量的GC

以阻塞的方式進行一次全量的GC(包括Mark和Sweep階段)

CollectGarbage(RF_NoFlags);

CollectGarbage(GARBAGE_COLLECTION_KEEPFLAGS);

CollectGarbage(GARBAGE_COLLECTION_KEEPFLAGS, true);

GEngine->Exec(nullptr, TEXT("obj gc"));

GC相關的代理

static FSimpleMulticastDelegate& GetPreGarbageCollectDelegate(); // GC Mark或全量GC執行之前的代理通知

static FSimpleMulticastDelegate& GetPostGarbageCollect(); // GC Mark或全量GC完成之后的代理通知

static FSimpleMulticastDelegate PreGarbageCollectConditionalBeginDestroy; // GC SweepConditionalBeginDestroy之前的代理通知

static FSimpleMulticastDelegate PostGarbageCollectConditionalBeginDestroy;// GC SweepConditionalBeginDestroy完成之后的代理通知

static FSimpleMulticastDelegate PostReachabilityAnalysis; // GC Mark可達性分析之后的代理通知

GC相關的狀態API

bool IsGarbageCollectingOnGameThread() // GC是否在游戲線程上

bool IsInGarbageCollectorThread() // 是否在GC線程上

bool IsGarbageCollecting() // 是否正在執行GC邏輯

bool IsGarbageCollectionWaiting() // GC是否在等待運行

GC鎖

使得在垃圾回收時,其他線程的任何UObject操作都不會工作,避免出現一邊回收一邊操作導致的問題

FGCCSyncObject::Get().TryGCLock(); // 嘗試獲取GC鎖

AcquireGCLock(); // 獲取GC鎖

ReleaseGCLock(); // 釋放GC鎖

bool IsGarbageCollectionLocked() // GC鎖是否已經被獲取了

引擎中的GC邏輯

在Tick中調用GC邏輯

具體實現在:void UEngine::ConditionalCollectGarbage()函數中

在LoadMap中以阻塞的方式進行一次全量的GC

具體實現在:void UEngine::TrimMemory()函數中

GC相關的設置

這些值的默認設置定義在EngineConfigBaseEngine.ini中,項目修改這些值后,會保存在項目ConfigDefaultEngine.ini中

[/Script/Engine.GarbageCollectionSettings]
; Placeholder console variable, currently not used in runtime.
gc.MaxObjectsNotConsideredByGC=24575  ;NoGC對象長度   用于標記這個數組的前多少個元素要被GC跳過。在初始化時也預先在數組中添加了這么多個空元素
; Placeholder console variable, currently not used in runtime.
gc.SizeOfPermanentObjectPool=6321624
; If enabled, streaming will be flushed each time garbage collection is triggered.
gc.FlushStreamingOnGC=0  
; Maximum number of times GC can be skipped if worker threads are currently modifying UObject state.
gc.NumRetriesBeforeForcingGC=10
; sed to control parallel GC.
gc.AllowParallelGC=True  

; Time in seconds (game time) we should wait between purging object references to objects that are pending kill.
gc.TimeBetweenPurgingPendingKillObjects=60.000000  
; Placeholder console variable, currently not used in runtime.
gc.MaxObjectsInEditor=25165824  ; Maximum number of UObjects in the editor
; If true, the engine will destroy objects incrementally using time limit each frame
gc.IncrementalBeginDestroyEnabled=True
; If true, the engine will attempt to create clusters of objects for better garbage collection performance.
gc.CreateGCClusters=True  ; Create Garbage Collector UObject Clusters
; Minimum GC cluster size
gc.MinGCClusterSize=5
; Whether to allow levels to create actor clusters for GC.
gc.ActorClusteringEnabled=False
gc.BlueprintClusteringEnabled=False  ; Blueprint Clustering Enabled
; If false, DisregardForGC will be disabled for dedicated servers.
gc.UseDisregardForGCOnDedicatedServers=False  ; Use DisregardForGC On Dedicated Servers

GC相關的ConsoleVariable

;Placeholder console variable, currently not used in runtime.
gc.MaxObjectsInGame ; int   Maximum number of UObjects in cooked game

; Maximum number of UObjects for programs can be low
gc.MaxObjectsInProgram ; int   Default to 100K for programs

;If true, the UObjectArray will pre-allocate all entries for UObject pointers
gc.PreAllocateUObjectArray  ; bool
 
;If true, the engine will free objects' memory from a worker thread
gc.MultithreadedDestructionEnabled

; If set to 1, the engine will attempt to trigger GC each frame while async loading.
gc.StressTestGC

; If set to 1, the engine will force GC each frame.
gc.ForceCollectGarbageEveryFrame

; Used to debug garbage collection...Collects garbage every frame if the value is > 0.
gc.CollectGarbageEveryFrame

; Multiplier to apply to time between purging pending kill objects when on an idle server.
gc.TimeBetweenPurgingPendingKillObjectsOnIdleServerMultiplier

; Time in seconds (game time) we should wait between purging object references to objects that are pending kill when we're low on memory
gc.LowMemory.TimeBetweenPurgingPendingKillObjects

; Time in seconds (game time) we should wait between GC when we're low on memory and there are levels pending unload
gc.LowMemory.TimeBetweenPurgingPendingLevels

; Memory threshold for low memory GC mode, in MB
gc.LowMemory.MemoryThresholdMB

;Minimum number of objects to spawn a GC sub-task for.
gc.MinDesiredObjectsPerSubTask 

; Dumps count and size of GC Pools
gc.DumpPoolStats

; Dumps all clusters do output log. When 'Hiearchy' argument is specified lists all objects inside clusters.
gc.ListClusters

; Dumps all clusters do output log that are not referenced by anything.
gc.FindStaleClusters

; Dumps references to all objects within a cluster. Specify the cluster name with Root=Name.
gc.DumpRefsToCluster

EngineConfigAndroidAndroidEngine.ini中[/Script/Engine.GarbageCollectionSettings]標簽下,用gc.MaxObjectsInGame=3000000來指定Android版游戲中允許的最大Object個數

EngineConfigIOSIOSEngine.ini中[/Script/Engine.GarbageCollectionSettings]標簽下,用gc.MaxObjectsInGame=3000000來指定IOS版游戲中允許的最大Object個數

參考

虛幻4垃圾回收剖析

總結

以上是生活随笔為你收集整理的浅析UE4垃圾回收的全部內容,希望文章能夠幫你解決所遇到的問題。

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

国产在线久草 | 国产精品不卡在线播放 | 中文字幕一区二区三区在线播放 | 99久热在线精品 | 精品久久久久免费极品大片 | 久久久精品二区 | 久久精品专区 | 91精品视频观看 | 免费日韩电影 | 九九免费在线观看 | 91免费观看 | 亚洲精品免费在线观看视频 | 久久久免费观看 | 在线视频1卡二卡三卡 | 国产高清专区 | 日韩美女免费线视频 | 黄色aa久久 | 福利在线看片 | 国产在线91在线电影 | 人人插人人做 | 在线观看色网 | 久久不射电影院 | 午夜精品久久久久久久99无限制 | 日本中文字幕在线一区 | 国产精品成人一区二区 | 亚洲欧洲国产日韩精品 | 亚洲欧洲美洲av | 日韩网站在线免费观看 | 婷婷丁香五 | 国产日韩欧美综合在线 | 亚洲精品自在在线观看 | 中文区中文字幕免费看 | 亚洲一区二区高潮无套美女 | 69绿帽绿奴3pvideos | 一区二区三区电影大全 | 中文字幕一区二区三区四区 | av综合av| 成人午夜在线观看 | 免费黄色av | 丁香九月婷婷综合 | 国产色久 | 久久在线精品视频 | 久久精品中文字幕少妇 | 免费观看v片在线观看 | 国产丝袜网站 | 久久不卡视频 | 中文字幕区 | 日本精品视频免费观看 | 久久精品资源 | 国产少妇在线观看 | 91片在线观看 | 久久免费福利视频 | 欧美片一区二区三区 | 欧美男同网站 | 综合色中色 | 探花视频在线观看免费版 | 在线观看国产麻豆 | 四虎影视精品成人 | 成人av视屏 | 亚洲黄色成人 | 日韩久久影院 | 91av色| 亚洲一区二区三区毛片 | 中文字幕亚洲综合久久五月天色无吗'' | 日韩特黄一级欧美毛片特黄 | 丁香六月天 | 美女网站免费福利视频 | 激情综合网五月 | 日本性生活免费看 | 久草久视频 | 久亚洲 | 精品麻豆入口免费 | 激情电影影院 | 亚洲婷婷网 | 96久久 | 久久免费播放视频 | 久久蜜桃av | 免费裸体视频网 | 成人黄色电影在线播放 | 欧美一区二区三区激情视频 | 国产精品久久久久久久久久免费 | 在线免费观看黄色小说 | 国产剧情一区二区 | 日韩精品一区二区免费视频 | 人人爽人人香蕉 | 久久免费高清 | 五月婷网站 | 亚洲精品国产精品国自 | 亚欧洲精品视频在线观看 | 日韩毛片在线播放 | 日日操天天射 | 99国内精品 | 国内视频在线观看 | 亚洲成人二区 | 日韩欧美综合 | 国产啊v在线| 国产一区高清在线 | 色婷婷在线视频 | 午夜精品久久久久久久久久 | 特级西西www44高清大胆图片 | 久久精品精品 | 伊人日日干 | 免费在线看v | 国产手机在线精品 | 久久1区 | 日韩高清www | 最新国产视频 | 国产亚洲精品女人久久久久久 | 99久久夜色精品国产亚洲96 | 日日操夜 | 日韩av电影免费在线观看 | 日韩av一区二区三区 | 国产免费美女 | 久久综合国产伦精品免费 | 六月丁香婷婷在线 | 天天综合亚洲 | 西西4444www大胆视频 | www.夜夜操| 日韩精品免费在线观看 | 亚洲精品国产精品国自 | 日韩精品一区二区三区高清免费 | 97狠狠操 | 国产精品久久免费看 | 成年人电影免费在线观看 | 亚洲国产美女精品久久久久∴ | 亚洲成人黄色网址 | 亚洲国产欧美一区二区三区丁香婷 | 久久99热这里只有精品国产 | 在线www色 | 日韩手机在线观看 | 日本系列中文字幕 | 一区二精品 | 国产高清日韩欧美 | 国产一区播放 | 婷婷在线免费观看 | 久久久久久黄色 | 91一区二区三区在线观看 | 成人日韩av| 久久草在线精品 | 91色视频 | 91麻豆精品 | 国产午夜精品一区二区三区嫩草 | 国产精品少妇 | 亚洲aⅴ一区二区三区 | 东方av在 | 国产免费大片 | 国产免费作爱视频 | 91免费在线 | 在线视频 亚洲 | 亚洲国产视频在线 | 久久精品人人做人人综合老师 | 在线之家官网 | 亚洲一区二区91 | 在线观看视频你懂的 | 日韩欧美v | 日韩在线观看一区二区 | 成人cosplay福利网站 | 免费一级片在线观看 | 最近高清中文在线字幕在线观看 | 亚洲视频高清 | 国产中文在线观看 | 91麻豆精品国产午夜天堂 | 91污视频在线 | 黄色片网站av | 最新国产中文字幕 | 在线免费观看亚洲视频 | 超碰99人人 | 久久久久久久国产精品视频 | 国产另类av| 香蕉视频免费在线播放 | 婷婷色社区 | 中文字幕亚洲精品日韩 | 天天在线视频色 | 精品久久久久亚洲 | 久久久 精品 | 在线免费观看成人 | 免费欧美精品 | 欧美吞精 | 日韩字幕在线观看 | 成人av在线资源 | 日日干视频 | 国产免费观看av | 欧美大码xxxx | 久草电影在线 | 一区中文字幕电影 | 久久99电影 | 又黄又刺激的视频 | 国产专区免费 | 国产不卡一二三区 | 亚洲精品午夜一区人人爽 | 激情五月伊人 | 久草视频2 | 97超碰伊人 | 啪啪精品 | 欧美精品久久久久 | 人人看人人爱 | 91成人天堂久久成人 | 97视频在线播放 | 精品91在线 | 黄色毛片在线看 | 天天干天天拍天天操天天拍 | 日韩欧美精品免费 | 国产不卡在线观看视频 | 成人一区二区在线观看 | 中文字幕 欧美性 | 国产亚洲精品久久久久久无几年桃 | 欧美性做爰猛烈叫床潮 | 日韩午夜三级 | 国产99区 | 欧美a性 | 亚洲黄网址 | 日韩av在线一区二区 | 天天爱天天 | 午夜精品视频在线 | 黄色大片中国 | 欧美日韩破处 | 天天曰天天干 | 精品色综合 | 久久国产剧场电影 | 欧美日韩在线网站 | 最新影院| 精品久久久久久久久久 | 久久久久久国产一区二区三区 | av大全免费在线观看 | 热久久视久久精品18亚洲精品 | 婷婷色社区 | 美女黄频在线观看 | 久久久久这里只有精品 | 国产精品亚洲综合久久 | 人人舔人人爱 | 视频二区在线 | 欧美a性| 美女av免费看| 麻豆成人精品视频 | 夜夜爽夜夜操 | 久久色中文字幕 | 成人av电影免费观看 | 午夜在线观看 | a视频在线 | www.夜色321.com | 99国产精品一区二区 | 五月天久久综合 | 毛片网站在线 | 久久久综合香蕉尹人综合网 | 992tv在线 | 国产又粗又硬又爽视频 | 国产精品成人免费一区久久羞羞 | 国产一线在线 | 免费观看www7722午夜电影 | 韩国精品一区二区三区六区色诱 | 欧美激情精品久久久久久免费印度 | 一区二区三区免费看 | 亚洲精品在线观 | 国产高清视频免费观看 | 久草综合视频 | 日韩久久久 | 精品久久五月天 | 久久久免费看视频 | 人人干人人添 | 色综合色综合色综合 | 一级理论片在线观看 | 69av在线视频 | 欧美巨乳网 | 日韩欧美网站 | 国产99精品| 色国产精品 | 精品在线观看一区二区三区 | 91在线精品一区二区 | 中文视频在线 | www.eeuss影院av撸 | 国产精品久久久视频 | 亚洲综合狠狠干 | 国产成人精品av久久 | 欧美日韩精品久久久 | 国产精品中文字幕av | 国产四虎影院 | 91x色| 久久看看| 久久久久免费精品国产小说色大师 | 中文字幕免费一区二区 | 亚洲永久精品视频 | 狠狠色狠狠色合久久伊人 | 国产一级免费av | 国产精品丝袜久久久久久久不卡 | 精品国产欧美一区二区三区不卡 | 天堂av观看 | 婷婷六月综合网 | 国产精品久久久网站 | 91精品国自产在线观看 | 日日日日干 | 在线观看 国产 | 免费色网 | 美女在线国产 | 亚洲精品视频第一页 | 久草在线视频中文 | 亚洲三级在线播放 | 日韩精品无码一区二区三区 | 深爱激情丁香 | 久久久久免费看 | 911香蕉视频 | 久久精品激情 | 91中文字幕网| 91九色视频在线播放 | 亚洲国产黄色片 | 91在线九色 | 毛片在线网| 狠狠干网址| 免费a级观看 | 国产精品久久久一区二区 | 怡红院av| 麻豆传媒视频观看 | 一级免费黄视频 | 国产视频资源在线观看 | 久久综合九色综合97婷婷女人 | 狠狠干天天色 | 亚洲欧美日本一区二区三区 | 久久99这里只有精品 | 中文字幕中文字幕 | 青青网视频 | 九草在线观看 | 正在播放 国产精品 | 色鬼综合网 | 又黄又刺激视频 | 亚洲a资源 | 欧美日韩国产二区三区 | 国产成人精品午夜在线播放 | aa一级片| 99色在线视频 | 人人爽人人爱 | 婷婷综合成人 | 国产无套精品久久久久久 | 日韩成人av在线 | 在线成人欧美 | 亚洲在线免费视频 | 日韩视频1区 | 久久国产精品免费观看 | 激情婷婷 | 中文字幕精品一区二区精品 | 免费观看的av | a视频在线观看免费 | 人人看97| 99视频免费看 | 免费在线国产精品 | 免费在线观看日韩欧美 | 久久 地址 | 91九色精品国产 | 日韩av片无码一区二区不卡电影 | 亚洲成人网在线 | www狠狠操| 天天天插 | 亚洲精品18日本一区app | 久久免费在线观看视频 | 久久全国免费视频 | 美女免费电影 | 黄色软件在线观看视频 | 人人爱人人做人人爽 | 国产精品1区2区在线观看 | 天堂视频一区 | 91福利区一区二区三区 | 丁香六月婷婷开心 | 亚洲天堂精品 | 开心激情综合网 | 欧美不卡在线 | 激情五月综合 | 国内视频一区二区 | 国产男女无遮挡猛进猛出在线观看 | 激情欧美丁香 | 手机看片中文字幕 | 五月激情亚洲 | 免费黄色在线播放 | 97在线免费视频观看 | 亚洲欧洲中文日韩久久av乱码 | 亚洲激情校园春色 | 欧美国产视频在线 | 在线天堂中文www视软件 | 国产亚洲精品久久久久久移动网络 | 亚洲欧洲精品在线 | 蜜臀91丨九色丨蝌蚪老版 | 成人av高清 | 国产精品一区在线观看你懂的 | 日韩在线一二三区 | 91大神一区二区三区 | 中文字幕在线观看第三页 | 久久久久久亚洲精品 | 热99在线| 91久久久国产精品 | 国产中文字幕网 | av动态图片 | 国产高清久久久久 | 摸bbb搡bbb搡bbbb | 久久99精品国产99久久6尤 | 99久久精品免费看国产一区二区三区 | jizzjizzjizz亚洲 | 免费观看久久 | 色搞搞 | 91免费高清观看 | 一本一道久久a久久综合蜜桃 | 黄色特一级| 久久99九九99精品 | 久久国产精品免费视频 | 午夜精品一区二区三区可下载 | 精品视频在线播放 | 欧美日韩久久不卡 | 日韩啪啪小视频 | 成人国产精品一区二区 | 久久99久久99免费视频 | 欧美日韩三级在线观看 | 夜夜操狠狠干 | 中文av日韩| 免费观看www7722午夜电影 | 最新中文字幕在线播放 | 亚洲国产美女精品久久久久∴ | 欧美日韩中文字幕综合视频 | 日日爽天天操 | 国产高清中文字幕 | 久久久久99999 | 色视频在线免费观看 | 成人久久18免费网站图片 | 97精品国产97久久久久久 | 欧美有色 | 亚洲精品在线观看中文字幕 | 国产成人亚洲在线观看 | 久久久久久久久艹 | 中文字幕在线日亚洲9 | 蜜臀久久99精品久久久无需会员 | 亚洲欧美精品一区 | 亚洲精品乱码久久久久v最新版 | 人人看黄色 | 视频一区在线免费观看 | 成人三级av| 国产成人av电影在线 | 日韩网站在线观看 | 午夜精品一区二区三区视频免费看 | 国产精品成人在线 | 午夜私人影院久久久久 | 亚洲精品www. | av大全在线观看 | 久草在| 在线日韩中文字幕 | 久久久久久久久久久久久久av | 欧美精品中文在线免费观看 | 碰超在线97人人 | 伊人五月 | 久草在线视频看看 | 狠狠色丁香婷婷综合久久片 | 国产视频丨精品|在线观看 国产精品久久久久久久久久久久午夜 | 国产福利在线免费观看 | 成人三级网址 | 成人亚洲精品国产www | 欧美激情视频一区二区三区免费 | 免费午夜网站 | 最新不卡av | 午夜99| 国产专区在线 | 国产精品18久久久久vr手机版特色 | 久久av伊人 | 8090yy亚洲精品久久 | 国产精品午夜免费福利视频 | 中文字幕一区在线观看视频 | 911精品美国片911久久久 | 国产免费精彩视频 | 国产黄色精品在线 | 国产成人一区二区三区久久精品 | 中文字幕乱码亚洲精品一区 | 91九色国产 | 成年人在线视频观看 | 97免费在线观看视频 | 国产午夜精品免费一区二区三区视频 | 欧美大荫蒂xxx | 久久综合色一综合色88 | 精品在线视频一区二区三区 | 夜色.com | 天堂av色婷婷一区二区三区 | 一区二区三区精品在线视频 | 毛片99| 九九热视频在线 | 国产在线精品二区 | 国产中文字幕视频在线观看 | 草久在线观看视频 | 色婷婷丁香 | 91人人澡人人爽 | 国产人成精品一区二区三 | 亚洲涩涩一区 | 99热精品国产 | 天天操狠狠操网站 | 国产精品久久久久久久久久免费看 | 91禁在线观看 | 色婷婷视频网 | 91色在线观看视频 | 在线观看av网站 | 欧美日韩在线播放 | 欧美性久久久 | 久久精品美女视频 | 激情综合亚洲精品 | 亚洲永久精品在线 | 国产成人精品电影久久久 | 天天操天天射天天舔 | 成人在线免费视频观看 | 亚洲午夜精品一区二区三区电影院 | 久久视频在线 | 免费99精品国产自在在线 | 中文字幕国产亚洲 | 在线观av| 久久99精品热在线观看 | 一区二区三区免费在线 | 国产精品久免费的黄网站 | 亚洲精品国 | 亚洲天堂网站 | 久久久福利 | 激情视频在线观看网址 | 国产综合小视频 | www久久国产 | 国产 视频 高清 免费 | 久久激情视频网 | 日韩欧美高清一区二区三区 | 97人人爽人人 | 国产精品免费在线播放 | 国产中年夫妇高潮精品视频 | 成人黄在线 | 日韩国产精品久久久久久亚洲 | 国产成人一区二区三区电影 | 日韩精品一区二区三区视频播放 | 免费97视频 | 一区二区三区在线免费播放 | 五月激情片 | 国产又粗又猛又黄又爽的视频 | 福利一区二区三区四区 | 丰满少妇高潮在线观看 | 91免费看黄色 | 午夜精品成人一区二区三区 | 久久视频国产精品免费视频在线 | 色永久免费视频 | 久久人人爽人人片 | 人成在线免费视频 | 国产精品永久 | 国产精品一区专区欧美日韩 | 18岁免费看片 | 久久免费公开视频 | 日韩网页 | 久久精品免费播放 | 丝袜美腿在线 | 96国产在线 | 蜜桃视频成人在线观看 | 日韩电影中文字幕 | 日韩成片 | 国产高清在线免费观看 | 久久色在线观看 | 香蕉视频在线免费 | 国产精品18毛片一区二区 | 天天碰天天操 | 99精品福利| 69国产精品成人在线播放 | 色综久久 | 黄色电影在线免费观看 | 丁香色婷| 久久久久久久av麻豆果冻 | 国产精品亚洲综合久久 | 亚洲精品国偷拍自产在线观看蜜桃 | 午夜视频欧美 | 日韩av不卡在线播放 | 在线国产91| 精品一二三四视频 | 亚洲精品mv在线观看 | 国内精品久久久久久 | 黄色录像av | 日韩av美女 | av超碰在线| 国产福利精品一区二区 | 久操免费视频 | 成年人黄色免费网站 | 91视频在线国产 | 香蕉免费在线 | 国产黄色在线看 | 欧美在线视频一区二区三区 | 中文字幕一二三区 | 欧美一级大片在线观看 | 二区三区在线 | 午夜私人影院久久久久 | 色国产在线 | 天堂va欧美va亚洲va老司机 | 国产精品 国产精品 | 免费亚洲婷婷 | 九草视频在线 | 一区二区三区中文字幕在线观看 | 中文字幕成人在线观看 | 婷婷中文字幕综合 | 色偷偷888欧美精品久久久 | 97国产在线 | 亚洲情影院 | 久久精品99久久久久久2456 | 午夜性色 | 婷婷深爱网 | 成人免费xxx在线观看 | 免费三级网 | 欧美电影黄色 | 国产成人亚洲在线电影 | 91桃色视频 | 日韩欧美xxxx | 在线观看久久久久久 | 成年美女黄网站色大片免费看 | 8x8x在线观看视频 | 狠狠色丁香婷婷综合久小说久 | 亚洲a网| 91精品国自产在线 | 成人小视频在线观看免费 | 久久久久电影 | 91在线影院 | 免费日韩三级 | 色综合五月| 日色在线视频 | 在线免费视频a | 色综合久久久久久中文网 | 久久一区二区三区四区 | 日韩免费中文 | 亚洲精品乱码久久久久久蜜桃不爽 | 日韩免费电影一区二区三区 | av中文天堂在线 | 超碰在线色 | www99精品 | 亚洲va欧美va | 欧美日韩大片在线观看 | 欧美日韩另类在线观看 | 欧美成人亚洲 | 精品免费一区二区三区 | 日韩电影在线观看中文字幕 | 国产在线a | 国产精品一区二区在线免费观看 | 久久国产精品影片 | 欧美久久综合 | 在线观看免费成人 | 日韩欧美网址 | 天天射天天舔天天干 | 免费看网站在线 | 亚洲黄色av | 国产一区二区在线免费 | 日韩三级不卡 | 九九九免费视频 | 天天艹天天 | 日韩 在线 | 九九三级毛片 | 美女久久精品 | 中文字幕在线看视频国产中文版 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 欧美一区二区视频97 | 国产一区免费看 | 精品国产精品久久一区免费式 | 午夜av大片| 青青网视频 | 激情 婷婷| 一区二区三区av在线 | 日产av在线播放 | 中文字幕精品在线 | 天天爱综合 | 久久综合导航 | 在线观看色网站 | 国产一区二区精品久久 | 欧美日韩天堂 | 国产精品久久久久久久免费大片 | 亚洲激情视频在线观看 | 天天在线免费视频 | 欧美日韩亚洲在线观看 | 天天色天天色 | 国产成人福利在线观看 | 亚洲精品午夜久久久久久久久久久 | 亚洲视频网站在线观看 | 免费欧美精品 | 国产精品一区二区 91 | 一级黄色毛片 | 亚洲最新av | 久久影院亚洲 | 69国产精品视频 | 亚洲欧美国产日韩在线观看 | 日本色小说视频 | 免费在线观看av网站 | 亚洲成a人片综合在线 | 成人禁用看黄a在线 | 久久伊人综合 | 国产精品一区二区三区在线播放 | 国产精品99久久久久的智能播放 | 三级av在线免费观看 | 免费a视频 | 天天操天天干天天操天天干 | 2018好看的中文在线观看 | 天天干一干 | 久一在线 | 国产又粗又硬又爽视频 | 日日躁夜夜躁aaaaxxxx | 在线观看亚洲国产精品 | 9999在线视频 | 国产精品av在线免费观看 | 中文字幕在线观看视频免费 | 国产精品视频免费 | 久久久黄色av | 人人玩人人添人人 | 久久久国产精品人人片99精片欧美一 | 国产免费人成xvideos视频 | 日韩av网站在线播放 | 久草在线免费看视频 | 久久久在线免费观看 | 日本高清xxxx | 麻豆国产网站 | 久久综合成人网 | av福利免费 | 99视频在线免费 | 国产又粗又猛又黄视频 | 日韩av手机在线观看 | 日韩av不卡播放 | 免费av网址在线观看 | 中文字幕人成乱码在线观看 | 91久久精品一区二区二区 | 久久精品国产v日韩v亚洲 | 亚洲涩涩网 | 国产精品入口麻豆 | 国产一二区视频 | 久久综合婷婷综合 | 香蕉视频在线看 | 色婷婷视频 | 亚洲人xxx | 亚洲精色 | 五月天伊人网 | 国产亚洲精品中文字幕 | 成人av电影免费在线观看 | 久久久久久久久久久影院 | 麻豆视频免费在线播放 | 色婷婷国产 | 日韩中文三级 | 国产一级片直播 | 怡春院av| 欧美黑人xxxx猛性大交 | 欧美在线99 | 成年免费在线视频 | 久久久久电影网站 | 欧美精品一区二区在线播放 | 婷婷亚洲最大 | 中文字幕在线播放日韩 | 欧美性久久久久久 | 国产精品福利视频 | 97在线视频观看 | 国产一区精品在线观看 | 91精品啪在线观看国产线免费 | 丝袜美腿亚洲 | 自拍超碰在线 | 亚洲国产成人精品在线 | 午夜久久 | 久久久亚洲麻豆日韩精品一区三区 | 婷婷av网站 | 综合影视 | 99久久爱 | 叶爱av在线 | 麻豆传媒视频在线免费观看 | 国产免费高清视频 | 五月婷社区 | 成人毛片100免费观看 | 99c视频高清免费观看 | 亚洲视频播放 | www.婷婷色 | 999久久久精品视频 日韩高清www | av怡红院 | 久久系列| 欧美在线1 | 国产午夜精品免费一区二区三区视频 | 黄色av免费 | 一区二区三区韩国免费中文网站 | 81国产精品久久久久久久久久 | 日本护士撒尿xxxx18 | 全黄网站| 亚洲永久精品视频 | 久久久久亚洲国产精品 | 超碰在线94 | 一区二区三区韩国免费中文网站 | а天堂中文最新一区二区三区 | 精品五月天 | 日韩欧美国产精品 | 久久99精品国产91久久来源 | 中文字幕在线影视资源 | 久久精品美女视频网站 | 国内精品视频在线 | 超碰在线免费福利 | 免费国产亚洲视频 | 成年人黄色免费网站 | 国产成人精品一区二区三区福利 | 国产99一区视频免费 | 日韩99热| 国产精品久久久久一区二区 | 国产精品久久久久久久久久免费 | 国产亚洲欧美精品久久久久久 | 国产色小视频 | 91夫妻视频 | 久久伊人精品一区二区三区 | 久久国内精品视频 | 精品在线观看一区二区三区 | 国产小视频在线免费观看 | 国产成人精品av在线观 | 中文字幕成人一区 | 婷婷色综| 国产资源免费在线观看 | 久久伊人国产精品 | 日韩在线中文字幕 | 国产视频一区在线 | 欧美日韩伦理在线 | 99久久婷婷国产 | 精品一区中文字幕 | 黄色成年 | 伊人狠狠| 五月天综合婷婷 | 日韩中文字幕在线看 | 日日爽夜夜操 | 97人人超碰在线 | 国产午夜麻豆影院在线观看 | 色网免费观看 | 久久精品国产亚洲a | 久久精品综合视频 | 久久亚洲影院 | 69中文字幕 | 久久精品视频在线观看免费 | 国产专区免费 | 狠狠搞,com | 久久9999久久免费精品国产 | 国产一区观看 | 亚洲激情 欧美激情 | 天天艹天天干天天 | 免费观看成人 | 久久超 | 超碰97免费在线 | 国产色就色| 国产黄色网 | 久草综合视频 | 国产理论在线 | 狠狠色婷婷丁香六月 | 97在线免费 | 免费成人结看片 | 日韩av看片 | 在线看小早川怜子av | 亚洲激情小视频 | 国产精品网址在线观看 | 91片黄在线观看动漫 | 91精品国产三级a在线观看 | 中文字幕色在线视频 | 91精品国产麻豆国产自产影视 | 精品a级片 | 一区二区三区动漫 | 中文字幕在线观看视频一区二区三区 | 亚洲在线视频播放 | 高清不卡毛片 | 中文字幕之中文字幕 | 激情小说久久 | 日韩精品一区二区三区视频播放 | 91视频中文字幕 | 成人小视频免费在线观看 | 国产一区二区免费在线观看 | 国产成人精品一区二区在线 | 成人a毛片 | 美女免费黄视频网站 | 在线v| 国产男女爽爽爽免费视频 | 久久人人爽人人人人片 | 日韩欧美高清一区二区三区 | 亚洲高清视频在线播放 | 精品国产乱码久久久久久浪潮 | 超碰人在线 | 国产人在线成免费视频 | 区一区二区三区中文字幕 | 久久av在线播放 | 久久精品综合一区 | 国产精品高清在线观看 | 911精品美国片911久久久 | 综合激情伊人 | 久草影视在线 | 国产精品久久久久久久久久ktv | 久久精品99精品国产香蕉 | 国产成人精品三级 | 欧美一二三区在线播放 | 精品在线视频一区 | 97超级碰碰碰视频在线观看 | 久久久久国产精品视频 | 亚洲www天堂com | 中文字幕一区二区三区四区 | 成 人 黄 色 视频免费播放 | 91亚洲精品国产 | 国产一区在线免费观看视频 | 亚洲欧洲精品一区二区精品久久久 | 免费视频你懂得 | 精品一区二区电影 | 免费看久久 | 国产精品视频不卡 | 在线你懂| 韩国精品一区二区三区六区色诱 | 中文国产在线观看 | 99九九99九九九视频精品 | 亚洲视频在线看 | 亚洲九九九在线观看 | 99在线观看视频 | 精品在线99| 国产美女在线精品免费观看 | 日韩在线观看视频在线 | 国产精品色婷婷 | 日韩在线观看小视频 | 黄色免费在线视频 | 中文字幕av在线不卡 | 国产美女免费视频 | 亚洲va在线va天堂va偷拍 | 色香天天 | 久久成人免费电影 | 亚洲视频456| 亚洲欧美少妇 | 久久国产精品久久精品国产演员表 | 婷婷在线五月 | 日本少妇视频 | 国产精品自产拍在线观看中文 | 色噜噜在线观看视频 | 色综合久久久久久久久五月 | 久久国产精品网站 | 天天天天天天天天操 | 91在线中文 | 爱射综合 | 欧美成年黄网站色视频 | 人人爱人人爽 | 999久久久久久久久久久 | 色婷婷av一区| 粉嫩一二三区 | 成年人国产在线观看 | 国产精品ⅴa有声小说 | 欧美性做爰猛烈叫床潮 | 日韩一二三区不卡 | 天天射综合网站 | 欧美日韩国内在线 | 亚洲激情免费 | 91大神电影 | 91免费网站在线观看 | 久久免费视频这里只有精品 | av天天草| 精品国产伦一区二区三区观看说明 | 热九九精品 | 丁香六月婷婷开心 | 国产无遮挡又黄又爽在线观看 | 日韩在线视频不卡 | 国产精品久久久久久久av电影 | 精品一二三四五区 | 亚洲理论电影 | 国产精品免费久久久久久久久久中文 | 久久精品中文字幕少妇 | 亚洲一区二区视频在线播放 | 日韩有码在线观看视频 | 中文字幕视频免费观看 | 午夜精品久久久久久久99 | 亚洲电影图片小说 | 亚洲日本va午夜在线电影 | 国产一区视频在线观看免费 | 五月婷婷六月丁香 | 中文字幕色在线视频 | 91桃色在线免费观看 | 亚洲综合色播 | 天天干天天做 | 精品在线观看一区二区 | 欧美国产一区二区 | 伊人手机在线 | 精品国产乱码一区二区三区在线 | 91亚洲夫妻| 91在线免费视频观看 | 国产精品美女视频网站 | 久久久久久久久久久高潮一区二区 | 国内小视频 | 亚洲精品在线观看网站 | 江苏妇搡bbbb搡bbbb | 日韩精品欧美视频 | 久久精品视频日本 | 91.精品高清在线观看 | 欧美另类交在线观看 | 久草精品在线 | 欧美性粗大hdvideo | 人人爽影院 | 国产精品99久久久久久久久久久久 | 日韩精品一区二区三区免费视频观看 | 91伊人久久大香线蕉蜜芽人口 | 午夜精品一区二区三区视频免费看 | 欧美另类老妇 | www.夜夜操.com | 日韩最新av | 日韩精品在线视频免费观看 | 欧美日韩另类视频 | 久久久精品影视 | 四虎在线观看 | 黄色在线看网站 | 国产精品成人一区二区 | 欧美视频一区二 | 五月婷网站 | 婷婷精品国产欧美精品亚洲人人爽 | 国产成人免费在线观看 | 国产午夜精品一区二区三区四区 | 欧美性生交大片免网 | 免费看片网站91 | 国产美女视频网站 | 在线视频观看成人 | 国产精品视频区 | 在线看不卡av | 国产精品美乳一区二区免费 | 亚洲精品在线二区 | 天天操天天摸天天射 |