亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

C++享元模式實戰(zhàn):內(nèi)存優(yōu)化、狀態(tài)拆分與工廠緩存設(shè)計

C++享元模式實戰(zhàn):內(nèi)存優(yōu)化、狀態(tài)拆分與工廠緩存設(shè)計 前陣子接手一個C渲染項目粒子系統(tǒng)一開內(nèi)存蹭蹭往上飆八G的機器直接OOM。排查到最后罪魁禍首是一百萬個長得幾乎一模一樣的粒子對象每個人都揣著一份紋理句柄和著色器參數(shù)。那一刻我意識到早該上享元模式Flyweight Pattern。這玩意兒不是教科書里那種可有可無的“形式主義抽象”它是實打?qū)嵞芫葍?nèi)存和性能的工程手段尤其C這種極度在意內(nèi)存布局和對象生命周期的語言享元模式用好了收益立竿見影。這篇文章我不打算重復(fù)教科書里那些概念定義我想講的是為什么你需要它、怎么判斷哪些字段該共享、哪些必須獨立、工廠和緩存池怎么設(shè)計才穩(wěn)以及我實際踩過的坑。內(nèi)容適合已經(jīng)掌握C基礎(chǔ)語法、寫過一些中大型對象模型但還在琢磨怎么優(yōu)化多對象內(nèi)存開銷的開發(fā)者??赐昴阒辽倌茏约菏謱懸粋€線程安全、支持懶加載的享元工廠并且知道什么時候別碰這個模式。1. 什么場景下才值得動用享元模式1.1 先做一次內(nèi)存賬本很多人一聽到設(shè)計模式就想著“套上去”但享元模式不是銀彈它解決的是非常具體的痛點大量同構(gòu)對象各自持有重復(fù)的高成本數(shù)據(jù)。我通常在動手前先算一筆賬把每個對象拆成數(shù)據(jù)字段估算單對象體積再乘上預(yù)估實例數(shù)量。舉個例子客戶端渲染引擎里常見的實體類struct Entity { std::string name; // 平均64字節(jié)含堆內(nèi)存 TextureHandle tex; // 16字節(jié) ShaderParams shader; // 128字節(jié) float matrix[16]; // 64字節(jié) Vector3 position; // 12字節(jié) float scale, rotation; // 8字節(jié) };這里前三塊加起來的體積非常大但它們的值在一大群實體里往往是相同的——比如一千個金幣模型用的是同一張貼圖、同一套材質(zhì)參數(shù)。如果每個實體都復(fù)制一份貼圖句柄和材質(zhì)參數(shù)浪費就是指數(shù)級的。用sizeof算一下假設(shè)單實體256字節(jié)一百萬個實體就是256MB其中可共享的部分可能占了150MB以上。這就是享元模式出場的前提對象數(shù)量夠大、可共享數(shù)據(jù)占比夠高、成本差異夠明顯。1.2 為什么C尤其適合這一套C和Java、Python這類語言不一樣它沒有自動的“對象頭輕量化”或“字符串駐留”兜底措施所有內(nèi)存都由你顯式掌控。這意味著共享的語義必須由程序員親手實現(xiàn)但反過來也意味著你能做得非常極致配合const成員、string_view、pmr::memory_resource這些工具共享對象可以被設(shè)計成只讀、連續(xù)、零拷貝性能上限極高。我個人體會最深的一點C的“值語義”天然是享元模式的敵人但也是它的放大器。敵人在于C程序員默認會給每個對象都分配獨立的數(shù)據(jù)塊復(fù)制起來心安理得放大器在于如果你能用shared_ptrconst Flyweight這種句柄去替代對象里的原始數(shù)據(jù)字段那么所有讀寫共享數(shù)據(jù)的地方都能命中同一塊內(nèi)存緩存友好度和分配次數(shù)都大幅改善。2. 先拆狀態(tài)把共享和不共享的部分分干凈2.1 內(nèi)在狀態(tài)與外在狀態(tài)的判斷清單享元模式的一切都建立在狀態(tài)拆分上。這個拆分一旦做錯后面代碼寫得再漂亮也白搭。我的經(jīng)驗是拿到一個類先別急著寫工廠先把所有成員變量列出來逐個問三個問題這個字段描述的是“這個對象是什么”還是“這個對象現(xiàn)在在哪”如果把兩個實例的該字段互換它們還能正常工作嗎這個字段在對象生命周期里會發(fā)生變化嗎前兩個問題用于區(qū)分內(nèi)外第三個問題決定你能不能安全地共享。內(nèi)在狀態(tài)是對象的本質(zhì)屬性一旦確定就不再改變外在狀態(tài)是對象在具體場景中的上下文會頻繁變化。舉一個大家最容易理解的例子一棵樹的渲染。樹的頂點網(wǎng)格、貼圖、法線數(shù)據(jù)是“樹之所以是樹”的本質(zhì)屬于內(nèi)在狀態(tài)——你可以讓一千棵松樹共享同一份網(wǎng)格和貼圖。但每棵樹的坐標、朝向、縮放、風(fēng)吹動的彎曲程度都不一樣這些屬于外在狀態(tài)。如果把“位置”錯誤地扔進共享對象里那么所有站在那棵樹位置上的樹都會被拖過去亂成一鍋粥。2.2 可變性的鐵律內(nèi)在狀態(tài)必須是const這里有一條我踩過坑之后才徹底貫徹的鐵律所有內(nèi)在狀態(tài)設(shè)計成const成員在構(gòu)造函數(shù)里一次性初始化之后只允許讀取不允許修改。為什么這么嚴格因為共享對象被多方同時引用任何一方對內(nèi)部字段的修改都會立刻傳染給所有使用者。這種“幽靈式的全局狀態(tài)改動”極難排查比普通數(shù)據(jù)競爭還陰險——用鎖都不好使因為你連該在哪個鎖上防范都說不清。class TreeModel { public: TreeModel(Mesh mesh, Texture tex) : mesh_(std::move(mesh)), tex_(std::move(tex)) {} const Mesh mesh() const { return mesh_; } const Texture texture() const { return tex_; } private: const Mesh mesh_; // 注意 const const Texture tex_; // 注意 const };實戰(zhàn)中我還會把可變的狀態(tài)從共享對象里徹底剔除只留下純粹的“數(shù)據(jù)資產(chǎn)”。如果你發(fā)現(xiàn)某個字段在設(shè)計階段就很想給它加 setter那大概率它屬于外在狀態(tài)把setter放在調(diào)用者那邊去。2.3 生活化類比同一個模板不同的人你可以把享元對象理解成“印章”印章本身的形狀、刻字、材質(zhì)是共享的不管是誰拿它在哪個位置蓋印出來的內(nèi)容本質(zhì)都來自同一個物理印章。但蓋出來的印跡落在哪張紙上、什么顏色、按了多少下每張紙都不一樣。這個“印章”就是內(nèi)在狀態(tài)“印跡的位置”就是外在狀態(tài)。想清楚這個類比你就會發(fā)現(xiàn)生活中大量可以套用享元模式的場景樂高積木的模具、代碼里公共的配置項、渲染引擎里的字體字形本質(zhì)都是同一件事。3. 從工廠到緩存池共享實例的管理策略3.1 為什么不能直接new一個享元對象確定了哪些數(shù)據(jù)要共享接下來就要回答這些共享對象從哪來、怎么保證同一個數(shù)據(jù)源只存在一份實例最直接的答案是用享元工廠統(tǒng)一管理。讓外部代碼直接new TreeModel(...)是最危險的設(shè)計因為沒人能保證兩個調(diào)用者不會各自創(chuàng)建一份相同的網(wǎng)格數(shù)據(jù)一來內(nèi)存沒省下來二來后續(xù)的緩存、引用計數(shù)、生命周期管理全都無從談起。所以我會定義一個FlyweightFactory它內(nèi)部的職責(zé)很簡單接收“描述性鍵值”比如文件路徑、特徵值組合在緩存里查找是否已有相同鍵的共享對象命中則返回已有對象未命中則創(chuàng)建并存入緩存3.2 緩存用shared_ptr還是weak_ptr這是個策略問題緩存的數(shù)據(jù)結(jié)構(gòu)我首推std::unordered_map鍵是能唯一描述內(nèi)在狀態(tài)的Key。至于值類型shared_ptr和weak_ptr各有各的適用場景。如果你用shared_ptr作為緩存值那么緩存里永遠存著所有創(chuàng)建過的共享對象對象生命周期和進程一樣長。這在資源數(shù)量有限、訪問頻繁的場景下沒問題——紋理管理器就該這樣貼圖一旦加載留在內(nèi)存里隨時等復(fù)用。壞處是如果你的Key維度很多比如粒子的顏色組合有幾千種那么這些對象全會常駐內(nèi)存反而失控。我后來的處理思路是分場景對待長生命周期、強復(fù)用紋理、字體、網(wǎng)格緩存直接持有shared_ptr用引用計數(shù)管理“還有人用”沒有換入換出策略。短生命周期、創(chuàng)建頻次低零部件、臨時特效配置緩存持有weak_ptr業(yè)務(wù)方持有shared_ptr。當(dāng)沒有外部使用者時緩存里的weak_ptr自動失效下次需要時再重建。weak_ptr版本的關(guān)鍵點在于查找時要判斷是否expired并且要能處理“緩存中有對象但已失效”的中間態(tài)否則會出現(xiàn)明明找不到可用對象卻直接返回空指針的情況。下面是我在項目里用過的完整工廠骨架包含了共享鎖 二次檢查class TreeModelFactory { public: std::shared_ptrconst TreeModel get(const std::string assetPath) { { std::shared_lock lock(mutex_); auto it cache_.find(assetPath); if (it ! cache_.end()) { if (auto obj it-second.lock()) { return obj; // 緩存命中且還活著 } } } std::unique_lock lock(mutex_); // 二次檢查等待鎖期間可能已被其他線程寫入 auto it cache_.find(assetPath); if (it ! cache_.end()) { if (auto obj it-second.lock()) { return obj; } } auto model std::make_sharedconst TreeModel( loadMesh(assetPath), loadTexture(assetPath)); cache_[assetPath] model; return model; } private: mutable std::shared_mutex mutex_; std::unordered_mapstd::string, std::weak_ptrconst TreeModel cache_; };這里有兩個細節(jié)值得說。第一我用std::shared_mutex而不是簡單的std::mutex因為對緩存的讀操作遠多于寫操作共享鎖能保護并發(fā)的讀第二注意那個“二次檢查”分支線程A創(chuàng)建對象期間線程B可能已經(jīng)持鎖搶建了相同對象如果不檢查就再次make_shared就會產(chǎn)生兩個同鍵對象享元的“唯一性”就被破壞了。3.3 讓構(gòu)造函數(shù)私有化擋住不守規(guī)矩的調(diào)用者一個非常實用的小技巧讓享元類的構(gòu)造函數(shù)設(shè)為私有或僅工廠可見確保只有工廠能創(chuàng)建對象。C里我會用friend class TreeModelFactory或者提供一個私有的標記結(jié)構(gòu)體構(gòu)造標簽來做到這一點。這是“語法層面強制約定”的做法雖然麻煩一點但能預(yù)防后面接手代碼的同事直接make_sharedTreeModel繞過緩存。除了工廠函數(shù)本身我還會把加載IO的部分隔離出來比如上例的loadMesh和loadTexture。這樣做的理由是一次文件IO可能耗時幾十毫秒如果多個線程同時請求同一個資源這個開銷會被放大很多倍而把IO放在鎖外做可以大幅提升并發(fā)能力——雖然會有重復(fù)加載的窗口但比起持鎖做磁盤IO這點浪費完全值得。4. 實戰(zhàn)案例三類最適合C的享元落地場景4.1 資源管理器紋理與網(wǎng)格的共享最經(jīng)典、最好理解的一類應(yīng)用就是圖形和游戲項目里的資源管理器。紋理、網(wǎng)格、材質(zhì)、著色器這些都是高成本、高復(fù)用、低變化的資產(chǎn)天生就是享元的獵物。我在一個2D橫版游戲項目里做過統(tǒng)計游戲里有100多種怪獸配置每種怪獸模型唯一但所有怪獸共享一張精靈圖集sprite atlas共享比例大概是30個貼圖文件對應(yīng)5000個活動對象。改造前的寫法是每個對象加載一份貼圖數(shù)據(jù)5000個對象會有數(shù)千次IO和大量內(nèi)存復(fù)制老機器直接卡死。改造后實體對象只持有一個“紋理句柄編號”真正的貼圖數(shù)據(jù)只保留30份。內(nèi)存節(jié)省非常直觀貼圖部分從數(shù)千份變成30份實體對象體積從原來的一兩百字節(jié)降到三四十字節(jié)。前端渲染性能的提升更是沒法只看內(nèi)存數(shù)字——共享貼圖意味著同一個批次里的CPU緩存命中率提高渲染時CPU密集型的那部分流程快了很多。4.2 文本渲染字形數(shù)據(jù)的駐留復(fù)用如果你做過文本渲染一定知道字形glyph數(shù)據(jù)有多貴。每個漢字字形輪廓可能有幾百個頂點加上hinting信息和紋理坐標單個字形很容易超過2KB。一個界面里有幾百個漢字如果每個文本對象都復(fù)制一份它的字形數(shù)據(jù)那這個界面的內(nèi)存開銷會非??鋸垺S孟碓J降脑捨覀儠选白址幋a 字體 字號”組合成一個Key緩存對應(yīng)的字形輪廓數(shù)據(jù)。每個文本塊對象只保存一串“字符索引”到字形對象的引用而不是復(fù)制數(shù)據(jù)本身。對用戶來說輸入再多的“你好世界”內(nèi)存里也永遠只有一份“你”的字形。如果再疊加字符串駐留技巧把相同的文本內(nèi)容本身也緩存起來還能省掉一大塊字符串重復(fù)存儲。字體系統(tǒng)比較特殊的一點是字形對象本身不需要讓用戶感知到生命周期——字體文件加載后基本常駐內(nèi)存所以這種場景更適合用shared_ptr做強緩存不用擔(dān)心內(nèi)存泄漏之類的問題因為字體資源本身就有上限。4.3 連接配置與對象池的組合處理既想共享又想復(fù)用的難題第三個場景我給出的方案比較進階因為它把享元模式和完全不同的池化技術(shù)結(jié)合起來了。假設(shè)你在寫一個數(shù)據(jù)庫或消息隊列客戶端大量線程需要頻繁建立連接。這里的難點在于連接對象本身絕不是“不可變”的——它有讀緩沖區(qū)的狀態(tài)、有當(dāng)前的協(xié)議狀態(tài)、有網(wǎng)絡(luò)錯誤標志這些被池化復(fù)用時必須被清空和重置。所以連接對象不適合直接做成享元。但連接參數(shù)不一樣IP、端口、用戶名、數(shù)據(jù)庫名、超時時間、SSL配置這些是“描述性”的完全不變。我的做法是把連接參數(shù)做成享元對象常駐內(nèi)存然后用一個對象池保存實際的連接句柄。每次新請求到來時從池子里取出一個空閑連接順手從享元參數(shù)對象里讀取配置初始化它。這樣既避開了連接對象的可變狀態(tài)問題又兼得享元對高成本參數(shù)的復(fù)用。用一句大白話總結(jié)享元管“配方”對象池管“器皿”。場景共享鍵Key共享的內(nèi)容典型收益紋理管理文件路徑解碼參數(shù)解碼后的像素數(shù)據(jù)、GPU句柄內(nèi)存引用數(shù)量從“對象數(shù)”降到“資源數(shù)”字形駐留字體字符字號輪廓頂點、坐標、紋理UV文檔渲染內(nèi)存降低一個數(shù)量級連接配置IP端口用戶名參數(shù)初始化連接所需的全部配置每個連接省掉重復(fù)配置構(gòu)造開銷消息/日志過濾等級正則規(guī)則編譯后的正則表達式避免每次使用時重復(fù)編譯正則4.4 一個容易忽略的收益對象構(gòu)造開銷的節(jié)省很多文章講享元模式都在強調(diào)內(nèi)存但實際上對象的構(gòu)造開銷和緩存性能同樣重要。創(chuàng)建對象不只是分配內(nèi)存還包括調(diào)構(gòu)造函數(shù)、初始化虛表、可能觸發(fā)IO或網(wǎng)絡(luò)請求。如果工廠緩存命中的比例高這些開銷會全部省掉。尤其是在高頻場景——每一幀創(chuàng)建和銷毀大量短生命周期粒子時享元 對象池組合能把“創(chuàng)建”簡化為一次哈希查找這一點在性能分析里往往是實打?qū)嵤∠聛淼膸讉€百分點。5. 高頻坑與排查實錄5.1 共享狀態(tài)被意外修改一個經(jīng)典事故我印象最深的一次線上事故發(fā)生在一次重構(gòu)后某個渲染對象的color字段本來是外在狀態(tài)結(jié)果重構(gòu)時被擺進了享元對象的內(nèi)部數(shù)據(jù)區(qū)。當(dāng)時代碼里有個調(diào)色板功能剛開始只有少數(shù)用戶反映“改了A角色的顏色B角色也跟著變了”后來反饋越來越多才定位到所有角色其實共享了同一個著色器的內(nèi)部可變參數(shù)。這個問題的根源就是內(nèi)部狀態(tài)不是const。從那以后我在設(shè)計享元類時強制把內(nèi)部分字段都標const并且在 code review 里專門強調(diào)凡是需要 setter 的成員一律移到外部狀態(tài)中。假如你的編譯環(huán)境里 C 標準版本較老暫時沒法用簡潔的const成員初始化套件也可以考慮把可變狀態(tài)用指針或句柄間接暴露并在訪問時都經(jīng)過嚴格的互斥保護。5.2 緩存泄漏shared_ptr無罪有罪的是引用圖第二種高頻坑是資源管理器運行一段時間后內(nèi)存只漲不降。排查下來發(fā)現(xiàn)緩存里存了shared_ptr而業(yè)務(wù)方拿到對象后又往某個全局容器里塞了一份強引用兩頭的強引用交纏在一起形成引用環(huán)。此時即便業(yè)務(wù)方已經(jīng)不再使用緩存和全局容器互相“續(xù)命”對象永遠釋放不了。解法其實不難業(yè)務(wù)方的容器盡量使用弱引用語義或者讓緩存直接使用weak_ptr配合常駐所有者管理生命周期。復(fù)雜項目里我建議直接用weak_ptr做緩存值因為一旦內(nèi)存異常上漲至少能通過弱引用語義迅速確認問題不在緩存?zhèn)取?.3 并發(fā)重復(fù)創(chuàng)建雙重檢查鎖定沒有想象中簡單我見過不少代碼把雙重檢查鎖定寫錯了最常見的問題是在兩個鎖之間沒有重新查找緩存就重復(fù)make_shared。這會導(dǎo)致兩個線程各創(chuàng)建一個共享對象實例而這兩個實例雖然“鍵”相同內(nèi)存卻翻倍。你嘗不到享元模式的紅利還會在緩存命中率高于預(yù)期時栽跟頭。正確姿勢我在前面代碼里已經(jīng)演示了關(guān)鍵在于讀路徑加共享鎖寫路徑加獨占鎖加獨占鎖之后必須意識到可能有其他線程在等待鎖期間已經(jīng)完成寫入因此一定要二次查找。另外如果項目是C11之前的舊標準還沒有shared_mutex可以用經(jīng)典的讀寫鎖實現(xiàn)或加一個std::atomic_flag做快速路徑的標記檢查。5.4 哈希表的無謂分配小心鍵類型帶來的附加開銷第三個不太起眼但實測很痛的問題是鍵的設(shè)計。如果你的鍵是std::string但業(yè)務(wù)方常常拿string_view或const char*來查找那么在find()時會隱式構(gòu)造臨時std::string這就引入了一次堆分配。C20里可以用透明哈希解決struct StringHash { using is_transparent void; // 啟用透明查找 size_t operator()(std::string_view key) const noexcept { return std::hashstd::string_view{}(key); } };使用std::unordered_mapstd::string, value, StringHash, std::equal_to之后find可以直接接收const char*或string_view避免創(chuàng)建臨時字符串。這個優(yōu)化在每秒執(zhí)行上萬次查找的服務(wù)器代碼里效果極其明顯。5.5 過度共享明明不能共享的東西強行共享最后一個我見得很多的坑是新人為了用模式而用模式。有些對象看似同構(gòu)但它的“內(nèi)部狀態(tài)”其實帶有上下文依賴比如依賴調(diào)用者的渲染管線狀態(tài)或者依賴攝像機的觀察角。強行把這種對象塞進共享池你會發(fā)現(xiàn)所有實例的顯示結(jié)果互相干擾圖形亂得像GIF故障。判斷標準我在第2節(jié)已經(jīng)給了這里補充一個經(jīng)驗法則如果共享前后你能找到哪怕一個場景讓兩個實例的行為產(chǎn)生預(yù)期外的差異那它就不適合共享。寧可錯失一點優(yōu)化也不要做有害的抽象。5.6 問題速查表癥狀根因排查方向內(nèi)存不斷上漲緩存強引用 業(yè)務(wù)方強引用成環(huán)檢查全局容器是否持強引用改為弱引用多個實例數(shù)據(jù)意外重復(fù)鎖內(nèi)未二次檢查加獨占鎖后重新find一個對象改了全部跟著變內(nèi)部狀態(tài)非const拆外內(nèi)外狀態(tài)內(nèi)部字段全部const查找耗時異常高鍵隱式轉(zhuǎn)換觸發(fā)臨時string啟用透明哈希或用自封裝鍵行為結(jié)果相互污染過度共享了帶上下文的狀態(tài)回歸狀態(tài)劃分把上下文字段移到外部6. 邊界與組合享元模式和對象池、單例怎么配合6.1 一次講清三個模式的邊界很多人搞混享元模式、對象池和單例我在這邊說一個很糙但很有效的區(qū)分方式。單例模式解決的是“全局唯一入口”的問題強調(diào)的是身份的唯一性比如日志器、配置中心。享元模式解決的是“重復(fù)內(nèi)容去重”的問題強調(diào)的是內(nèi)容的可復(fù)用性比如紋理、字形。對象池解決的是“高頻創(chuàng)建銷毀”的問題強調(diào)的是生命周期復(fù)用比如網(wǎng)絡(luò)連接、線程池。它們不僅不沖突還經(jīng)常需要配合使用。享元對象本身如果創(chuàng)建成本很高那它里面再套一層對象池也是常見設(shè)計。比如一個粒子系統(tǒng)里的共享材質(zhì)對象可以一次性Pool一整批然后讓多個粒子實例通過享元句柄引用同一批材質(zhì)。6.2 組合起來的實戰(zhàn)架構(gòu)移動端小游戲的資源系統(tǒng)我這里給出一套實戰(zhàn)組合設(shè)計。移動端小游戲?qū)?nèi)存極其敏感資源系統(tǒng)一定得復(fù)用再復(fù)用。底層用對象池管理Mesh和Texture的原始數(shù)據(jù)塊。中層用享元工廠管理“邏輯資源”鍵是文件路徑 參數(shù)值是一個輕量句柄這個句柄內(nèi)部指向?qū)ο蟪乩锏臄?shù)據(jù)塊。每個游戲?qū)嶓w持有的是若干個“句柄”而不是直接把數(shù)據(jù)copy進來。這套架構(gòu)的好處是業(yè)務(wù)代碼完全感知不到數(shù)據(jù)和配置的去重過程。渲染引擎拿到句柄后能看到共享數(shù)據(jù)只加載一次而對象的生命周期由對象池統(tǒng)一回收。實際上許多商業(yè)引擎的材質(zhì)系統(tǒng)、UI系統(tǒng)和特效系統(tǒng)都是這么設(shè)計的只不過底層細節(jié)各不相同。6.3 配合現(xiàn)代C的極致玩法內(nèi)存池與緩存友好性如果你追求極致性能可以把享元對象放到一個連續(xù)的內(nèi)存塊里然后每個業(yè)務(wù)對象只保存一個索引而不是指針。這個打法比shared_ptr的緩存更省內(nèi)存因為指針本身通常是8字節(jié)換成4字節(jié)的uint32_t索引能省一半引用開銷而且數(shù)組數(shù)據(jù)天然就是CPU緩存友好的連續(xù)內(nèi)存——遍歷100萬個粒子時共享的那份數(shù)據(jù)大概率常駐L2緩存。配合pmr::monotonic_buffer_resource或者自己寫個簡單的arena分配器可以為共享對象分配一塊大的連續(xù)內(nèi)存所有make_shared都從這塊內(nèi)存取。這樣對象的創(chuàng)建幾乎零開銷內(nèi)存回收也可以一次性整塊釋放省去逐對象析構(gòu)的調(diào)零開銷。這已經(jīng)屬于C里比較進階的內(nèi)存技巧但和享元模式組合起來效果非常驚人。6.4 什么時候堅決別用享元模式最后必須潑一盆冷水。如果對象的數(shù)量本來就不大幾千個以內(nèi)或者可共享數(shù)據(jù)占比很低或者對象的“內(nèi)在狀態(tài)”幾乎每個實例都不同那么引入工廠和哈希表反而會帶來額外的查找開銷和代碼復(fù)雜度。我等價換算一下一次哈希查找大概耗幾十納秒而復(fù)制一份小體積的std::string可能只要幾個納秒。別為了省那點內(nèi)存賠上運行時性能和維護成本。我個人在實際項目里的判斷標準非常簡單先估算對象數(shù)量的上限和可共享數(shù)據(jù)的大小如果節(jié)省出來的內(nèi)存超過總工程內(nèi)存的20%才值得引入享元模式否則普通的多實例模型反而更簡單可靠。這個閾值不是絕對的但能擋掉至少一半為用而用的過度設(shè)計。再分享一個擴展方向如果你正在寫一個編譯器或解析器可以嘗試把享元和字符串駐留結(jié)合這樣能讓AST中的類型名、變量名共用同一份存儲配合自定義arena分配器整個編譯器的內(nèi)存占用能降低30%以上。我的建議是別把這個模式當(dāng)成面試題答案背下來而是把它當(dāng)成一把“內(nèi)存放大鏡”拿它去照你項目里那些看起來體積巨大、重復(fù)度又高的對象照出來一個就復(fù)用一層的價值。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩熟女乱伦中出| 欧美福利视频啊啊啊啊| 自拍欧美| 美女刺激久久国产欧美| 人妻中文字幕日韩电影| 天天激情综合站| 91欧美综合| 日韩亚洲97| 99亚洲人人| 操一区| 69少妇一区二区| 好吊色综合| 国产日韩中文字幕欧美| 性生活性生大爱77AV国产| 欧美一区二区在线资源| 俺去久久| 可以免费观看的av| 天堂8在线新版官网| 久久性爱网站| 久久精品国产亚洲AV片多多| 999亚洲国产视频| 欧美日韩黄片精品在线| 亚洲国产av中文字幕久久| 欧美999| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 精品欧美乱码久| 精久久久| 色97欧美| 0755午夜福利视频| 秋霞Av理论一级在线| 天堂亚洲精品久久老牛| 人妻素股| 1204人成网站色www| 久久久久久久久久黄色网| 尤物av网站| 亚洲五区熟女| 国产成人主播| 九一性生活免费视频| 国产久久日韩网站导航| 亚洲激情色片| 99精品在线| 天堂精品一区| 国产精品嫩草影院午夜两性| 精品人妻中文字幕4399| 干婷婷综合网| 精品人妻1237| 成人一区二区三区四区| 日韩黄色小说| 精品亚洲| 噜噜噜在线视频| 家庭乱伦国产| 国产精品成人无码av| 亚洲福利中文字幕在线| 91N欧美| 高清不卡视频| 精品九九九九九九九九九| 亚熟hd视频在线| 国产精品69久久久久孕妇欧美 | 啊啊啊啊啊啊在线观看| 日本熟女不卡视频| HEYZO高无码国产精品227| 日本欧美亚洲高清在线看| 国产精品久久久久无码AV会牛| 国产亚洲日本精品在线| 久偷拍| 亚州色图欧美| 欧美天天综合在线| 亚洲日韩美女中文字幕乱| 人妻乱仑一区二区三区| av操操不卡| 九九av| 91色亚洲| 亚洲综合一区二区| 97视频7| 欧美色亚洲色| 在线观看无码三级少妇| 啊啊啊操一区| 天天弄欧美| 神马九九九| 国产色产精品在线观看| 日本中文字幕在线视频| 国产精品69久久久久孕妇欧美| 女上位精品在线| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 夜夜 中文视频rt| 91白虎| 亚洲精品国产无码高清| 97天天爽| 久久久久久人| 日本操大逼| 超碰免费在线| 欧洲人妻视频| 亚洲成人综合在线| 97色色婷婷| 国产精品97视频| 这里只有精品97| 亚州操操穴网| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 97频视在线| 91欧美www| 日本在线伊人啪啪| 久草免费在线一区二区| 精品亚洲俞拍视频一区| 精品亚洲国产成人精品| www.婷婷六月天| 无遮挡猛进视频免费无限观看| 国产精品久久久久9999小说| 欧美午夜视频| 伊人加勒比| 日本成人免费一区二区三区| 国产精品电影推荐| 操淫穴亚洲五月丁香| 日韩久久超碰色| 精品久一区免费| 黄色视频60分钟| 试看60秒| 密桃99999| 舔人妻中文免费视频| 人人爱操| 欧美精品91| 美女黄页| 强奸乱伦αv片| 97在线欧| 家庭乱伦网站国产| 999在线电影香蕉| 97久操| 亚欧性爱无码| 色欲人妻一区二区在线| 国产熟女精品区| 操我无码| 蜜桃AV天堂| 日韩激情中文字幕有码| 亚洲中文sv| 综合网色| 久久大黄片| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 夜夜操夜夜高潮夜夜爽国产精品区| 人人贴人人摸| 99精品无码| 午夜丁香| 肉动漫无遮挡h在线观看| 色网综合网| 午夜乱轮操逼视频免费看| 欧美少妇性乱| 午夜天堂精品久久久久91| 色约约一区=区三区| 激情五月天网站| 亚洲国产精品成人久久蜜臀| 青青操少妇| 国产高清成人mv在线观看| 国内外毛片在线观看| 五月天婷婷综合| 91色欧美| 75大香蕉| 国产精品制服丝袜清纯唯美 | 变态乱伦伪娘灌肠一区二区| 亚91网| 欧美亚洲日韩人妻在线观看| 国产女人高潮嗷嗷嗷叫小说| 极品色综合| 亚洲色图加勒比| 久草国产在线视频| 欧美天天弄| 日韩资源网| 精品无码一区二区| 99精品在线观看| 国产一级137片内射麻豆| 99久久久| 国产精品3| 狠狠狠一区二区三区| 色操逼网| 国产精品白领在线观看| 玖玖久久久| 亚洲天堂人人妻| 欧美拳交在线播放| 强奸乱亚洲| 免费无码婬片AAAA片直播色戒| 久久久久久久9最新免费视频观看| 日本精品一区三区| 99操逼| 婷婷中文字幕| 夜夜嗨视频| 九九九九精品一区| 久久极品一区二区| 国产精品久久久久久久黄无码 | 亚洲欧美国产其他二区| 国产色精品午夜大片| 97欧美视频| 粉嫩av一区二区三区天美传媒| 91欧美美女日韩国产婷婷| 婷婷五月天成人| 把腿张开老子CAO烂你| 一二三区操逼国产91| 91蜜桃传媒精品久久久一区二区| 日本黄色裸日本黄色裸体| 五月天丁香欧洲日韩| 久久香蕉国产线看观看猫咪av| 超碰97人妻免费在线| 亚洲天天在线| 丝袜美腿亚洲| www.yeyecao| 69视频入口| www.亚洲黄色| 国产家庭乱伦表演| 国产久久av| 日韩国产欧美伦理在线| 丰满人妻无码一区二区三区| 超碰精品国产无码| 日韩黄色av中文字幕| 五月天我淫我色av| 大香蕉久| 欧美亚洲中文字幕| 大香蕉520| 性色av婷婷久久一区二区点复制| 不卡免费av在线播放| 囯产操逼片| 国产1769在线| 超碰国产精品无码| 2024黄色视频| 亚洲日本激情| 福利视频一区二区微拍| 国产AV高清AV无码| 国产一区二区三区中文字幕| 精品大久久| 欧美大香蕉97| 久久久久96| 91国产丝袜白虎| 亚洲 在线| av网站在线看| 密乳AV免费观看| 日韩性爱电影一区 | 日韩综合97P| 午夜操操操| 综合网亚洲在线| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 日韩精品午夜操呦呦不卡影院| 九九九精品美女| 国产福利精品98视频| 色婷婷六月丁香七月婷婷| 青娱乐欧美激情一区二区| 欧美亚洲尤物久久| 亚洲欧美精品91| 色九月综合| 91碰碰| 久久无码电影| 熟妇亚洲一区二区三区| 91 国产丝袜在线播放-百度| 国产剧情在线| 久久久久国产无av| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 亚洲97成人在线观看| 欧美经典一区二区三区| 97久精品| 91精品丝袜久久久久久| 国产精品无码av在线 | 伊人欧美大香蕉视频| 91视频伊人| 国产精品自产拍在线观看社区| 日本有码久久| 日韩 女同 综合| 三上悠亚在线毛片91| 成人性爱av.com| 色999人与兽| 色网1| 伊人网青青| 久久丁香五月天| 超碰在线97国产| 粉嫩av平台| 日本九九九九| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 五月丁香黄色网| 日本熟妇人妻中出视频| 嗯嗯,好大,好爽,好骚| 97在线精品| 国产精品岛国片在线观看| 美女人妻色网站| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 91成人久久| 九一综合精品视品av| 九九九只有精品| 久久国产性爱| 中文字幕久久精视频久久大全| 一区二区亚州激情久婷婷欧美| 欧美96交| 91足交| 日韩一999精品| 日韩久射综合| 色色操| 伊人嫩草| 天天日天天爽| 欧洲亚洲人妻无码高清久久三区四区| 国产又操| 超碰欧美COM| 免费的黄片wwwwww| 亚洲操操操无码| 五月综合激情网| 人妻激情视频| 欧美男人一区| 国产女大学生AV| 日韩亚洲美州欧洲综三区一品在线| 国产精品97超碰| 强歼乱伦资源网| 亚欧操逼片在线观看 | 欧州色图区| 人人妻人人玩人人澡人人爽| 欧美日韩国产电影| 一级片在线观看高清无码| 欧美永久激情一区二区| 久久天天艹| 粉嫩AV输入| 亚一综合久久久久久久久久| 好爽要喷了| 亚洲中文字幕网| 啊啊啊啊嗯嗯在线久久久| 五月丁香成人网| 亚洲色电影在线| 一二三四日本视频高清| www.久久制服糖| 日本精品一区二区三| 999岛国大片| 清纯唯美激情| 双插在线| 性爱av网站| 亚洲美女色图| 花野真衣| 91成人无码| 久久e6只有精品| 伊人丁香五月婷婷| 亚洲天天天| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 1二区9| 亚洲欧美国产精品久久久久久久| 在线观看综合精品亚洲| 亚洲国产成人精品久久久国产成人一区二区 | 久久久日本电影| 麻豆久久久久久久久丝袜| 国产精品人妻熟女aⅴ| 久久久久幕乱码| 91色综| 嗯嗯啊啊的视频| 怡春院久久| 自拍偷拍草一草| 日日操夜夜操天天操免费观看麻豆| 偷拍精品一区二区三区| 欧美亚洲小说| 少妇99| 操逼www.| 1区2区3区视频| 天天草AV| 丰满精品人妻少妇久久字幕| 99久久久久| 午夜.DJ高清在线观看免费7| 99re黄| 性性久久| 久久欧洲| 久久婷婷一区二| 日韩欧美中文日韩欧美色| 丁香九月婷婷| 蜜臀久久久99久久久久| 91国产丝袜美女| 天操天操夜操夜月操月年年操| 日韩欧美俄罗斯A片| 夜夜草我| av影片在线观看不卡| 日本不卡免费二区| 2020中文字幕在线| 天天内射| 九九九九精品一区| 日韩不卡网操逼中文字幕日韩| 热天堂一区二区| 天天弄天天操| 狠狠爱综合网| 激情五月婷婷| 九九热在线视频| 午夜大香蕉| 一区二区三区欧美激情| 免费操逼视频下载| 国产 三级自拍| 一个人免费HD91视频| 一区二区三区视频国产免费| 激情抓乳插进去啪啪啪日韩| 无码直播久久久| 久久精品国产亚洲AV清纯| 天天综合官网| 欧美第二页| 亚洲人妻在线精品| 熟妇的味道HD中文字幕| 插日本熟女视频| 欧美熟女操屄| 九九这里只有精品| 97色插| 江都AV在线| 婷婷激情一区二区三区俺也去| 宅男午夜在线视频| 亚洲综合图色在线| 伊人在线大香蕉视频久久| 日韩欧美中文字亚洲慕| 人爽不卡视频| 美国日韩黄片| 乱伦av麻豆| 天天干人妇| 人妻少妇色综合| 青青草视频这里只有精品| 日本有码影片下载| 伊人一区二区三区| 女人18精品一区二区三区| 情色图区| 欧美性爱精品七区| 国产无马视频| 久久婷婷五月| 国产精品一区二区黄片| www久久国产精品| 国产在线视频二区| 九九性视频| 啊啊啊啊啊操我视频| 亚洲日产专区婷婷| 美女91在线| 日本一区二区三区免费观看| 在线观看AV片| 偷拍欧美激情| 呻吟 欧美 日本 中出| 91性网| 成人一区二区三区四区| 亚洲中文字幕av| 加勒比在线视频| 欧美国产有色电影| 91另类| 乱伦AVxx| 91色图片| 欧美的精品的视频| 综合五月婷婷亚洲一区| 欧美日韩性感| 蜜臀在线看片| 在线a v| 乱人伦 国语对白:视频直接看| 免费成人在线熟妇网| 97超碰超| 亚洲精品乱码久久久久久蜜桃麻豆 | 亚洲无码一区二区三区三州| 超碰97玖玖爱| 思思热国产高清| 全球成人中文在线| 欧美97在线观看| 麻豆亚洲AV成人无码久久精品| 又大又长又粗又爽又黄| 99.色网| 亚洲激情久久久伊人综合| 天天摸夜夜添无码小视频| 九九热九九热| 免费视频一二三区| 久99热| 夜夜 中文视频rt| 男女做爰猛烈动高潮A片免费应用| 婷婷亚洲天堂| 精品无码一区二区三区| 五码视频在线观看| 综合激情97 | 日本成人电影资源网| 性色高清在线| 粉嫩av在线| 91黑丝露脚| 亚洲超碰在线| 小视频玖玖| 久99久视频| 人妻美腿丝袜日韩| 精品一区二区综合熟妇| 激情小说亚洲视频| 日本欧美亚洲高清在线看| 熟女网站最新| 中文精品一区二去| 九九热五区| 啊啊啊男女| 国产成人自拍视频在线| 97精品一区二区视频在线观看| 日韩三级天堂在线观看| 青操影院| 久久艹逼视频| 日本不卡一二区| 中文字幕 码 自拍 视频 区| 啊啊啊啊啊啊在线观看| 99色婷婷中文字幕乱色| 色综合一区二区三巨| 国产第11页| α√在线| 欧美的精品的视频| 干B视频伊人网| 青青青国产手线观看视频2| 久日91在线| 国产亲戚伦亲在线| 九九草| 日产国产精品中文久久婷婷| 无码 黑人一区二区三区| 中亚黄色三级大片| 九九色综合| 精品人妻中文字幕高清| 97在线观看免费视频l| 在线人人人人人人精品超| 后入式福利| 五月天色图影视| 久久久精品91八戒| 欧美色老汉| 亚洲 暴爽 AV人人爽日日碰| 免费?级毛片无码?∨蜜芽试看| 91美女国产在线| 欧美1727免费观看视频| 亚洲在线网站| 操逼短片| 欧美日韩情色一区二区| 国产精品无码av| 97chaopengongkai| 日本精品久久久久久久| 国产11页| 在线可观看的黄色网址| 污色区网站| 成年人免费观看网站| 国产亚洲 中文欧美久久| 性色av蜜臀av色欲aV| 狠狠爱夜夜| 久久综合久色欧美综合狠狠| 99国内精品| 亚洲熟女中文字幕在线| 超碰精品国产无码| 老鸭窝成人免费毛片视频| 欧美夜色| 国产美脚女优尤物在线观看| 婷婷五月丁香五月| 91精片| 久久精品国产精品亚洲艾通辽熟妇 | 唯美清纯 妖精视频| 精品久久久不卡一区二区| 欧美1727免费观看视频| 99久久久无码国产精品性男| 乱伦色图网址是多少| 五月天亚洲色图| 天天操熟妇| 日韩 成人 有码| 精品国产乱码久久久久久久久1| 丝袜美腿制服人妻二区中文字幕| 777琪琪午夜免费A片| 1769成人国产精品视频| 日韩精品-原创伙伴| 蜜桃午夜视频一区二区 | 欧美久久人体| 亚洲97网站| 超碰夫妻97| 久久仑合| 天天综合网1| 欧美日韩免费专区在线| 色欲久久综合| 久艹99| 亚洲91网站| 成人五月天色网| 亚州成人A√| 91丝袜美女| 9久久9综合| 99啪| 亚洲少妇诱惑| 成人女人国产| 超碰99热中文字幕| 97自拍一区| 91高跟美女在线播放| 欧美日韩国产电影| 老司机午夜福利视频一区二区| 美女AV一区二区| 青青草白白色| 97超碰69| 性爱视频无打码在线观看| 少妇熟女1区2区3区| 97人人色| 天操天操夜操夜月操月年年操| 97精品视频在线| 国产精品熟女九色九色蜜臀| 欧美综合娱乐久久| 久久鲁干| 日韩97超碰中文字幕| 久久久艹艹艹| 久久精品一区| 黄色一区三区| 欧美激情 亚洲色图| 91制服丝袜中文字幕| 老司机福利青青草| 天天懆天天日| 亚欧国产无码精品在线| 亚洲一区深夜| 中文字幕人妻色偷偷久久皮 | 欧美日韩中国x| 天天躁日日躁狠狠狠躁| 国产91影院| 日韩无码黄色片| 91美女中出| 吉田爱美AV在线| rivers-china.com| 人妻精品免费一二三区| 欧洲一级性爱视频在线观看| 婷婷五月天激情小说| 欧美日韩理论一区| 欧美同性恋 的搜索结果 - 91n| 91超碰在线| 在线综合色| 神马精品视频| 亚洲伊人青青草| 夫妻日逼| 岛国艾薇凹凸视频天堂| 人妻碰碰碰碰碰碰| 亚洲丰满很很操| 久久伊人最新网址视频| 欧美精品1区2区3区| 伊人国产av| 女人香蕉久久毛毛片精品| 日韩免费高清大片在线| 五月婷婷无码| 六六久久日韩不卡| 少妇人妻无码| 色综合大香蕉| 一区操逼日比视频| 秋霞视频一区二区| 67914亚洲精品| 9997se| 一区二区三区免费视频入口| 久久亚洲av成人无码国产| 午夜啊啊啊| 97爱综合| 99精品在线观看| 亚洲AV人人澡人人爱| 思思视频免费看网站| 无遮挡男女激烈动态图| 人妻铁牛TV| 手机看av网站在线看| 久久久性爱视频| 欧美性天天| wwwss在线观看| 久久精品91| 国产免费操逼| 日韩不卡网操逼中文字幕日韩| 一级一性爱免费视频| a片亚洲一本通视频| 秋霞Av理论一级在线| 亚洲国内精品成人不卡| 久久最新视频免费观看| 久久黄黄| 制服诱惑亚洲一区二区三区在线观看| 国产亚洲精品av一区| 亚洲中文日韩欧美大香蕉视频| 欧美少妇一区二区三区| 亚洲综合91| 色999人与兽| 亚洲日韩美女丝袜美腿人妻视频| 五月婷婷综合激情| 婷婷性网| A片大香蕉在线| 大地资源在线观看中文第二页| 97色涩| 天天日天天干天天操| 无码国产Av| 日本精品第一视频在'| 超碰这里有精品| 日韩欧美字幕亚洲一区二区| 人妻大香蕉| 色婷婷电影网| 97在线免费观看| 日日干夜夜操视频h| 亚洲精品乱码线路中文字幕| 中文字幕AV片| 亚洲欧洲网站免费观看| 91狠狠综合久久| 97超碰国产亚洲精品资源| 婷婷超| 搞中出视频在线观看| 国产欧美精选自拍一区| 九99久久| 99超碰色| 黄片色区软件| 无码人妻一区二区三区四区老鸭窝| 欧美操逼一二三区| 成人一道本免费视频| av线电影| 思思热在线| 亚洲AV无码乱码| 亚洲91综合| 一道本久久棕合爱| 亚洲va有码在线天堂| 超碰在线日韩一区| 白丝AV网站| 日韩激情中文字幕有码| 精品福利| 玖玖超碰熟| 十八禁网站在线| 亚洲国产欧美一区二区潘金莲| 久久久96精品| 综合网~91综合网| 婷婷亚洲综合| 蜜乳成人AV| 久操免费电影| 目产99999久久999| 男人夜色天堂ss| 亚洲 一区二区 自拍| 丁香九月婷婷| 五十路熟女在线不卡观看一区二区| 色一射色一射| 亚洲中文字幕精品久久久久久直播| 探花精品 一区二区| 久久久精品一区二区| 91黑丝少妇| 九九aV| 国产亚洲美日韩Aⅴ中文字幕无码成人| 久久亚洲一区女同性恋中文字幕| 鸥美精品一区二区久久婷婷| 日本大香蕉综合网| 人妻人人澡人人爽人人| 五月丁香影视| 中文字幕亚洲热播人妻| 思思久热在线精品66| 久久亚洲一区女同性恋中文字幕| 欧美一区二区成人一卡| 玖玖人人爱| 欧美一级AAAAAAA| 91色图片| 亚洲有薄码区日本系列中文字幕| 国产精品探花在线| 国产亚洲精品久久久久小| 加勒比日本在线| 曰韩精品视频一区二区| 韩国一级做a久久久久| 精品无av| 亚洲成人AB| 伊人午夜福利视频| 330dv亚洲成年视频网| 天堂日本亚洲欧美| 久久久啊啊| 天天狠| 天天爽天天爽| 加勒比大香蕉视频在线| 欧美另类天堂| AV色女综合| 一区二区三区视频在线观看免费| 久久9久| 亚欧洲日韩国产精品| 偷拍99| 亚洲中文字母在线播放| 亚洲 自拍偷拍 欧美| 人人干人人操人人爱| 男人久久天堂| 国产97在线 | 亚洲| 日韩精品一二三| 蜜臀99久| 天天草天天日| 乱操乱伦AV| 色在线综合| 五月婷婷六月丁香网址| 在线观看岛国有码| 97任你吞精| 强奸国产在线| 久操操AV电影| 黄片免费久久久久久久| 天天色综合天天操| 欧美一级三级| 性色高清在线| av72网| 激情视频图片| rion磁力链接| yaouchengrenav| 国产日韩在线播放av| 自拍偷拍 日韩无码| 色婷网| 91熟女熟妇视频网站| 嗯阿好爽好紧| 大屁股国产在线视频| 亚洲女优有码无码高清| 懂色aV一区二区天美传媒| 久久伊人亚洲AV无码网站| 久草视频在线视频在线视频在线观看| 中文字幕av乱伦| 久久久草成人网站久久久草成人久久久草久久久 | 天天摸天天操视频| 欧美乱伦专区| 操比国产| 少妇毛片久久| 久久久久幕乱码| 久久久久亚洲Av无码专区老牛影视| 日本性爱欧美性爱| 欧美在线视频99| 超碰在线人妻不卡| 欧美综合综合| 91av一区二区在线观看| 另类小说五月天| 日韩精品操少妇| 日韩啪啪视频| 欧美视频一区二区在线| 大香蕉手机在线视频| 人妻少妇久久中文| 欧美性爱第一页久久| 国内毛片免费h片在线| 亚洲综合有玛| 91五十路| 91在线无码精品秘 软件| 日少妇亚洲版| 免费视频一二三区| 国产亚洲禁久一区二区| 无码人妻丰满熟妇奶水区毛片| 九九九国产精品| 尤物网址| 中文字幕日产av人| 久夜操| 国产三级多多影院2022国产AA一级毛片无码 | 搡老熟女免费视频| 东京热免费视频| 99精品人人爽| 在线中文字幕| 久久最新免费视频23| 亚洲交换| 狠狠色噜噜狠狠狠狠狠色综合久久| 中文字幕在线观看第二页| www.人人摸在线视频| 一本一道波多野毛片中文在线| 国产精品九9| 激情欧美97| 丁香五月性| xxxx网站亚洲精品| 中文字幕在线观看第二页| 日韩欧美女求操每天更新| 亚洲成熟国产精品美女| 高潮综合网| 777琪琪午夜免费A片| 嗯嗯啊啊操死我| 秋霞怕怕片| 天美麻豆精品视频99| 蜜臀99久久国产| 久久婷色| 激情在线青青操| 97在线精品| 91精品导航| 99爱在线视频| 国产精品一区二区密臀| 五月丁香激情综合| 97色操| 91狠狠综合久久| 亚洲色图欧美色18直播在线| 巨爆乳肉感一区二区三区竹菊影视| 蜜臀一二三区| 在线看免费无码AV天堂的| 啊啊啊啊,啊啊好多水| 熟女人妻一区二区三区| 青青草AV色| 婷婷伊人网| 国产精品久久久久久久久久久久久久吹 | 久久五月份| 亚洲欧美综合| 丝袜综合色图| 欧美一级久久久久久久大片动画| 日韩中文字幕宗合在线| 婷婷深爱五月| 射久久| 中美日韩毛片| 亚洲第一狼人丝袜美女另类 | 欧美性爱第一页久久| 久久中出在线| 久久九九国产精品| 蜜区区视频79 | 国产欧美另类久久久精品课程| 人人操人人摸人| 亚洲欧美综合网| 午夜精品一区二区三区三上悠亚| 手机午夜电影神马久久| 欧美三级不卡| 日韩免费a级毛片无码a∨| 色女99一级片在线观看| 人人看欧美性爱| 国产久9| 日韩在线76| 欧洲亚洲国产综合在线| 欧美性五月| 亚码激情| 日韩 欧美 视频 在线 一区| 色路综合| 又摸又舔在线观看网站| 精品国产一级久久| 国产精品ww久久| 试看60秒| 99热99re超碰精品| 色yeye成人免费视频| 亚洲精品91| 欧洲精品人妻| 天天影视色香色欲| 国产黄片在线免费观看| 97色诱| 日韩精品国产一区二区| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 亚洲性天堂| 少妇天堂网络| 99久热| 69av一区二区三区| 后入式五六区| 色丁香五月婷婷| 亚洲欧美中文一区二区三| 久久久久亚洲| 夜夜国自区| 9精品在线| 啊啊啊 在线观看| 天天躁日日躁XXXXYY| 亚洲人妻中文在线视频| 狠狠入| 九九九九精品一区| 久久久久久久少妇| 任你艹| 亚洲第一无码播放立川理惠| 日本操逼视频不卡直接放| 亚洲毛片基地专区| 久久精品一区一起草| 麻豆AV短剧| 91在线美女| 爽爽淫人网| 一起草精品人妻| 人妻少妇被猛烈进入中| 懂色aV一区二区天美传媒| 蜜臀99久久精品久久久久久| 亚洲drav色图| 天天综合网AV91| 91色噜噜狠狠| 久久久久日本视| 午夜精品久久久久久久男人的天堂 | 亚洲色图图片| 亚洲精品91| 日韩欧视频| 老熟女天天操| 东京热AV男人的天堂| 啊啊啊久久久视频| 国产精品久久久久久久免牛肉蒲团| 97这里都是精品| 久久手机视直播| 大香蕉伊利av| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 丝袜综合网| 精品人妻15区| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欲香欲色综合天天伊人| 久久久成人免费av电影| 超碰碰小说97| 五十路熟女在线不卡观看一区二区| 校园春色中文字幕AV| 人人爽人人精品乱人伦AV| 粉嫩AV输入| 青青草久草AV| 四虎免费视频| 久久婷婷苹果| 亚洲风情在线观看| 久久精品一区二区三区四区五区| 精品午夜福利| 天天日天天干天天操| 午夜福利国产欧美日韩夜夜| 日韩激情无码影院| 黄色人人| 丁香五月综合| 婷婷性爱| 日韩影片中文字幕一区二区三区| 国产性刺激| 亚洲性猛交| 91老妇女| 精品无码久久久久久久久果冻糖心| 热99这里有精品综合久久| 综合久久99| 另类图片欧美激情综合| 91东京热男人的天堂| 久都青青视频| 欧美色图亚洲特色| 欧美日韩人妻婷婷一区| 国产精品九九| 久久久久久九九九九九| 久久永久无码人妻视频| 强奸乱伦大香蕉| 日本午夜久久电影| 99青草| 夜夜骑天天燥| 九九九不卡| 人人操人人摸avav| 国产精品欧美日韩久久| 婷婷伊人綜合中文字幕小说| 9久久9综合| 丰满人妻一区| 97视频在线看| 免费公开人人操| www.激情| 国产性爱欧美性爱在线| 91岛国动作片| 日韩av不卡在线看| 婷婷五月天福利| 亚洲揄拍网| 欧美色图91| 99久久婷婷丁香| 欧美日韩色图片| 亚洲影视第一页| 91被操| 99精品在线播放| 欲香欲色天天天综合和网| 欧美精品黑人猛交高潮| 无码黑人精品一区二区三区三| 韩国久久97| 人乳av| 日韩免费中文字幕视频| 97精品综合久久| 人妻丝袜肏逼| 午夜成人爽爽爽爽A片李冰冰| 91精品伊人久久久大香线蕉91| 丝袜狠狠草尤物人妻av91| 国产乱码久久久| 午夜福利av电影在线| 美女露胸露尿口| 欧美精品不卡一二三四在线91| 成人精品无码| 亚洲综合伊人| 最新国产精品| 狠狠狠狠狠| 精彩久久中文| 91精品微拍福利| 91在线免费观看处女| 久久久久久久久久久久色网| 不卡一区二区日本视频| 国产乱弄免费在线视频。| 少妇久久| 欧美不卡二区| 欧美日日夜夜| 亚洲情欲| 夜色五月天| 日韩免费av片高清无码| 成人麻豆av电影网站| 日本久操视频| 国产精品乱码久久久久久久久| 无码天天操| 蜜桃久久久久久久久久久久| 久久精品国产亚洲5555| 中文字幕人妻丝袜| 97超碰欧美中文字幕| 亚洲操操操| 国产97av| 九九色综合| 日日干日日摸| 柠檬AV导航| 精品人妻一区二区三区四区| 亚洲少妇中文字幕网址| 人妻五十路在线| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 啊啊啊啊操死我| 91色情黑丝搞鸡在线观看一区二区三区三州 | 91欧美综合| 成人五月香网在线| 国产精品国产精品国产| 日韩精品 资源| 久久久久久久人妻丝袜| 嗯嗯嗯嗯啊啊啊好紧好大| 色色毛片| 午夜欧美神马久久久久| 密乳AV免费观看| 中文无线日韩一区| 午夜一区| 婷婷涩嫩草鲁丝久久午夜精品| 色噜噜人妻av 中文字幕| 日本久久女同性恋视频| 动漫片子网站3黄| 日韩精品在线观看观看| 人人妻天天做天天爽| 五月婷婷性爱| 久久超碰网| 男生女生啊啊啊啊| 日韩欧美俄罗斯A片| 外国免费性情大片| 国产白嫩精品久久| 国产高清免费不卡av| 在线电影亚洲色图| 日韩一区二区精品视频| 日韩性爱啪啪视频| 无码人妻精品一区二区三区九九| 亚洲古典另类欧美在线| 神马麻豆福利院| 色婷婷婷五月天激情四射| 欧亚性爱啪啪| 黄骗免费网站| 国产白领连续中出在线播放| 日本日皮视频逼| 手机在线大香蕉| 午夜大香蕉| 免费a v| 日欧毛片久久| 99色婷婷| 夜夜精品视频一区二区| 国产日韩在线播放av| com 首页 18岁 禁区 女优 免费 精选 同城| 亚洲超碰在线| 欧美精品23| 强乱老妇中文字幕| 精品人妻一区二区免费蜜桃| 五月婷婷丁香中文字幕| 91精品国产91综合久久蜜臀| 强奸熟女一区二区三区| 国产11页| 一牛影视成人片免费| 久夜视频| 亚洲 无码 有码 中文字幕| 欧美精品成人亚洲| 亚洲图片欧洲图片aⅴ| 嗯嗯啊啊操我| 日韩综合色网| 97视频620| 区日韩亚洲乱码av电影| 亚洲无码久久久久久久| 欧美亚洲国产91在线| 中文字幕乱妇免费视频| 亚洲有码第一页| www.操| 亚洲天堂热| 欧美少妇性爱网站| 立川理惠被中出无码| 农村少妇久久久久久久| 嫩草黄页| 日韩美女高潮喷水视频| 精品一区96| 99精品无码| 人妻激情偷乱视三区频一区二区| 亚洲色欲天天天堂色欲网女| 啊啊啊啊啊啊在线观看| 精品女同一区二区三区| 久久妇| 高跟伊人julia ann| 久久久久久性爱片| 久久人妻丝袜一区二区三| 久久 国产精品 一区| 国语av最新自产拍在线观看| 岛国网址国产 | 漂亮人妻被强中文字幕hd| 久久噜| 久久亚码| 精品国产乱码久久久兰草影视| 情色五月天久久久| 成人无码专区精品视频| 天天综合精品| 97久久资源| 国产高清1234区| 九九天堂| 精品国产网站| 区一在线观看| 开心六月色| 白丝少妇一区二区| 欧美天堂超碰97| 国产欧美成人精品| 色妇91| 天天干夜夜肏| 熟女91网| 亚洲欧美国产精品久久久久久久| 一区二区三区免费岛国片| 色婷婷影视| 爱媛媛久久国产福利| 日日碰狠狠添天天爽超| 入口操逼网站| 日韩免费性爱视频在线观看| 国产 三级自拍| 国内三级自拍小视频在线观看 | 夜夜爽33333| 99久久com免费视频′| 久操99| 亚洲成人一二三区| 亚洲视频小说|