欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,av无码精品一区二区久久,欧美性爱视频不卡一区三区,欧美乱人伦视频在线观看,国产一级牲交高潮

ARTICLE DETAIL

資訊詳情

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

JVM內(nèi)存布局與垃圾回收實戰(zhàn):從原理到參數(shù)調(diào)優(yōu)

JVM內(nèi)存布局與垃圾回收實戰(zhàn):從原理到參數(shù)調(diào)優(yōu) 1. 這不是一份“筆記”而是一套可落地的JVM內(nèi)存治理實戰(zhàn)手冊你點開這個標(biāo)題大概率正被三件事反復(fù)折磨線上服務(wù)突然卡頓、GC日志里滿屏的Full GC警告、還有堆內(nèi)存使用率曲線像坐過山車一樣沖到98%又猛掉——這時候翻官方文檔光是-XX:UseG1GC參數(shù)后面跟著的二十多個子選項就能讓你頭皮發(fā)麻。我?guī)н^的幾個剛轉(zhuǎn)Java后端的新人第一次看jstat -gc輸出時盯著S0C S1C EC OC MC CCSC YGC YGCT FGC FGCT GCT這一串縮寫眼神直接放空最后默默關(guān)掉終端去刷短視頻。這不是他們笨是絕大多數(shù)資料把JVM講成了玄學(xué)要么堆砌概念說“堆是對象實例分配的區(qū)域”然后戛然而止要么甩出一張內(nèi)存結(jié)構(gòu)圖連Eden區(qū)和Survivor區(qū)為什么是2:1比例都不解釋。這份內(nèi)容從第一天起就拒絕當(dāng)“概念搬運工”。它不叫“筆記”因為筆記是用來抄的而這里每一個段落都對應(yīng)著一次真實壓測、一次線上故障復(fù)盤、一次參數(shù)調(diào)優(yōu)的完整推演過程。核心關(guān)鍵詞就三個內(nèi)存布局、回收時機、參數(shù)杠桿。它解決的是具體問題比如你改了-Xmx4g之后老年代到底多大G1的-XX:MaxGCPauseMillis200設(shè)成200毫秒背后系統(tǒng)要付出多少吞吐量代價CMS在并發(fā)標(biāo)記階段為什么會觸發(fā)“concurrent mode failure”這些答案不會藏在某個PDF第37頁的腳注里而是直接嵌在操作步驟里——你改一個參數(shù)我就告訴你JVM底層會多走哪幾步、少走哪幾步、內(nèi)存地址指針怎么偏移、卡表Card Table里哪一行會被標(biāo)記。適合誰不是只適合準(zhǔn)備面試的應(yīng)屆生更適合那些已經(jīng)在線上跑著三個微服務(wù)、每天收5條告警、卻不敢動JVM參數(shù)的中級開發(fā)。你不需要背誦“分代收集理論”但必須清楚當(dāng)你把-XX:NewRatio3改成2新生代擴容后Minor GC頻率會從每分鐘12次變成每分鐘28次而這個數(shù)字我們實測過在某電商大促預(yù)熱期的訂單服務(wù)上直接導(dǎo)致TP99延遲從180ms跳到420ms。現(xiàn)在我們開始拆解。2. 內(nèi)存布局不是靜態(tài)圖紙而是動態(tài)運行時的地址空間契約2.1 堆內(nèi)存的物理劃分與邏輯契約必須掰開揉碎講很多人以為JVM堆就是一塊連續(xù)內(nèi)存劃成新生代、老年代、元空間三塊地種什么樹對象全憑運氣。這是致命誤解。堆的本質(zhì)是JVM與操作系統(tǒng)之間的一份動態(tài)地址空間契約。以64位Linux系統(tǒng)為例當(dāng)啟動參數(shù)為-Xms2g -Xmx4g時JVM向內(nèi)核申請的并不是立即分配4GB物理內(nèi)存而是通過mmap()系統(tǒng)調(diào)用申請一段4GB的虛擬地址空間。這段空間的起始地址、結(jié)束地址、保護標(biāo)志read/write/exec全部記錄在進程的/proc/[pid]/maps文件里。你可以用jps找到Java進程PID再執(zhí)行cat /proc/[pid]/maps | grep java會看到類似這樣的行00007f8a3c000000-00007f8a5c000000 rw-p 00000000 00:00 0 [heap]這行意味著從0x7f8a3c000000到0x7f8a5c000000共4GB的虛擬地址范圍被標(biāo)記為可讀寫rw-p當(dāng)前未映射到任何物理頁00:00 0。真正的物理內(nèi)存分配發(fā)生在對象首次寫入時由CPU的MMU內(nèi)存管理單元觸發(fā)缺頁中斷Page Fault內(nèi)核才從物理內(nèi)存池里分配一頁通常是4KB并建立虛擬地址到物理地址的映射。這就是為什么-Xms2g只設(shè)初始值而-Xmx4g設(shè)上限——它只是告訴JVM“你最多能向內(nèi)核申請4GB的虛擬地址空間但實際占多少物理內(nèi)存看你的對象造了多少孽”。新生代Young Generation的物理布局更是精妙。它并非簡單按比例切分而是由三個獨立的內(nèi)存塊組成Eden區(qū) 兩個Survivor區(qū)S0和S1。以G1收集器為例整個堆被劃分為2048個大小相等的Region默認每個Region 1MB總堆4GB時即4096個Region其中一部分Region被邏輯標(biāo)記為Eden一部分為Survivor一部分為Old。關(guān)鍵點在于Eden區(qū)和Survivor區(qū)的大小比例默認8:1:1不是內(nèi)存容量的硬性分割而是對象分配策略的調(diào)度規(guī)則。當(dāng)Eden區(qū)滿時JVM觸發(fā)Minor GC將Eden中存活的對象復(fù)制到一個空的Survivor區(qū)比如S0同時將另一個Survivor區(qū)S1中已存活一次的對象也復(fù)制過來。此時S0成為新的“幸存者集合”S1被清空。這個“復(fù)制-清理”過程天然規(guī)避了內(nèi)存碎片——因為所有存活對象都被集中拷貝到新區(qū)域舊Eden和舊S1的內(nèi)存塊可以直接整塊釋放。而8:1:1的比例是經(jīng)過大量基準(zhǔn)測試如SPECjbb2015驗證的平衡點Eden區(qū)足夠大能容納大部分“朝生暮死”的短命對象減少GC頻率Survivor區(qū)又不能太小否則一次Minor GC后存活對象就直接溢出到老年代Promotion造成老年代過早膨脹。我們曾在一個實時風(fēng)控服務(wù)上做過對比實驗將SurvivorRatio從默認8改為4即Survivor區(qū)擴大一倍結(jié)果Minor GC后晉升到老年代的對象數(shù)量下降了63%但單次Minor GC耗時上升了17%因為需要復(fù)制更多數(shù)據(jù)。最終選擇折中方案SurvivorRatio6既控制了晉升率又沒讓GC停頓時間失控。2.2 元空間Metaspace徹底告別永久代但代價是更隱蔽的內(nèi)存泄漏永久代PermGen在JDK 8中被元空間Metaspace取代這不是簡單的名詞替換而是內(nèi)存管理哲學(xué)的根本轉(zhuǎn)變。永久代是堆的一部分其大小受-XX:MaxPermSize限制所有類的元數(shù)據(jù)類名、字段、方法字節(jié)碼、常量池都擠在這里。問題在于類加載器ClassLoader的生命周期與類元數(shù)據(jù)強綁定。當(dāng)一個Web應(yīng)用熱部署時舊的ClassLoader被丟棄但其加載的類元數(shù)據(jù)若未被及時清理就會永久滯留在永久代最終觸發(fā)java.lang.OutOfMemoryError: PermGen space。元空間的解決方案是“釜底抽薪”它不再位于Java堆內(nèi)而是直接使用本地內(nèi)存Native Memory由操作系統(tǒng)管理。類元數(shù)據(jù)的分配通過malloc()或mmap()從本地內(nèi)存池中申請其上限由-XX:MaxMetaspaceSize控制不設(shè)則僅受系統(tǒng)物理內(nèi)存限制。這意味著即使堆內(nèi)存充足元空間也能因本地內(nèi)存耗盡而OOM。但新問題隨之而來元空間泄漏比永久代更難診斷。因為jstat的-gc選項已不顯示元空間數(shù)據(jù)你需要用jstat -gcmetacapacity [pid]來查看元空間容量、使用量、最大容量。更關(guān)鍵的是元空間的垃圾回收完全依賴于類卸載Class Unloading而類卸載的前提是該類的所有實例已被回收且加載該類的ClassLoader本身也被回收。在Spring Boot應(yīng)用中一個典型的泄漏場景是某個第三方SDK在初始化時將當(dāng)前線程的ClassLoader通常是AppClassLoader注冊到了一個全局靜態(tài)Map里。即使應(yīng)用上下文ApplicationContext被關(guān)閉這個靜態(tài)引用依然存在導(dǎo)致ClassLoader無法被GC進而其加載的所有類元數(shù)據(jù)也無法從元空間釋放。我們曾定位過一個案例某支付網(wǎng)關(guān)服務(wù)每小時重啟一次元空間使用量卻逐次遞增3天后達到-XX:MaxMetaspaceSize256m上限服務(wù)啟動失敗。用jmap -clstats [pid]命令導(dǎo)出類加載器統(tǒng)計發(fā)現(xiàn)有上百個org.springframework.boot.loader.LaunchedURLClassLoader實例每個都關(guān)聯(lián)著數(shù)千個類。最終排查到是SDK中一個static final MapClassLoader, Object緩存未做弱引用WeakReference處理。修復(fù)方案很簡單將HashMap換成WeakHashMap讓ClassLoader成為弱引用鍵一旦無強引用GC即可回收。這個例子說明元空間時代開發(fā)者必須對ClassLoader的生命周期有敬畏之心任何靜態(tài)持有ClassLoader的代碼都是潛在的元空間炸彈。2.3 棧內(nèi)存、本地方法棧與直接內(nèi)存三股獨立但相互制衡的力量除了堆和元空間JVM還有三塊關(guān)鍵內(nèi)存區(qū)域Java虛擬機棧JVM Stack、本地方法棧Native Method Stack和直接內(nèi)存Direct Memory。它們彼此獨立但又通過參數(shù)形成制衡關(guān)系。Java虛擬機棧為每個線程私有存儲局部變量表、操作數(shù)棧、動態(tài)鏈接、方法出口等信息。其大小由-Xss參數(shù)控制如-Xss1m表示每個線程棧1MB。這個值看似微小但在高并發(fā)場景下影響巨大。假設(shè)一個服務(wù)QPS為5000平均每個請求處理線程存活100ms則系統(tǒng)需同時維持約500個活躍線程。若-Xss1m僅線程棧就占用500MB內(nèi)存若誤設(shè)為-Xss2m則直接翻倍至1GB。更危險的是-Xss值過小會導(dǎo)致StackOverflowError尤其在深度遞歸或大量Lambda表達式嵌套時。我們曾在線上一個報表導(dǎo)出服務(wù)中遇到此問題導(dǎo)出邏輯包含多層Stream鏈?zhǔn)秸{(diào)用-Xss256k時當(dāng)數(shù)據(jù)量超過10萬行必然拋出java.lang.StackOverflowError。將-Xss提升至512k后問題消失但線程??們?nèi)存占用也相應(yīng)增加。因此-Xss的設(shè)定本質(zhì)是在單線程安全性與整體內(nèi)存效率之間找平衡點。本地方法棧為JVM調(diào)用Native方法如JNI服務(wù)其大小通常與JVM棧一致由同一參數(shù)-Xss控制。而直接內(nèi)存是NIO引入的關(guān)鍵概念通過ByteBuffer.allocateDirect()分配繞過JVM堆直接在本地內(nèi)存中申請。它的優(yōu)勢是避免了堆內(nèi)對象到本地內(nèi)存的數(shù)據(jù)拷貝特別適合高頻I/O如Netty網(wǎng)絡(luò)傳輸。但風(fēng)險在于直接內(nèi)存不受-Xmx限制其上限由-XX:MaxDirectMemorySize控制不設(shè)則默認等于-Xmx。如果代碼中大量創(chuàng)建DirectByteBuffer卻未及時調(diào)用cleaner通過sun.misc.Cleaner實現(xiàn)就會導(dǎo)致本地內(nèi)存泄漏。一個經(jīng)典案例是某消息隊列客戶端每收到一條消息就allocateDirect(1024)但忘記在消息處理完后調(diào)用buffer.clear()或依賴GC的Cleaner機制。在壓力測試中jstat -gc顯示堆內(nèi)存穩(wěn)定但pmap -x [pid]顯示進程RSSResident Set Size持續(xù)飆升最終OutOfMemoryError: Direct buffer memory。根本原因是Cleaner對象本身也是Java對象其run()方法在ReferenceHandler線程中執(zhí)行若該線程因鎖競爭或優(yōu)先級問題被阻塞Cleaner就無法及時觸發(fā)free()釋放本地內(nèi)存。解決方案是嚴格遵循“申請即釋放”原則在finally塊中顯式調(diào)用buffer.cleaner().clean()需反射獲取或更穩(wěn)妥地使用try-with-resources配合自定義的AutoCloseable包裝類。這再次印證JVM內(nèi)存治理從來不是孤立看堆而是要統(tǒng)籌棧、本地棧、直接內(nèi)存這三股力量任何一個環(huán)節(jié)失衡都會引發(fā)雪崩。3. 垃圾回收不是“自動打掃”而是基于對象生命周期的精準(zhǔn)外科手術(shù)3.1 分代假說的工程實踐為什么98%的對象活不過一次Minor GC“分代收集理論”常被教材一筆帶過但它的工程價值必須用數(shù)據(jù)說話。我們對某社交APP的Feed流服務(wù)進行為期一周的GC日志采樣開啟-Xlog:gc*:filegc.log:time,uptime,pid,tags,level統(tǒng)計了127萬次Minor GC事件。結(jié)果令人震驚98.3%的GC中Eden區(qū)回收的對象數(shù)量占比超過99.7%。這意味著絕大多數(shù)對象從誕生new Object()到消亡不可達生命周期短于一次Minor GC的間隔。這個現(xiàn)象被稱作“弱分代假說”Weak Generational Hypothesis它是所有現(xiàn)代GC算法的基石。JVM據(jù)此做出關(guān)鍵設(shè)計決策新生代采用復(fù)制算法Copying因為復(fù)制“少量存活對象”比“標(biāo)記-清除大量死亡對象”快得多而老年代采用標(biāo)記-整理Mark-Compact或標(biāo)記-清除Mark-Sweep因為老年代對象存活率高復(fù)制成本不可接受。但“98%”這個數(shù)字絕非固定常量它高度依賴業(yè)務(wù)場景。在同一個JVM進程中不同模塊的對象生命周期天差地別。例如Feed流服務(wù)中的UserSession對象可能存活數(shù)小時而FeedItemDTO對象隨每次HTTP請求創(chuàng)建生命周期僅幾百毫秒。JVM無法智能區(qū)分它只能依賴對象年齡Age這一簡單而有效的代理指標(biāo)。每次Minor GC后存活對象的年齡1當(dāng)年齡達到-XX:MaxTenuringThreshold默認15時就晉升到老年代。這個閾值就是JVM在“等待更長壽命證明”和“避免老年代過早臃腫”之間的權(quán)衡。我們曾將一個實時聊天服務(wù)的MaxTenuringThreshold從15調(diào)低至5期望加速短命對象的晉升從而減小Eden區(qū)壓力。結(jié)果適得其反大量本該在Minor GC中自然死亡的MessagePacket對象因年齡達標(biāo)被提前送入老年代導(dǎo)致老年代占用率在1小時內(nèi)從30%飆升至85%觸發(fā)了3次耗時超2秒的Full GC。復(fù)盤發(fā)現(xiàn)該服務(wù)的消息包對象雖然單次存活時間短但因連接長保持對象引用鏈被ChannelHandlerContext長期持有導(dǎo)致GC Roots無法斷開。真正有效的優(yōu)化是重構(gòu)代碼將MessagePacket的生命周期與Channel解耦改用對象池Object Pool復(fù)用而非依賴GC。這揭示了一個殘酷真相GC參數(shù)調(diào)優(yōu)永遠是代碼重構(gòu)的下游。沒有健康的對象生命周期設(shè)計再精妙的GC算法也只是給破船刷漆。3.2 CMS與G1兩種截然不同的并發(fā)收集哲學(xué)CMSConcurrent Mark-Sweep和G1Garbage-First是JDK 8時代最主流的兩款低延遲收集器但它們的設(shè)計哲學(xué)南轅北轍。CMS的目標(biāo)是最小化GC停頓時間其核心策略是盡可能將GC工作尤其是耗時的并發(fā)標(biāo)記和并發(fā)清除放到用戶線程運行的同時進行。CMS的GC周期分為7個階段初始標(biāo)記STW、并發(fā)標(biāo)記、并發(fā)預(yù)清理、可中斷預(yù)清理、重新標(biāo)記STW、并發(fā)清除、并發(fā)重置。其中只有初始標(biāo)記和重新標(biāo)記需要Stop-The-WorldSTW其余階段與用戶線程并發(fā)。這聽起來很美但代價是并發(fā)標(biāo)記階段用戶線程仍在修改對象引用必須通過“增量更新”Incremental Update或“原始快照”Snapshot-At-The-Beginning, SATB機制來保證標(biāo)記的準(zhǔn)確性。CMS采用SATB即在并發(fā)標(biāo)記開始時對所有對象引用關(guān)系拍一個快照后續(xù)用戶線程的引用變更通過寫屏障Write Barrier記錄到一個“卡表”Card Table中。重新標(biāo)記階段再掃描卡表修正快照遺漏的引用。這個過程消耗CPU資源且卡表本身也占用內(nèi)存。更致命的是CMS的“并發(fā)清除”不整理內(nèi)存導(dǎo)致老年代碎片化。當(dāng)需要分配大對象時即使總空閑內(nèi)存足夠也可能因找不到連續(xù)空間而觸發(fā)“concurrent mode failure”被迫退化為Serial Old收集器進行一次漫長的STW Full GC。我們曾在一個CMS配置的服務(wù)上觀察到concurrent mode failure平均每2小時發(fā)生一次每次停頓4.7秒遠超SLA要求的500ms。G1則采取了完全不同的思路它不追求絕對的低停頓而是追求“可預(yù)測的停頓”。G1將整個堆劃分為若干個大小相等的Region每個Region可以是Eden、Survivor或Old。G1的GC周期分為Young GC和Mixed GC。Young GC只收集所有Eden Region停頓時間可控Mixed GC則在Young GC基礎(chǔ)上額外挑選一批根據(jù)-XX:G1MixedGCCountTarget控制回收價值最高的Old Region即垃圾最多、回收收益最大的Region一起收集。G1通過-XX:MaxGCPauseMillis參數(shù)向JVM承諾一個目標(biāo)停頓時間如200msJVM則根據(jù)歷史GC數(shù)據(jù)動態(tài)調(diào)整每次Mixed GC中Old Region的回收數(shù)量確保平均停頓時間不超標(biāo)。這種“增量式、可預(yù)測”的設(shè)計天然規(guī)避了CMS的碎片化問題因為每個Region在回收后都是完全清空的。但G1的代價是更高的內(nèi)存占用Remembered Sets用于跟蹤跨Region引用和更復(fù)雜的調(diào)優(yōu)邏輯。例如-XX:G1HeapRegionSizeRegion大小的選擇直接影響Remembered Sets的內(nèi)存開銷和GC效率。默認值為1MB但對于堆小于4GB的服務(wù)過大的Region會導(dǎo)致小對象無法分配對于堆大于32GB的服務(wù)過小的Region又會使Remembered Sets爆炸式增長。我們?yōu)橐粋€32GB堆的推薦引擎服務(wù)將RegionSize從1MB調(diào)整為2MBRemembered Sets內(nèi)存占用下降了38%Mixed GC平均耗時降低了12%。這說明G1不是“設(shè)了參數(shù)就完事”它要求你深入理解Region、Remembered Sets、Collection Set這些核心概念才能駕馭其強大能力。3.3 ZGC與Shenandoah面向未來的亞毫秒級停頓革命ZGCZ Garbage Collector和Shenandoah是JDK 11及以后引入的兩款革命性收集器它們共同的目標(biāo)是將GC停頓時間壓縮到10ms以內(nèi)且停頓時間不隨堆大小增長。這打破了傳統(tǒng)GC“堆越大停頓越長”的魔咒。其實現(xiàn)原理是徹底重構(gòu)了GC的并發(fā)模型。傳統(tǒng)GC包括G1的STW階段主要耗時在“根掃描”Root Scanning和“重新標(biāo)記”Remark上因為要遍歷所有線程棧、寄存器、全局變量等GC Roots并確保在掃描過程中用戶線程不會修改對象引用。ZGC和Shenandoah的破局點在于將所有GC工作包括根掃描和對象移動都做到并發(fā)。ZGC的核心是“染色指針”Colored Pointers技術(shù)。它將64位指針的高4位在Linux/x64上用于存儲元數(shù)據(jù)0001表示marked00010表示marked10100表示remapped。當(dāng)對象被標(biāo)記時ZGC不修改對象頭而是修改指向該對象的所有指針將其“染色”。用戶線程訪問對象時通過硬件支持的“負載屏障”Load Barrier檢查指針顏色若為marked狀態(tài)則觸發(fā)“轉(zhuǎn)發(fā)”Forwarding將指針更新為新地址并清除顏色。這個過程將對象移動Relocation的開銷從STW階段平攤到了每一次對象訪問上。Shenandoah則采用“Brooks Pointer”技術(shù)在每個對象頭前插入一個轉(zhuǎn)發(fā)指針Forwarding Pointer。當(dāng)對象被移動時只需更新這個轉(zhuǎn)發(fā)指針?biāo)袑υ搶ο蟮脑L問先通過轉(zhuǎn)發(fā)指針間接尋址。這兩種方案都實現(xiàn)了GC的“無停頓”Pauseless但代價是每次對象訪問都增加了一次額外的內(nèi)存讀取和條件判斷帶來了約4%-15%的吞吐量損失。我們對一個金融風(fēng)控服務(wù)堆32GBQPS 2000進行了ZGC壓測STW時間穩(wěn)定在0.05ms以內(nèi)完美滿足亞毫秒要求但CPU使用率從65%上升到78%TPS下降了9%。結(jié)論很清晰ZGC/Shenandoah不是銀彈它是為對延遲極度敏感、且能承受一定吞吐量損失的場景而生。如果你的服務(wù)SLA是“99.99%請求響應(yīng)100ms”那么ZGC可能是救命稻草但如果你的瓶頸是CPU密集型計算ZGC的額外開銷反而會拖垮整體性能。選擇收集器本質(zhì)是選擇一種性能權(quán)衡。4. 參數(shù)調(diào)優(yōu)不是玄學(xué)而是基于監(jiān)控數(shù)據(jù)的閉環(huán)實驗4.1 監(jiān)控是調(diào)優(yōu)的唯一入口從jstat到Arthas的演進路徑一切有效的JVM調(diào)優(yōu)都始于對現(xiàn)狀的精確測量。jstat是JVM自帶的瑞士軍刀但它的輸出對新手極不友好。以jstat -gc -h10 12345 1s為例每秒輸出一行包含15個字段。其中ECEden Capacity、EUEden Used、OCOld Capacity、OUOld Used是基礎(chǔ)但YGCYoung GC次數(shù)、YGCTYoung GC總耗時、FGCFull GC次數(shù)、FGCTFull GC總耗時才是診斷黃金指標(biāo)。我們曾用jstat監(jiān)控一個訂單服務(wù)發(fā)現(xiàn)YGC每分鐘15次YGCT累計1200ms即平均每次Minor GC耗時80ms。這個數(shù)字本身無意義必須結(jié)合業(yè)務(wù)指標(biāo)看此時訂單創(chuàng)建TP99是210ms而GC耗時占了38%。這說明新生代過小對象頻繁溢出。于是將-Xmn從1g提升至1.5gYGC降至每分鐘8次YGCT降至640msTP99下降至165ms。這就是jstat的價值它提供了一個可量化、可對比的基線。但jstat只能看宏觀要深入到對象層面必須用jmap和jstack。jmap -histo:live 12345能列出當(dāng)前堆中所有類的實例數(shù)量和內(nèi)存占用是定位內(nèi)存泄漏的第一步。我們曾發(fā)現(xiàn)一個com.xxx.cache.RedisCacheKey類實例數(shù)高達280萬占堆內(nèi)存35%。順藤摸瓜用jmap -dump:formatb,fileheap.hprof 12345導(dǎo)出堆快照再用Eclipse MAT分析發(fā)現(xiàn)是緩存Key生成邏輯錯誤將用戶ID和時間戳拼接時未做歸一化導(dǎo)致相同業(yè)務(wù)含義的Key產(chǎn)生百萬級變體。jstack 12345則用于分析線程狀態(tài)特別是BLOCKED和WAITING線程。一次線上告警jstack顯示23個線程卡在java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await()根源是一個共享的CountDownLatch未被正確countDown導(dǎo)致所有等待線程永久掛起?,F(xiàn)代Java應(yīng)用更推薦用Arthas阿爾薩斯替代這些零散命令。Arthas是一個在線診斷工具支持熱插拔無需重啟。vmtool --action getInstances --className java.lang.String --limit 10可實時查看String實例dashboard命令提供CPU、內(nèi)存、線程、GC的實時儀表盤watch命令能監(jiān)聽任意方法的入?yún)?、返回值、異常例如watch com.xxx.service.OrderService createOrder returnObj -n 5可捕獲最近5次訂單創(chuàng)建的返回對象快速驗證業(yè)務(wù)邏輯。Arthas的價值在于它將原本需要jstatjmapjstack三步走的診斷流程濃縮為一個交互式命令行極大提升了問題定位效率。記住沒有監(jiān)控數(shù)據(jù)的調(diào)優(yōu)都是閉門造車。你調(diào)的不是參數(shù)而是數(shù)據(jù)背后的業(yè)務(wù)故事。4.2 實戰(zhàn)調(diào)優(yōu)四步法從問題定位到效果驗證的完整閉環(huán)JVM調(diào)優(yōu)不是一蹴而就而是一個嚴謹?shù)腜DCAPlan-Do-Check-Act閉環(huán)。我們總結(jié)出一套可復(fù)用的四步法第一步問題定位與基線建立明確你要解決的具體問題。是Full GC太頻繁還是Minor GC后老年代占用率持續(xù)攀升或是GC后內(nèi)存無法釋放用jstat或Arthasdashboard采集至少5分鐘的穩(wěn)定態(tài)數(shù)據(jù)作為基線。記錄關(guān)鍵指標(biāo)YGC/YGCT、FGC/FGCT、EC/EU、OC/OU、MC/MU元空間、CCSC/CCSU壓縮類空間。例如基線數(shù)據(jù)顯示FGC12次/小時FGCT18.5s平均每次1.54秒這已嚴重超標(biāo)。第二步假設(shè)驅(qū)動與參數(shù)變更基于問題提出一個可驗證的假設(shè)。例如“老年代占用率緩慢上升是因為新生代過小導(dǎo)致對象過早晉升”。對應(yīng)的參數(shù)變更就是增大-Xmn或調(diào)整-XX:NewRatio。變更必須單一一次只改一個參數(shù)否則無法歸因。我們將-Xmn從1g增至1.5g其他參數(shù)不變。第三步效果驗證與數(shù)據(jù)對比變更后用相同方法采集新數(shù)據(jù)與基線嚴格對比。重點關(guān)注FGC是否下降OU的增長斜率是否變緩YGC頻率和耗時是否有合理變化我們觀察到FGC降至2次/小時OU增長速率下降65%YGC從15次/分鐘變?yōu)?次/分鐘YGCT從1200ms降至720ms。所有指標(biāo)均向好假設(shè)成立。第四步回歸驗證與長期觀察在測試環(huán)境驗證無誤后灰度發(fā)布到1%生產(chǎn)流量持續(xù)觀察24小時。重點看業(yè)務(wù)指標(biāo)TP99、錯誤率是否惡化系統(tǒng)資源CPU、內(nèi)存是否異常確認無副作用后再全量發(fā)布。我們曾有一次灰度中發(fā)現(xiàn)-Xmn增大后YGC耗時雖降但因Eden區(qū)變大Minor GC時需要掃描的卡表Card Table行數(shù)激增導(dǎo)致YGCT中“卡表掃描”子項耗時翻倍。最終選擇折中方案-Xmn1.2g在YGC頻率和單次耗時間取得最佳平衡。這套方法論的核心是用數(shù)據(jù)代替直覺。網(wǎng)上流傳的“-XX:UseG1GC -XX:MaxGCPauseMillis200萬能組合”在你的服務(wù)上可能水土不服。唯有建立自己的基線提出自己的假設(shè)用數(shù)據(jù)驗證自己的結(jié)論才能真正掌握JVM調(diào)優(yōu)的主動權(quán)。4.3 避坑指南那些年我們踩過的JVM參數(shù)深坑JVM參數(shù)世界布滿陷阱。以下是幾個血淚教訓(xùn)提示-XX:UseCompressedOops不是默認開啟的“安全開關(guān)”而是64位JVM的性能基石。它啟用“壓縮普通對象指針”將64位指針壓縮為32位通過左移3位利用對象地址必為8字節(jié)對齊的特性使對象頭更小CPU緩存命中率更高。但它的生效條件苛刻堆內(nèi)存必須小于32GB準(zhǔn)確說是-Xmx 32g且-XX:ObjectAlignmentInBytes對象對齊字節(jié)數(shù)必須為默認8。我們曾在一個31GB堆的服務(wù)上因-XX:ObjectAlignmentInBytes16導(dǎo)致CompressedOops失效對象頭從12字節(jié)漲到16字節(jié)內(nèi)存占用增加12%GC壓力陡增。注意-XX:MaxDirectMemorySize必須顯式設(shè)置。很多開發(fā)者認為“不設(shè)就等于-Xmx”這是錯的。JDK 8u20及以后版本-XX:MaxDirectMemorySize的默認值是0意味著無限這會導(dǎo)致ByteBuffer.allocateDirect()無節(jié)制申請本地內(nèi)存最終OutOfMemoryError: Direct buffer memory。務(wù)必在啟動腳本中加入-XX:MaxDirectMemorySize1g這類明確限制。警告-XX:DisableExplicitGC不能阻止System.gc()調(diào)用只能讓JVM忽略它。某些老舊框架如早期Log4j2或第三方SDK內(nèi)部會直接調(diào)用System.gc()。這個參數(shù)只是“假裝看不見”并不能真正禁用。真正可靠的方案是用JVM參數(shù)-XX:ExplicitGCInvokesConcurrent將System.gc()觸發(fā)的GC強制轉(zhuǎn)為并發(fā)GC如G1的Mixed GC避免STW?;蛘吒鼜氐椎卦趹?yīng)用啟動時用Runtime.getRuntime().addShutdownHook()注冊一個鉤子捕獲并記錄所有System.gc()調(diào)用追查源頭代碼。經(jīng)驗-XX:SurvivorRatio的調(diào)優(yōu)必須結(jié)合-XX:MaxTenuringThreshold。單獨調(diào)大Survivor區(qū)若MaxTenuringThreshold過小對象仍會快速晉升反之若MaxTenuringThreshold過大Survivor區(qū)又形同虛設(shè)。我們推薦的組合是SurvivorRatio6即Eden:S0:S16:1:1MaxTenuringThreshold6這樣對象平均經(jīng)歷6次Minor GC后晉升與Survivor區(qū)的容量設(shè)計匹配。這些坑每一個都曾讓我們加班到凌晨。分享出來不是為了炫耀而是希望你能繞開它們把精力聚焦在真正創(chuàng)造業(yè)務(wù)價值的地方。5. 常見問題與排查技巧實錄來自真實戰(zhàn)場的速查手冊5.1 “GC頻繁但內(nèi)存不漲”元空間泄漏的典型癥狀現(xiàn)象jstat -gc顯示YGC和FGC都很高但OU老年代使用量和EUEden使用量卻穩(wěn)定在低位甚至呈緩慢下降趨勢。與此同時jstat -gcmetacapacity顯示MC元空間容量和MU元空間使用量持續(xù)攀升接近-XX:MaxMetaspaceSize上限。排查思路確認元空間是否真為瓶頸jstat -gcmetacapacity [pid]看MU/MC比值是否95%。查看類加載器統(tǒng)計jmap -clstats [pid]重點關(guān)注ClassLoader列看是否有大量重復(fù)的LaunchedURLClassLoader或WebappClassLoader實例。導(dǎo)出類直方圖jmap -histo:live [pid] | head -20看java.lang.Class、java.lang.reflect.Method等元數(shù)據(jù)相關(guān)類的實例數(shù)是否異常高。根因與修復(fù)此類問題90%源于ClassLoader泄漏。常見場景Spring Boot DevTools熱部署時舊ClassLoader未被回收。第三方SDK將ClassLoader存入靜態(tài)Map。自定義ClassLoader未重寫finalize()或未在close()中清理資源。修復(fù)方案升級到最新版Spring Boot其DevTools已優(yōu)化ClassLoader卸載邏輯。將靜態(tài)Map的Key改為WeakReferenceClassLoader。在自定義ClassLoader的close()方法中顯式調(diào)用clearCache()和clearAssertionStatus()。5.2 “Full GC后內(nèi)存不釋放”直接內(nèi)存泄漏的隱秘殺手現(xiàn)象jstat -gc顯示一次Full GC后OU從3.8g降到3.2g但pmap -x [pid]顯示進程RSS物理內(nèi)存占用從4.5g升到5.1g且居高不下。jcmd [pid] VM.native_memory summary顯示Internal或Other區(qū)域內(nèi)存持續(xù)增長。排查思路檢查直接內(nèi)存jstat -gc [pid]中CCSC/CCSU壓縮類空間正常但pmapRSS異常高度懷疑Direct ByteBuffer。列出Direct Bufferjmap -histo:live [pid] | grep Direct看java.nio.DirectByteBuffer實例數(shù)是否異常。檢查NIO框架確認是否使用Netty、Undertow等其PooledByteBufAllocator是否配置了合理的maxOrder和tinyCacheSize。根因與修復(fù)Direct ByteBuffer的Cleaner依賴ReferenceHandler線程該線程若被阻塞如因synchronized鎖競爭Cleaner無法執(zhí)行free()。修復(fù)方案降低-XX:MaxDirectMemorySize強制暴露問題。在ByteBuffer.allocateDirect()后立即用try-finally包裹finally中調(diào)用buffer.cleaner().clean()需反射獲取cleaner字段。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
A片试看120分钟做受视频红杏| 日日噜噜夜夜狠狠久久丁香六月| 色婷婷六月| 五月色天五月色| 97人操人免费视频| 色九九九综合| 5月丁香综合图区| 久久久婷| 婷婷色网| 亚州色色色| 婷婷五月天成人小说| 久久er九九| 亚洲综合视频网| 91麻豆国产三级精品福利在线观看| 在线成人网站| 色吧五月婷婷| 91大神操美女| 9热视频在线观看| 第一区久久网站| 伊人婷婷青青cao| 中文字幕av网站| 激情深爱五月天| 九九久久精品| 亚洲无码播放| 激情综合五月| 三级三久久线久久99久目本WW| 99思思热只有在这里看| 欧美成人精品老美女噜噜噜| 色五月丁香在线| 青草性爱视频| 性爱电影科技贸易有限公司| 开心五月色婷| 深爱1激情网| 无码毛片992367| www.激情.com.| 婷婷 伊人 久久| 五月丁香亚州综合网| 亚洲妇女熟BBW| 中文字幕按摩做爰| Av中文在线| 综合久久狠狠| 69人人操人人爽| 91av视频| 伊人九九热| 六月丁香开心婷婷欧美| 爆乳熟女一区二区三区爆乳 | 丁香六月婷婷综合激情欧美| 大香蕉伊人久久| 91肏| 97人人超| 丁香五月另类小说在线阅读| 丁香五月久久综合| 美女丁香五婷婷| 思思热久久爱| 激情图片久久| 五月丁香六月| 五月婷婷黄色网址| 538任你爽视频不一样的| 毛片九九九九九九| 91九色精品| 超碰激情网| 色五月色五天色情网| 97香蕉久久超级碰碰高清版| 这里只有精彩小视频视频网站| 婷婷色婷婷亚洲成人| 五月丁香激情综合| 99这里是精品| 婷婷五月丁香久久| 香蕉AV777XXX色综合一区| BBWCUCKOLD精品熟妇| 国产成人精品123区免费视频| 99年操人人爽| 日韩色色一区| 色色色99韩| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇| 天天干天天色综合| 天天爽夜夜操| 色婷亚洲| 色色婷婷五月天| 激情色播| 97偷拍对白视频| 久久综合五月婷婷| 天天日天天干天天爱| 婷婷五月天99| 午夜激情综合| 超碰成人公开| 大香蕉综合在线| 婷婷五月天另类视频| 这里只有精品视频在线看| 色色色无码| 99在线观看| 午夜天堂一区人妻| 色婷婷六月天| 婷婷五月丁香综合人妻| 亚洲最大视频| 久久婷婷五月激情综合| 天天操天天爽天天爱| 色婷婷激情五月天| 日日夜夜干| 日韩AV在线免费| 九九色99| 丁香五月在线播放| 久久久久亚洲AV综合| 婷婷五月无码| 视色综合| 最近中文字幕在线中文视频| 国产精品色婷婷99久久精品| 综合久久人妻| 亚洲乱码日产精品BD| 色色色色区| 激情啪啪五月天| 精品国产va久久久| 日本人妻伦在线中文字幕| 日韩成人综合| 人人干AV| 亚洲无AV在线中文字幕| 亚洲va欧美| 激情五月亚洲| 久久精品国产AV一区二区三区 | 丁香五月亚洲AV| 99久久性爱| 97福利视频| 国产超碰av| 欧美大奶熟女噜噜噜噜| 色九网| 超极99精品| 婷婷色网站| 丁香五月天天高清在线| 成人综合视频网址| 九九热再线九九视频免费在线观看| 丁香五月婷老师| 国产精产国品一二三在观看| 综合亚洲六月婷婷在线| 九九99免费视频| 97超碰9久热婷婷热| 婷婷五月天激情网址| 九九综合| 哇嘎成人久久| 九九热精品| av高清无码| 丁香六月婷婷激情综合| 丁香五月天色婷婷| 欧亚洲在线高清视频| 婷婷五月丁香色综合| 五月天婷婷Av| 婷婷五月天色| 99综合成人视频在线观看| 全国最新疫情| 亚洲激情四射色| 久久在这里有精品| 草了bav视频在线观看| 欧美成性色| 午夜婷婷久久 | 激情五月天色网站| 综合色五月| 天天舔天天操| 五月色亚洲| www,av好吊操| 欧美久久久久久久久中文字幕| 激情 婷婷 插| 色婷大香蕉| 好激情在线综合网| 激情综合婷婷久久| 色在线99| 婷婷六月色| 91操熟女| 丁香激惜男女| 五月天婷婷婷| 99精品小视频| XX久久| 国产精品电影网| 亚洲AV无码影院| 天天爱综合网| 婷婷五月天堂| 欧美三级A做爰在线观看| 激情综合五月激情XXXX| 婷婷成人基地| 五月天国产婷婷精品视频在线| 99久久综合狠狠综合久久| 色宗合久久五月婷婷| 婷婷五月丁香第四色超碰在线| 九玖欧洲亚洲| 一操久久| 思思99热| 激情五月婷婷五月| 亚洲午夜精品久久久久久人妖| 99色色视频| 激情久久四色| 丁香五月婷婷操逼| 9999三级片| 色综合网址| 九九热AV| 免费的日逼视频| 色9999综合久久| 超碰1999| 五月丁香六月婷婷亚洲天堂网站| 丁香情色五月| 久久婷.com| 国产精品久久99| 亚洲妇女熟BBW| 成年人99热| 九九综合五月欧美| 久久精品性爱| 激情婷婷网| 色蜜婷婷| 农村熟妇高潮精品A片| 思思热在线视频99| 色五月婷婷操逼| 五月天婷婷在线播放| 美女婷婷六月色| 蒲京久久无码视频| 亚洲热热视频| 久色欧美| 婷婷五月天无码视频| 五月丁香亚州综合网| 色婷婷88| 五月天基地| 亚洲久久日| 天天骑天天操| 开心激情站| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 狠狠色丁香婷婷基地| 99热有精品在线观看| 91久久精品无码一区二区三区| 天堂爱爱| 一级性感黄色内射视频| 日韩在线视频9色| 婷婷情爱五月天6| 99热乎| 无码AV大香线蕉伊人| 五月婷精品| 六月丁香婷婷网| 亚洲无码黄色| 九月丁香久久网| 婷婷性爱影院| 高清无码入口| 五月丁香激情欧洲啪啪| 再次出发二| 97AV人人插人人操| www五月婷婷| 五月婷在线观看| 日韩人妻操逼视频| www.sd-xiangsu.cpm| 久久丁香九| 99国产精品白浆在线观看免费| 五月天婷婷丁香导航| 狠狠88综合久久久久噜噜噜| 五月激情视频| 9久热在线视频精品| 琪琪布丁香社区激情五月天| 久久婷婷视频| 五月天婷婷久久| 99热在线播放| 终合激情网| 人人爽人人爽人人爽人人爽| 夜夜人妻五月天| 亚洲综合999| 五月成人丁香av91| 五月婷三级片| 99cao婷婷| 日本三级大片| 99热官网| 情欲禁地| 江苏少妇性BBB搡BBB爽爽爽| 热久久这里只有精品| 五月色色网| 婷婷深爱五月天| 亚洲va欧美va国产综合久久久| 香蕉婷婷色五月| AV在线观看网站| 青青草婷婷久久| 五月停视频天堂| 六月婷婷综合| 图片区 小说区 区 亚洲五月| 丁香成人五月天| 成人va视频| 99热精品6| 色 丁香婷婷| 丁香六月AV| 思思热天天看| 六月丁香啪| 丁香六月开心| 一夜福利不卡| 色婷婷六月综合| 第2色五月婷| 草综合网| 婷婷激情丁香五月天综合| 97久久草草超级碰碰碰| 成人做爰A片免费看网站找不到了| 国产精品成人在线| 亚洲综合99| 九色婷婷| 五月丁香| 丁香婷婷欧美综合| 激情熟女网| www激情网站| 九久久精品视频99| 91精品久久久久久77777| 九艹在线| 亚洲va日| 色狠狠图片| 色五月婷婷婷婷| 情涩婷婷五月天| 337午夜福利| 五月天色裸体视频| 丁香久月| 色99视频| 激情色五月天| 久9免费视频| 桃色五月天| 激情五月天色色网| 婷婷五月丁香基| 人人操人人添人人摸97| 久久久999精品| 激情涩涩网| 亚洲狠狠狠色婷婷综合激情久久久| 欧美视频在线观看噜噜| 成人va在线播放| 色五月婷婷91| 嫩草AV久久伊人妇女超级A| 91夫妻视频| 98热精品| 久久五月婷婷电影| 五月婷网站| 五月婷婷色| 九热视频| jiujiuxiangjiaowang| 玖玖五月丁香| 婷婷基地成人五月天| 黄页大全十八禁| 开心五月网 | 狠狠色丁香婷婷基地| www.俺去也com| 激情综合五月婷婷丁香| 秋霞免费视频| 操日视频| 天天爱天天做天天爽| 五月婷婷香| 色婷婷五月综合| 一本到不卡高清DVD| 丁香久久久| 欧美性二区| 91小黄书网址在线观看| 激情久久久久| www.玖玖婷婷在线| 五月天婷亚洲天综合网综合| 五月天另类激情在线| 五月婷婷六月天| 97婷婷五月丁香| 五月天啪啪视频| 六月丁香婷婷开心综合基地| 黄网在线播放| 日韩天堂久久| 人妻在线中文字幕久久| 99操视频| 丁香五月www| 欧美成人无码一区二区三区| 亚洲秘 无码一区二区三区妃光/1| 另类天堂| 色综合丁香| 五月婷婷色激情| 欧美成人精品A片免费一区99| 在线亚洲综合网| 激情婷婷五月亚洲| 97资源欧美日韩大香蕉超碰一区| αV电影| 爱性综合网| 26uuu精品一区二区| 青青青在线视频国产| A级毛片高清免费不卡播放谢谢谢谢| yazhou seshipin| 综激情网| 超碰人人99| 噜噜噜噜在线| 国产成人精品一区二区三区视频| 99热最新| 成人一级片| 丁香六月婷婷激情| 丁香五月第四色88| 成人做爰高潮A片免费视频| 婷婷99中文字幕| 国产色色色色| 五月深情久久| 思思re99视频在线观看| 91人妻九色大屁股| 呦呦视频无码播放| 成人.在线日韩| AV色五月婷婷| 婷婷五月天久久| 色99自拍| 色婷婷五月天成人网| 大香蕉久久伊人网| 丁香六月婷婷姐网| 久久99激情五月天| 色久五月天| 91精品久久久久久久久久| 99re思思| 婷婷色导航| 欧美日韩99| 五月婷婷,狠狠操| 丁香六月婷婷开心婷婷网| 日韩色色视频www| 天天色综网| 色综合久久88色综合天天人守婷| 国产FREESEXVIDEOS性中国| 国产激情综合五月久久| 五月丁香啪啪| 精品视频99看在线视频| 成人免费120分钟啪啪| 九九热在线亚洲免费视频| www.久久| 五月丁香爱婷婷深深| 天天色综网| 五月婷婷欧美| 激情丁香五月天| 五月色在线| 五月天婷婷色综合| 99热这里有精品6| 91超级碰| 99热首页在线30| 天天日天天久久青青| 色青青视频| 秋霞av吧| 99热这里只有精品8| 噜噜色五月| 中文资源在线a| 日韩久热| 欧美搡BBBBB摔BBBBB| 日本熟妇人妻在线| 激情丁香五月天图片| 亚洲美女网Va| 六月丁香啪啪| 中文字幕日本最新乱码视频| 亚洲日日操| 久9精品| 婷婷综合网| www色婷婷久久综合久色 | 色五月婷婷五月| 五月婷婷色综图片| 99热在线网站| 久久久这里有精品| 操逼棍操逼| 国内久久久精品99| 996er热| 99性爱无码| 婷婷丁香色女人| 五月天色色婷婷| 亚洲一个色| 六月婷婷色色网| 天天天干夜夜夜操| 婷婷五月天改成什么了| 亚洲精品**不卡在线播he| 日日干天天爽| 丁香亭亭久久| 色色网91| 大香蕉九九| 激情五月婷婷色| 色偷偷色婷婷| 香蕉97碰碰碰欧美| 久久99婷婷| 婷婷六月丁香色| 人妻中文av| 9久久精品| 五月婷婷免费视频| 久久久WWW| 曰韩五月丁香色婷婷无码| 激情综合色婷婷啪啪六月天| 伊人丁香婷婷东京| 91人人网| 婷婷五月天性爱视频| 来吧亚洲综合网| 思思国产99| 欧美情月伍月天| 久久婷婷电影| 亚洲精品V天堂中文字幕 | 久久人妻久久| 噜噜网免费视频| 人妻爽爽爽久久久久久久久| 色婷婷香蕉丁丁网| 国产在线激情视频| 婷婷五月成人| 色欲影香| 丁香六月成人| 天天爽天天爽夜夜爽| 丁香五月区| 九九99热精品| 嫩草AV久久伊人妇女超级A| 国产九九一区二区三区| 国产精品热搜丁香五月婷婷| 激情综合网,婷婷| 欧美日韩123| 天色色综合网| 婷婷五月色综合香五月| 国产精产国品一二三在观看| 日本99久久| 色综合激情| 亚洲日韩26uuu| 欧美99热| 97色色色| 在线观看av网站| 最新婷婷五月丁香| 淫五月停停| 亚洲中文字幕av| 久久电影4399| 亚洲人人操| 99re鈥哸鈥唙| 激情婷婷网| 婷婷 亚洲图片 丁香| 丁香五月天在线观看视频| 激情九九六月激情免费视频| 99色视| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 国产乱妇无乱码大黄AA片| 国产成人av在线播放| 这里只有精品在线观看视频| 五月丁香婷婷成人综合网| 五月丁香直播| 丁香五月成人论坛| 深夜婷婷五月丁香| 情欲综合网| 五月色综合网欧美网| 99色综合网| 色婷婷97| 开心婷婷中文字慕| 另类色网| 欧日韩AV| 丁香六月视频| 99性感视频| 五月丁香 啪啪啪| 午夜青草资源| 伊人狠狠操| 色噜噜在线| 久久99这里只有精品视频| 婷婷亚洲丁香五月| 五月天停停成人网| 99视频在线精品免费观看2| 欧洲免费视频色| 色情五月天A片| 五月天深爱激情网| 五月色综合网| 婷婷九月激情| 婷婷五月天激情网| 怡红院AV亚洲一区二区三区H | 无码AV大香线蕉伊人| 91日本在线免费| 欧美婷婷九月| 久色五月天| 狠狠色噜噜狠狠狠狠综合| 激情五月天色网站| 袁子仪视频观看| 天天爽日日搞| 四色AVwww| 婷婷五月天国产在线播放| 五月婷婷激情| 思思热精品在线视频| 日韩九区| www.第四色99| xxxx久| 99色在线视频观看| 久久婷婷五月综合激情国产| 99热在线这里| 97热视频| 影音先锋91网站在线观看| 99情色五月天| 色综合九九| 日日干日日色| 91综合视频在线| av激情在线| 91丨九色丨东北熟女| 9999热精品在线免费播放| 久久一二三视频| 天天操天天曰| 开心激情站| 九九无码AV| 日本123区日韩欧美不卡在线看| 99九九玖玖| 欧美成人无码一区二区三区| 婷婷丁香成人五月天| 久久九色| 色呦呦在线| 日韩在线9| 五月天自拍网| 99爽视频| 男人大jjc女人免费视频| 在线资源av-超碰中文在线-成人AV| 天天爽在线视频| 伊人久久五月天| 午夜成人天堂久久无码日韩久久| 国产精品久久久久久妇女6080| 碰碰碰碰碰99| 99热这里只有精品26| 婷婷五月天激情五月天| 九九热在线视频观看| 波多婷婷久久| 久久婷婷激情五月天一区二区| 996热re视频精品视频这里| 色婷婷激情| 日韩av变天就操逼不卡区| 超碰成人av| 天天综合亚洲综合| 亚洲视频99| 91九九精品| 第二色AⅤ| 五月丁香六月激情| 99久久婷婷国产综合精品电影| 9999三级片| 婷婷丁香五月综合网上| 国产精品99久久久久久久女警| 亚洲第一av| 天堂五月婷婷| 激情五月激情综合网| 五月婷婷日本| 天天摸色吧天天摸色吧| 国产精品99久久久久久久女警| 久久看婷婷| 天天xxxxxx天天日| 99久热| 婷婷爱爱蜜臀天天操| 五月婷婷久草在线视频综合| 色婷婷成人做爰A片免费看网站| 色欲九区| 免费看成人747474九号视频在线观看| 天堂二区| 丁香婷停五月激情综合深爱| 久久久久9| 人人性久久| 色爱五月天| 成人丁香婷婷| 成人网站免费sxj| 99爱精品| 人妻爽爽爽久久久久久久久| 狠狠色综合网| 久久精品4| 日日干日日| 久久性爱激情| 丁香五月香蕉| 五月天激情日色在线| 五月丁六月婷| 久爱综合| 巴基斯坦粉嫩无码视频| 在线播放 精品| 玖玖精品资源| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 欧美久久婷婷| 五月天久久www| WWW.桔色成人.COM| 另类图片激情五月| 色婷婷影| 日本欧美国产| 婷久久| 亚洲综合无码| 久久人人超| 久婷| 操操操操操操婷婷五月天| 色综合激情| 91九色在线| 淫视馆aV二区一区| 噜噜色五月| 日本狠狠干| 丁香五月激情站| 丰满少妇猛烈A片免费看观看| 亚洲色五月天是什么| 99性爱| 丁香5月综合啪啪| 成人国产欧美大片一区| 综合五月天婷婷色| 超碰AV成人| 69色婷婷| 丁香五月激情宗合网| 综合激情五月丁香| 激情宗合网激情五月天| 亚州激情九月| 五月婷婷六月天| 婷婷五月激情四月综合| 中文字幕日产A片在线看| 色久免费| 欧美熟妇一区二区三区| 99热日韩| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 九九色综合九九色| 免費亭亭成人| 七七久久综合| 丁香婷婷色| 色天天综合天天综合频道。| 成熟妇人A片免费看网站| 丁香九月婷婷色| www.99热这里精品| 色情五月综合婷婷| AV 3P| 色九九综合色| 日韩精品一区二区亚洲AV观看| 婷婷伊人中文字幕| 国产精品涩涩涩视频网站| 欧美va在线| 在线视频你懂得| 无码人妻精品一区二区蜜桃色欲| 韩国天天婷婷| 99色综合网| 99色嘟嘟精品网站| 99九九精品视频| 天天舔天天摸天天射| www狠狠爱com| 99视频只有精品| 操操操AV| 激情久久四色| 97婷婷在线视频| 五月天伊人| 五月激情站| 好吊操这里只有精品| 五月天激情黄色网址| 色情五月婷婷| 高清无码视频网址| 丁香五月第九色| 小骚穴电影| 被强行糟蹋的女人A片| 婷婷六月色开 | 婷婷五月激情在线| 东京热免费视频| 99久久天堂婷婷| 日本色五月| 欧美成人网99网| 日日干日日色| 超碰色综合| 99热在线极品极品| 91操人视频| 来吧亚洲综合网| 激情五月天之六月婷婷| 色情综合| 日本99视频精品免费播放| 丰满少妇猛烈A片免费看观看| 色婷婷激情四射视频| 亚洲99在线视频| 色婷婷AAA| 超碰精品国产首页| 丁香五月婷婷欧美性爱| 六月婷婷五月丁香| 啪啪综合| 五月天播播中文字幕| 丁香婷婷久久老熟女综合网| 久久婷婷五月综合97色一本| 五月天丁香久久| AV中文字幕夜夜操b天天摸bb | 五月婷婷激情色情网| 色色色国产| 日本一级大片| 丁香狠狠色婷婷久久无码视频| 婷婷五月色| 99热日韩| 99久久婷婷五月综合| 五月婷婷在线播放| 五月婷婷我| 国熟女视频| Av性爱网站| 97色婷婷| 婷婷伊人久久| 日韩成人AV在线播放| 99 福利 导航| 91精品视频男人的天堂| 丁香六月天婷婷色| 欧美特大片黄| 日韩性爱AV| 成人做爰高潮A片免费视频| www.五月丁香| aaaaa不卡| 婷婷五月天堂| 色色色婷婷五月天| a九九热www| 日本欧美国产| 99干日本| 97视频久久| 日本啪啪天堂| 99碰碰| 综合久久婷婷| 婷婷五月天激情网| wwwss在线观看| 99色色热热| 99这里有精品视频3| 激情AV| 五月婷五月婷伊人伊人五月婷| 九九久久精品| 久久色五月天| 七七九九色色| 婷婷五月天影视| 99只有这里是精品| 婷婷五月丁综合| 天天爽天天日天天舔| 拳交大逼| 操逼巨乳91| 婷婷综合五月天| 婷婷激情小说| BBWCUCKOLD精品熟妇| 亚洲精品又粗又大又爽A片| 日韩色色色色| 九九色情网五月天| 人妻激情视频| 综合婷婷久久| peg 2区三区四区的| 激情婷婷人妻| 五月丁香花婷婷玉莉AV| 五月婷婷av| 中美日韩成人在线| 五月婷婷久久综合| 九九九九精品精| 色婷婷av综合网| 97碰碰在线观看视频| 超碰在线人人| 久久狠狠高潮亚洲精品 天天摸夜夜摸夜夜狠狠摸 | 亚洲亚洲人成综合网络| 婷婷激情久久| 九九色区| 欧美欧盟性爱网| 91操操操| 五月天色区| 9+1视频网址| 色狠狠色噜噜AV天堂五区| 波多野结衣成人作品在线| 久久精品综合色| 国产日批视频免费播放| 婷婷香五月综合激情| 五月色综合| 天天操夜夜操| 久热精彩视频98| 国产在线黄色| 在线综合婷婷| 色综合伊人网| 婷婷五月天在线观看| 丁香六月丁香婷婷激情| 九九热99视频在线| 亚洲久久视频| 亚洲成人五月天| 99热免费在线| 国产精品成人网址| 久久停停超碰| 五月天色婷婷基地| 超碰九色| 综合福利网| 成人一级片| 激情婷婷五月色| 婷婷五月天Av| 婷婷五月天免费99| 色色免费网站| 色丁香六月| 五月婷婷色色| 天花AV无码| 26uuu色噜噜精品一区| 日本色狠狠| 少妇人妻人伦A片| 九九综合网色全集 | 狠狠色噜噜狠狠狠888| a网站免费观看| 狠狠情色| 激情黄色小说五月天| 91黄址| 天天操天天插天天射| 婷婷激情丁香五月婷婷激情丁香五月婷婷 | 丁香婷婷五月综合影院| 色色色色色色色色色999| 综合久| 久久综合五月婷婷| 深爱五月天天| 六月色婷婷| 亚洲性爱电影| 日本色色色| 亚洲妇女熟BBW| 色五月婷婷久久| 5五月综合网亚洲| 久婷婷视平| 色色色色色级无码| www.丁香五月| 婷婷丁香五月激情密臀av| 色婷婷AV五月天| 99re这里只有| 日韩成人中文字幕| 五月天狠狠网| 色婷插| 婷婷丁香久久五月综合| 国产成人99久久亚洲综合精品| 99免费在线视频| 日日艹思思热| 最近中文字幕2019视频1| 丁香五月综合高清在线| 久久 婷婷 五月天| av在线免费网站 | 99精品免费| 色色色欧美| 91久久综合亚洲鲁鲁五月天| 99天堂网最新| 久久这里有精品视频在线免费观看| 高清一区二区三区日本久| 91日韩在线| 九九碰九九爱97超| 99在线视频免费| 久久激情五月| 99综合成人视频在线观看 | 久99久视频精品| 婷婷五月天色网久| 欧美叉叉叉BBB网站| 久久久久久久久久久久久久人妻视频| 狠狠色婷婷| 啊v视频在线观看| 五月婷网| 亚洲综合99| 91久久婷婷| 婷婷久草| 色婷婷五月综合| 亚洲成人综合在线| 婷婷六月啪啪| 怕怕視頻| 五月丁香久久| 无码G高清天| 老师的粉嫩小又紧水又多A片视频| 97色色色视屏| 青青久在线视频免费观看| 五月天婷婷丁香花| 91打屁股免费看| 狠狠干伊人| 婷婷五月天av小说| 亚洲综合色色色| 丁香婷婷久久综合在线| 久久久久这里只有精品| 狠狠色网| 久久综合干| 五月天日日操夜夜操| 91丨九色丨东北熟女| 五月天婷综合网站| 亚洲国产精品VA在线看黑人| 久久精彩视频99| 99久久综合狠狠综合久久| 五月 婷婷 成人| 少妇婷婷五月天| 色综合久久88色综合天天99| 97人人操人人爽| 日本色婷婷| 丁香五月在线视频黑人| 玖玖玖婷婷婷| 五月丁香无码| 丁香五月婷婷婷婷欧美综合| JAPANRCEP老熟妇乱子伦视频 | 五月婷婷影院| 国产日产成人亚洲欧美国产VA| 狠狠色丁香| 草做免费在线观看| 久久在线大香蕉| 五月天婷婷激情小说电影| 5月丁香婷婷| 日本偷拍九九九| 97视频.干com| 久久亚洲婷婷综合色五月| 秋霞av吧| 综合XX网| 都市激情蜜桃婷婷五月天 | 天天操五月天| 九九热这里只有精品6| 丁香五月深爱五月婷婷| 吾爱AV导航| 免费视频99| 激情婷婷综合五月少妇| 夜夜资源站| 亚洲亚洲人成综合网络| 色婷婷五月天激情在线观看| 久久久久9999| 激情综合网激情五月丁香五月俺也去| 五月丁香六月激情| 亚洲激情淫网| 日韩 mm 不卡| 玖玖在线视频| 五月丁香在线国产 | 亚洲天堂久久| 99色最新在线视频网站| 久久久激情视频| 综合色色五月| 99精品自拍| 激情九九综合网| 超碰人人干| 性爱激情久久| 婷婷五月色天| 天天做好综合色| 麻豆科斗777| www.99热这里精品| 桃色成人网| WWW99热| 色综合日日| 久久五月视频| 狠狠色噜噜狠狠亚洲A∨| 色丁香五月婷婷| 天天透天天爱| 激情伍月 欧美| 久久99网址| 97操在线| 丁香五月手机在线| 96丁香六月婷婷蜜桃综合久久| 26UUU成人网| 色99自拍| 成人精品网站在线观看| 亚洲第一综合| 色欲丁香| 五月婷婷色五月| 森林影视大全,最好看的2019年视频 | 99热加勒比| 五月婷婷影视| 大香蕉九九| 大香蕉啪啪| 这里只有精品免费视频| 日本熟妇人妻在线| 亚洲性受XXXX五月丁香| 色99婷婷五月天| 婷婷久综合| 99色天堂| 婷婷五月天影院| 欧美五月婷婷| 狠色狠色综合久久| 久久五月人人摸| 99爱爱| 夜色综合网| 9色操| 丁香88AV五月婷婷| 婷色五月| 亚洲精品婷婷| 99久久久免费| 人妻视频在线| 婷婷社区五月天| 亚洲五月色| 久久AV电影| 99热在线中文字幕| 日日夜夜狠狠婷婷色| 婷婷五月激情网| 国产免费一区二区三州老师F1F1| 伊人久久大香线蕉AV最新午夜| 九九精品免费视频99| 全部老头和老太XXXXX| 天天日天天舔| 久久国产色| 婷婷五月成人| 色噜噜综合网| 色~性~乱~伦~噜| 婷婷色啪| 思思99久久| 伊人久久大香蕉网| 狠狠色噜噜狠狠| 激情六月婷婷| 99国产精品久久久久久久久久久| 天天草天天摸| AV性爱在线| 色综合色色| 激情丁香五月天| 久色五月丁香视频| www.夜夜操| 激情五月婷婷视频一区二区三区| 亚洲这里只有精品| 无码色色色| 久久激情天堂| 六月婷婷av| 日本99视频| 婷婷综合激情| 婷婷五月天成人网| 99在线精品免费视频| XX色综合| 99在线视频网址在线观看| 色情婷婷久久五月天| www.玖玖婷婷在线| 人人操操| 丁香激情网| 五月婷婷激情刺激| 99热精品在线播放观看| 婷婷五月天亚洲天堂| 色了色综合| 国产精品五月天婷婷| www.99热视频| 九九99九九99偷拍视频免费看| www.色99| 丁香五月天视频| 懂色av粉嫩av蜜臀av| 国产综合A片| 五月天天综合| 网色99| 欧美大奶熟女噜噜噜噜| 丁香五月天欧美| 岛国AV网站| 亚洲婷婷基地| 五月婷在线| 1024在线一区| 久操人| 丁香五月激情婷婷| 天天肏天天插| 2025色婷婷| 日韩AV片| 五月丁香六月激情| 91日本在线免费| 久久久性爱视频| 99高级会所久久| 五月综合婷婷久久在线| 可以看的AV| 婷婷啪啪| 99综合五月免费视频色婷婷| 丁香视频| 久久五月六月| 婷婷五月天激情在线| 久久九区| 天天射天天插天天干| 伊人九九热| 久热这里这里有精品| 伊人五月成人| 中文字幕婷婷| 婷婷五月激情四射手| 91肏| 少妇口诉沐足视频播放器网址| 婷婷五月天六月丁香| 九九色婷婷| 九月婷婷激情久久| 九玖视频这里只有精品| 五月天色视频| 激情九月婷婷| 午夜微拍福利| 日本九九九九| 六月丁香成人网| 大香蕉啪啪啪| 热99热久| 激情 五月 婷婷 丁香| 情久久综合五月天| 婷婷丁香六月| 久热久操久热久草国产91| 久久综合网免费视频| 五月天网站免费欧美| 激情99| 亚洲黄色av网站| 妻久久久久| 欧洲一区二区| 伊人爱爱日本| 亚洲精品色色| 国产日韩欧美性爱| 亚洲九N| 九月激情网| 丁香五月六月婷婷怡红院| 五月天婷婷基地| 婷婷丁香社区| 日逼免费视频 | 色五月激情婷婷| 婷婷五月在线| 久久五月天黄色五月天色网址| 人人操AV| 一区无码| 我爱宗和色| 日日爽日日| 丁香密臀AV激情网| 玖玖福利视频资源| 亚洲精品视频在线| 天天久综合网永久入口17v| 大陆肏屄视频| 麻豆WWWCOM内射软件| 色色五月婷| 国产精产国品一二三在观看| 六月丁香五月天| 开心五月深爱五月| 日本三级毛片| 久久精品视频9| 丰满女老板BD高清A片| 色射影院| 日韩一级网站| 免费看片在线观看| 丁香婷婷色五月合集| 99热啪啪| 亚洲色五月| www.99热在线观看| 亚洲AV电影美洲AV电影| 色宗合久久五月婷婷| 狠狠穞A片一區二區三區| 97丁香婷婷| 99精品热| 影音先锋AV男人站| 婷婷五月色亚洲| 超级碰碰97在线| 高清激情av在线观看| 亚洲六月婷婷| 欧美婷婷| 人妻人人操| 婷婷午夜精品久久久| 免费看成人747474九号视频在线观看| 玖玖综合色区在线观看| 五月丁香六月合| 成人中文网| 插插插色综合网| 伊人无码高清| 日韩狠狠色婷婷| 99精品在线| 热99热| 天天天天操| 五月婷婷成人网首页| 亚洲爆乳无码精品AAA片蜜桃| 色婷婷色五月另类综合| 天天操天天干天天日| 激情婷婷丁香五月天小说| 狠狠色婷婷7777久| 噜噜噜狠狠色综合| 精品乱码久久久久| 婷婷丁香五月天哟啪| 99精品视频网| 婷婷基地成人五月天| 五月丁香| 五月婷成人网| 91|疯狂丨高潮丨对白| 色色婷婷综合网| tingtingseav| 情久久综合五月天| 六月丁香激情| 99热综合在线| 婷婷综合五月| 亚洲精品色| 五月色 亚洲| 婷婷丁香激情五月天色色色| 日日夜夜天天爽| 欧美久久久久久久久中文字幕| 色五月五月婷婷| 日韩av在线电影| 狠狠操狠狠插| 五月天色综合服务平台| 色色色色色色综合网| 丁香五月六月婷婷殴美综合| 天啪色| 日韩啪啪视频| 最新午夜理论片| 95精品区一区二| 79精品视频| 97人妻碰碰碰久久香蕉| av狠狠操| 五月丁香婷婷人体| www.九月婷婷丁香.com| 久久免费操| 玖玖伦理电影| 99日热在线视频| 丁香婷婷激情| 亚洲成人网无码| 丁香综合日产精品久久| 婷婷婷婷婷开心无码播放| 97精品在线| 五月天激情小说| 日本社区五月天激情| 玖玖在线视| 亚洲精品字幕在线观看| 五月开心深爱激情网| 狠狠色97| 人人爱操| 五月天综合影院| 超碰在线免费| 精品人妻午夜一区二区三区四区| 岛国AV网| 五月丁香美女视频| 影音先锋五月婷婷| 色99热| 综合在线丁香五月| 五月天婷综合| 天天日天天舔| 久久激情五月| 99久热这里有精品| 九九精品少妇| 五月激情天| 精品五月天| 操操操操操操婷婷五月天| 九久久九精品视频| 亚洲成人影视在线观看| 五月婷婷之六月丁香| 日本成人综合| 色色欧美色色| 五月丁香婷婷色色| 婷婷色网站| 天天人人综合| 丁香视频|