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

ARTICLE DETAIL

資訊詳情

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

JVM Class文件深入解析:從字節(jié)碼結(jié)構(gòu)到注解丟失與Metaspace調(diào)優(yōu)

JVM Class文件深入解析:從字節(jié)碼結(jié)構(gòu)到注解丟失與Metaspace調(diào)優(yōu) 寫這篇東西的起因是前兩天又有同事跑過來問我“我寫了個注解結(jié)果反射的時候拿不到Class文件里也沒看到會不會是JVM把它吃了”這個問題看著小但牽出來的鏈路特別長Java源碼怎么變成Class文件、注解在字節(jié)碼里怎么存、類加載的時候怎么讀。我索性把Class文件這條線完整地梳理了一遍這也是我這么多年排查JVM問題的重要錨點。如果你剛開始學JVM或者寫了一段時間Java但沒細看.class里到底是什么再或者你在做Agent、字節(jié)碼增強、線上問題排查這類偏底層的工作這篇內(nèi)容都值得過一遍。我不會只講概念會直接掰開一個Class文件逐字節(jié)看也會把注解丟失、版本不兼容、Metaspace膨脹這類實戰(zhàn)坑講明白。1. 先搞清楚Class文件在JVM技術(shù)棧里的真正位置1.1 它是JVM的“通用語言”不是Java的專屬產(chǎn)物很多人有個錯覺覺得Class文件是Java編譯出來的所以是Java的東西。這個理解不完整。Class文件是JVM規(guī)范里定義的一種二進制格式JVM只認得這個格式誰編譯出來的它不管。Java、Kotlin、Groovy、Scala、Clojure都能編譯成Class文件。你甚至可以用文本編輯器手寫字節(jié)碼只要格式合法JVM一樣認。打個不全但貼切的比方Class文件像是JVM世界的“普通話”不同語言就是各地的方言。你寫Java、寫Kotlin本質(zhì)都是把自己的源碼“翻譯”成方言再統(tǒng)一整成普通話讓JVM這個“聽眾”聽懂。這也是為什么Kotlin能和Java無縫互調(diào)因為它們最終都落在同一個字節(jié)碼世界里。也正因如此想真正理解JVM繞開Class文件是不現(xiàn)實的。類加載、動態(tài)代理、AOP、熱部署、Agent這些看起來高級的能力底層全是在和Class文件打交道。1.2 JVM、JRE、JDK的關(guān)系幾句話講透網(wǎng)上天天有面試題問JVM和JRE的區(qū)別我發(fā)現(xiàn)很多人背了定義但沒串起來。前面已經(jīng)提了幾個熱詞這里就得把關(guān)系理順。JDK是Java Development Kit是給開發(fā)者用的完整工具包里面包含了編譯工具javac、打包工具jar、診斷工具jstack/jmap/jstat這些還包含一個JRE。JRE是Java Runtime Environment是給運行Java程序用的環(huán)境它里面包含JVM和Java核心類庫。JVM是Java Virtual Machine是真正執(zhí)行程序的那部分人話說是“跑字節(jié)碼的虛擬機”。關(guān)鍵點在于Class文件不是給操作系統(tǒng)直接執(zhí)行的而是給JVM執(zhí)行的。跨平臺靠的是JVM對Class文件的統(tǒng)一解釋不同操作系統(tǒng)裝不同的JVMClass文件不用變。這里有個經(jīng)常被誤解的點Java跨平臺不是“源碼跨平臺”源碼在哪都得先編譯成Class真正跨平臺的是這個統(tǒng)一的字節(jié)碼產(chǎn)物。1.3 JVM編譯器有幾種別再說“編譯器只有javac”熱詞里有“java jvm編譯器有幾種”這問題看著基礎(chǔ)其實問得很細。如果只答“javac”面試官容易覺得你停留在表面。實際上一套完整的Java技術(shù)棧里和編譯相關(guān)的行為至少有三類。第一類是前端編譯器最常見的就是javac也把Eclipse JDT里的ECJ算進去。它的職責很明確把.java源碼翻譯成.class文件做語法檢查、注解處理、生成字節(jié)碼。這一階段產(chǎn)出的是Class文件。第二類是即時編譯器也就是JIT運行期在JVM內(nèi)部工作的C1、C2還有Graal JIT。它們負責把熱點方法的字節(jié)碼進一步編譯成機器碼提升運行速度。第三類是提前編譯器AOT比如jaotc可以把Class文件或源碼直接編譯成原生二進制跳過運行期解釋或JIT編譯。理解這個分類Class文件的位置就清晰了。javac生產(chǎn)它JIT消費它AOT甚至能繞開它。你問“JVM編譯器有幾種”時如果能把這三類以及它們和Class文件的關(guān)系講清楚比死記答案有說服力得多。1.4 用十六進制認識一下CAFEBABE任何Class文件的頭4個字節(jié)一定是十六進制的CAFEBABE也就是咖啡寶貝。這是Class文件的魔數(shù)JVM用它來快速判斷文件是不是一個合格的Class文件。你隨便找一個.class文件用xxd或者Hex Fiend打開都能看到這個標志。緊接著是次版本號和主版本號各占2個字節(jié)。主版本號決定了這個Class文件是給哪個JDK版本用的52對應(yīng)Java 855對應(yīng)Java 1161對應(yīng)Java 1765對應(yīng)Java 21。所以“UnsupportedClassVersionError”本質(zhì)上就是版本號不匹配你用一個老JVM去加載一個高版本編譯出來的Class文件JVM一看版本號直接拒絕了。看十六進制只是第一步我得先說明一件事Class文件里存的所有字符串、引用、方法描述符都不是直接寫明文而是通過常量池來管理的。這個結(jié)構(gòu)是整個Class文件的靈魂我們下一步把它剝開。2. 逐字節(jié)看Class文件常量池才是真正的主角2.1 Class文件總體結(jié)構(gòu)一張表說清楚Class文件整體是一張線性的二進制表沒有分隔符靠固定的順序和每一個數(shù)據(jù)項的長度來確定邊界。作為參考它的頂層結(jié)構(gòu)大概是這樣的。數(shù)據(jù)項說明magic魔數(shù)固定CAFEBABEminor_version / major_version次版本號、主版本號決定JDK兼容版本constant_pool_count / constant_pool常量池數(shù)量與內(nèi)容access_flags類的訪問標志public/final/abstract等this_class / super_class當前類名索引、父類名索引interfaces_count / interfaces接口數(shù)量和索引列表fields_count / fields字段數(shù)量和字段表methods_count / methods方法數(shù)量和方法表attributes_count / attributes屬性數(shù)量和屬性表字段表里每一項都包含訪問標志、簡單名稱索引、描述符索引和屬性表方法表同理但方法表里的屬性表里通常藏著Code屬性這才是真正干活的字節(jié)碼指令。2.2 常量池是“數(shù)據(jù)倉庫”所有引用都靠下標常量池是Class文件里體量最大、也最容易被忽略的部分。Java源碼里出現(xiàn)的類名、方法名、字段名、字符串字面量、訪問修飾符全都被收進常量池統(tǒng)一編號。比如方法里要調(diào)用System.out.printlnClass文件不會直接把“System.out.println”這串字符寫進Code里而是存一個對常量池項的引用運行期再解析。先后我一起看一個簡化過的例子。比如一個被調(diào)用方法是print(String)V在常量池里你會看到類似這種結(jié)構(gòu)Utf8類型的“print”表示方法名Utf8類型的“(Ljava/lang/String;)V”表示方法描述符NameAndType指向這兩個Utf8Methodref再由類名和NameAndType組合起來。任何一個Class文件里這個鏈條無處不在。理解它你再看JVM規(guī)范里關(guān)于Methodref、Fieldref、InterfaceMethodref這些項就不會暈了。這也是為什么javap反編譯時滿屏的“#2 #5 #12”那些數(shù)字不是隨機的每個數(shù)字都對應(yīng)常量池里的一個槽位。我在實際排查中發(fā)現(xiàn)很多人看常量池覺得枯燥其實是沒把它當“倉庫”。你只要知道一句口訣就夠了在Class文件里凡是需要引用的名字最終都要落到常量池的一個下標上。常量池看懂Class文件的結(jié)構(gòu)就懂了一大半。2.3 訪問標志、字段表、方法表與Code屬性類的訪問標志由2字節(jié)的位掩碼構(gòu)成ACC_PUBLIC對應(yīng)的值是0x0001ACC_FINAL是0x0010ACC_ABSTRACT是0x0400ACC_SYNTHETIC是0x1000。位掩碼的意思就是多個修飾符疊加時直接把各數(shù)值按位或。比如一個public final類訪問標志就是0x0001 | 0x0010 0x0011。方法表里的Code屬性值得特別注意。它里面存字節(jié)碼指令、異常表、行號表、局部變量表。行號表表示哪一行Java源碼對應(yīng)哪些字節(jié)碼偏移這是異常堆棧能顯示“某某類第多少行”的原因。局部變量表則是存方法參數(shù)和局部變量的槽位描述。JIT做各種優(yōu)化時大量依賴這些附加信息。我見過不少人在分析性能問題時盯著系統(tǒng)調(diào)用的耗時看半天忘了先看方法的字節(jié)碼長什么樣。用javap -c就能把方法展開成一條條字節(jié)碼指令。字節(jié)碼是JVM執(zhí)行的中間形態(tài)它不像匯編那么底層但也不像Java那么抽象??炊憔湍芑卮鸷芏唷斑@段代碼編譯后到底執(zhí)行了什么”的疑問。2.4 一條命令把Class文件“扒光”最常用也最推薦的工具是javap它是JDK自帶的Class文件反編譯工具。想快速看一個Class文件整體信息我第一次用時會執(zhí)行javap -v -p -c -s YourClass.class-v表示verbose打印堆棧、本地變量和常量池的詳細信息-p表示顯示私有成員-c表示對方法進行反匯編輸出字節(jié)碼-s表示打印方法簽名和字段簽名。如果想要更原始的信息可以配合xxd先看二進制再用javap對照。實際經(jīng)驗是先跑javap -v看版本號和常量池確認這個文件是不是你預期那個版本編譯的再跑javap -c看方法體確認某個邏輯有沒有被編譯器做掉或做成了什么樣子。對一些“明明寫了代碼但運行行為不對”的狀況這一步經(jīng)常能救命。3. 從加載到內(nèi)存模型Class文件進入JVM之后發(fā)生了什么3.1 類加載的五個階段與雙親委派Class文件在磁盤上只是文件真正跑起來前JVM要把它加載進來。類加載的生命周期大致分成加載、驗證、準備、解析、初始化五個階段。加載階段JVM按全限定名讀入Class文件二進制流把它轉(zhuǎn)換成方法區(qū)里的運行時數(shù)據(jù)結(jié)構(gòu)并在堆里生成一個Class對象作為訪問入口。驗證階段檢查格式、語義、字節(jié)碼合法性這是CAFEBABE魔數(shù)的意義所在防止非法文件混進來。準備階段給靜態(tài)變量分配內(nèi)存并設(shè)置零值。解析階段把常量池里的符號引用替換成直接引用。初始化階段才真正執(zhí)行靜態(tài)初始化器和靜態(tài)字段賦值。這里繞不開雙親委派。JVM的類加載器有層級關(guān)系啟動類加載器Bootstrap負責JDK內(nèi)部核心類平臺類加載器Platform負責模塊化類應(yīng)用類加載器Application負責classpath下的類。一個類要被加載時會先讓父加載器嘗試父親加載不了才輪到兒子。這樣做的核心價值有兩個一是避免核心類被應(yīng)用層的同名類替換二是保證同一個類在JVM里只有一個加載結(jié)果。如果你在做框架開發(fā)想打破雙親委派那就得自己繼承ClassLoader并重寫loadClass但這是反模式一般不建議在業(yè)務(wù)代碼里瞎搞。3.2 Class對象在JVM內(nèi)存模型里的落點熱詞“jvm內(nèi)存模型”經(jīng)常被討論但很多人把Java內(nèi)存模型JMM和JVM運行時內(nèi)存區(qū)混在一起。JMM是抽象并發(fā)語義討論的是線程與主內(nèi)存間的可見性規(guī)則JVM運行時內(nèi)存區(qū)是具體存儲區(qū)域比如堆、虛擬機棧、方法區(qū)。這里要講的是后者。Class文件被加載之后它的元數(shù)據(jù)——方法信息、字段信息、常量池解析結(jié)果、注解——是放在方法區(qū)里的。JDK 8之后方法區(qū)的落地實現(xiàn)是Metaspace也就是元空間它使用本地內(nèi)存不再像以前PermGen那樣有固定的默認上限。每一個被加載的類都會在堆里對應(yīng)一個java.lang.Class對象這個對象是訪問該類的元信息的“門把手”。這里有一個很微妙的地方你在代碼里寫“User.class”拿到的那個Class對象本身是在堆里的一個普通對象但它背后代表的類元數(shù)據(jù)卻在Metaspace里。對象頭里還有一個指向Klass的引用用來在運行時快速找到這個對象的類型信息。這也是為什么你能對任意對象調(diào)用getClass()JVM得靠對象頭里那個Klass指針去定位到Class文件解析出來的元數(shù)據(jù)。3.3 Kotlin寫Java Agent從Class文件到字節(jié)碼增強熱詞里有一條“Kotlin 快速上手在 JVM 上跑通一個 agent”這個場景特別適合用來理解Class文件的“活學活用”。所謂Java Agent本質(zhì)上就是在JVM啟動之后、正式類加載前后插一腳通過Instrumentation接口對Class文件做轉(zhuǎn)換。這個轉(zhuǎn)換不是改源碼而是直接改字節(jié)碼。寫Agent的思路大概是這樣的打包時在MANIFEST.MF里聲明Premain-Class指向一個包含premain方法的主類premain方法里拿到Instrumentation實例調(diào)用addTransformer注冊一個轉(zhuǎn)換器ClassFileTransformer.transform方法會在每個類被加載時收到原始字節(jié)數(shù)組你在這里面修改后返回新的字節(jié)數(shù)組。Kotlin寫這個為什么方便因為Kotlin編譯出來的同樣是標準Class文件方法、注解、屬性映射邏輯都還能保留。你可以用data class去定義Agent配置用協(xié)程去處理耗時邏輯最后打包成jar掛-javaagent啟動。由于最終產(chǎn)物是字節(jié)碼JVM根本不在乎你是用Java還是Kotlin寫的。真正的技術(shù)點在transform里怎么做字節(jié)碼增強。最常用的是ASM庫它是直接操作節(jié)點樹和指令的性能好但API難用。另外一個選擇是ByteBuddy它在ASM之上做了封裝寫起來舒服很多。舉個例子追蹤某個方法耗時用ByteBuddy的Advice機制在進入和退出兩個切點上織入System.nanoTime差值的邏輯幾行就能搞定。我踩過的一個坑是要修改的類正在被當前ClassLoader加載過程中transform里如果再去觸發(fā)其他類的加載可能死鎖。經(jīng)驗做法是做好類名過濾無關(guān)緊要的類直接返回null或用ClassReader快速跳過。還要注意ClassWriter的flags如果用COMPUTE_FRAMES能自動計算棧幀但性能會慢不少如果你明確知道字節(jié)碼不會改變棧幀結(jié)構(gòu)可以用COMPUTE_MAXS能省很多開銷。所以Agent技術(shù)并不神秘本質(zhì)就是“類加載前把Class文件改寫一下”。理解這一點你再看Arthas、SkyWalking這類工具的底層原理會突然通透很多。它們做的就是字節(jié)碼注入只是做進了更完善的產(chǎn)品里。3.4 版本窗口UnsupportedClassVersionError是怎么來的“編譯的時候好好跑起來就報UnsupportedClassVersionError”這種問題新人基本都會遇到一次。本質(zhì)上就是Class文件的主版本號高于當前JVM支持的版本。Java官方保持向后兼容高版本JVM能讀低版本Class文件但反過來不行老JVM沒法理解新版Class文件里的新字節(jié)碼指令。比如你用JDK 17的javac編譯默認主版本號就是61。把它扔到JDK 8的服務(wù)器上跑JVM版本號只支持52一看61大于52直接拒絕加載。解決辦法有幾種。第一降低編譯版本但注意-source/-target只控制語法和字節(jié)碼版本不能阻止你用到高版本JDK的新API后者照樣會在運行期報NoSuchMethodError。第二用--release參數(shù)比如javac --release 8它會同時限制API使用和版本輸出是更安全的選擇。第三升級線上JDK版本一勞永逸。排查時最快的方式是跑一句命令javap -verbose YourClass.class | grep major看到主版本號再對照當前JVM版本問題定位就完成了。4. 實戰(zhàn)踩坑注解丟失、字節(jié)碼修改與Class文件異常排查4.1 Override注解“丟”了先分清三種Retention熱詞里有一條“class文件overrider注解為什么會丟失”我非常確定提問者說的就是Override。先說結(jié)論Override注解的Retention是SOURCE它本來就不會進Class文件所以不是“丟了”是人家壓根不打算留。Java注解的保留策略有三種。SOURCE的注解只存在于源碼里編譯時就被丟棄典型代表就是Override和SuppressWarnings它們只是給編譯器看的提示。CLASS的注解會被寫進Class文件的注解屬性里但JVM運行時不加載它們默認的Retention就是CLASS這也是很多自定義注解“編譯在但運行時反射拿不到”的原因。RUNTIME的注解不僅進Class文件還會在運行期被JVM讀取反射API能拿到比如Transactional、GetMapping這些。所以排查自定義注解反射拿不到的時候第一件事就是查注解定義里的Retention。如果你寫的是Retention(RetentionPolicy.CLASS)那在運行時getAnnotation是拿不到的要改成RUNTIME。4.2 另一個常見元兇注解Target/Inherited與Kotlin use-site target除了Retention還有兩個很容易忽略的點。一個是Inherited。這個注解只對“類上的注解”的繼承起作用方法、字段、參數(shù)上的注解即使加了Inherited也不隨繼承傳遞。很多人以為父類方法上的注解子類重寫后還會在反射里出現(xiàn)其實不會。Spring的Transactional之所以能在子類方法上生效是因為Spring走了代理和AOP它讀的是目標方法注解并自己做了傳播處理跟JVM原生注解繼承是兩回事。另一個是Kotlin的use-site target。Kotlin代碼里的annotation寫在屬性上編譯成Class文件時這個注解到底落在哪個目標上取決于你有沒有指定use-site target。想讓它成為字段注解要寫field:NotNull若寫get:NotNull就成了getter方法上的注解。如果你在Kotlin和Java混編的項目里做反射很容易因為use-site沒指定而對不上目標表現(xiàn)就是“Java那邊反射明明該看到卻沒有”。這個坑我在跨語言工具里踩過不止一次排查方式永遠是反編譯看字節(jié)碼里的RuntimeVisibleAnnotations到底掛在哪個位置。4.3 字節(jié)碼修改工具鏈導致的“隱性丟注解”還有一種注解丟失既不怪Retention也不怪繼承而是字節(jié)碼處理工具在改寫Class文件時把注解洗掉了?;煜ぞ?、打包工具、字節(jié)碼AOP框架都可能干這種事。ProGuard/R8在做代碼壓縮和混淆時默認會丟棄注解信息。Spring框架大量使用注解驅(qū)動如果沒保注解啟動時一堆Autowired失效這是非常經(jīng)典的線上事故。解決方案是在混淆規(guī)則里寫上類似-keepattributesAnnotation之類的指令。ASM做類轉(zhuǎn)換時如果你只想改方法體但使用了自定義的ClassVisitor重寫visitMethod時忘了調(diào)用visitAnnotation把注解Visitor轉(zhuǎn)發(fā)出去注解信息也會悄悄消失。一個實際建議在改造Class文件的管道里最后一步加上“注解完整性校驗”。你可以先跑一個不改動的控制組用JDK自帶的能力或ASM的CheckClassAdapter做一次掃描對比改造前后的RuntimeVisibleAnnotations數(shù)量。我在做一個跨JVM語言的Agent時就是這么抓到丟注解問題的不是源碼層丟了是ASM的ClassNode處理路徑上有一段沒有遍歷AnnotationNode。4.4 常見Class文件相關(guān)異常速查表做應(yīng)用排障多了會發(fā)現(xiàn)Class文件相關(guān)的異常就那么幾個特征是重復且好認。我總結(jié)成了一張速查表。異常/錯誤典型原因排查方向ClassNotFoundException運行時找不到目標類檢查classpath是否完整、依賴是否缺失NoClassDefFoundError類存在但初始化失敗或依賴類缺失往前翻日志找Caused by多數(shù)是靜態(tài)初始化異常UnsupportedClassVersionErrorClass版本高于JVM版本javap看major版本調(diào)整編譯版本或JVMClassFormatErrorClass文件結(jié)構(gòu)非法確認文件有沒有被截斷、有沒有被錯誤處理VerifyError字節(jié)碼驗證失敗棧幀或類型不兼容多發(fā)生在字節(jié)碼增強代理類時檢查ASM轉(zhuǎn)換邏輯LinkageError類的重復加載或簽名不一致檢查依賴版本沖突是否多個ClassLoader加載同名類這里要特別提一下NoClassDefFoundError和ClassNotFoundException的區(qū)別。后者是找不到類前者是類其實存在但加載過程中因為某個依賴缺失或靜態(tài)初始化拋了異常導致JVM認為這個類不可用。排查NoClassDefFoundError時不能只看這一行一定要往前翻真正的Root Cause往往在第一條異常鏈里。5. JVM調(diào)優(yōu)與Class數(shù)量治理Metaspace才是隱藏焦點5.1 Class數(shù)量膨脹為什么危險很多人聊JVM調(diào)優(yōu)開口就是堆大小、GC策略但很少有人主動提Metaspace。實際上Class文件的加載結(jié)果就是Metaspace里的類元數(shù)據(jù)。如果一個應(yīng)用在運行期不斷創(chuàng)建新的類Metaspace就會持續(xù)增長。舊時代的PermGen空間溢出是著名的OOM來源到了JDK 8之后這個坑變成Metaspace OOM。哪些操作會“造類”JDK動態(tài)代理、CGLIB子類代理、熱部署框架、Groovy等動態(tài)腳本引擎、大量lambda捕獲外部變量導致動態(tài)類生成還有Spring這類依賴CGLIB做增強的框架。腳本引擎按次執(zhí)行可能每次都生成新類如果調(diào)用頻率高且不清理Metaspace漲得飛快。判斷是否是因為Class數(shù)量過多導致Metaspace緊張一個快捷方法是用jstat看一眼Metaspace的增長趨勢同時通過GC日志對比類加載數(shù)。如果加載數(shù)量飆升、卸載數(shù)量幾乎為零基本就是“只進不出”離OOM不遠了。5.2 動態(tài)類生成CGLIB、JDK代理與Kotlin編譯常見生成點先說JDK動態(tài)代理。它要求目標類實現(xiàn)接口運行時在內(nèi)存里生成一個實現(xiàn)該接口的Proxy類這個生成類是一個全新Class繼承自java.lang.reflect.Proxy。CGLIB則是生成目標類的子類靠繼承和覆寫方法實現(xiàn)增強所以目標類不能被final修飾。這些代理類本身也是標準Class文件你可以通過在啟動參數(shù)里加一個JVM開關(guān)把生成的類落盤JDK代理類可以用-Dsun.misc.ProxyGenerator.saveGeneratedFilestrue保存到磁盤CGLIB生成類則可以通過-Dcglib.debugLocation目錄來輸出再用javap或IDEA反編譯。做框架或插件開發(fā)時看這些生成類和看業(yè)務(wù)Class一樣重要。Kotlin這邊也有生成點。頂層函數(shù)會被編譯成以文件名加Kt后綴命名的類data class會生成componentN、copy、equals/hashCode/toStringlambda也會被編譯成Function接口的實現(xiàn)類。你要是發(fā)現(xiàn)某個應(yīng)用里Class數(shù)量多到一個詭異的值先別急著慌很可能是Kotlin的語法糖在生成輔助類這本身不算問題但反過來也說明Class數(shù)量會隨著這類語言特性明顯上升。5.3 調(diào)參方向與驗證手段針對MetaspaceJVM提供幾個常用參數(shù)。第一個是-XX:MetaspaceSize它表示Metaspace首次觸發(fā)GC的閾值不是上限。第二個是-XX:MaxMetaspaceSize這才是硬上限默認情況下受本地內(nèi)存限制你可以顯式設(shè)置一個值保護進程。第三個是-XX:MaxMetaspaceFreeRatio控制GC后Metaspace空閑容量百分比。排查時我會配合這幾個命令jstat -gc pid看M列和MC列的數(shù)值變化。MC表示當前Metaspace容量MU表示已使用量。再配合jcmd pid VM.native_memory加上JVM參數(shù)-XX:NativeMemoryTrackingsummary能看到Metaspace的本地內(nèi)存占用明細。如果懷疑是動態(tài)類生成直接加-XX:TraceClassLoading和-XX:TraceClassUnloading日志會刷出每個被加載或卸載的類重定向到文件里再按類名前綴統(tǒng)計就能揪出誰在瘋狂造類。我實際碰過一個案例一個平臺不停創(chuàng)建CGLIB代理類給遠程RPC做攔截運行兩天后Metaspace OOM。當時就是開著-XX:TraceClassLoading把日志存下來發(fā)現(xiàn)同一個業(yè)務(wù)接口的代理類被重復創(chuàng)建了數(shù)萬個原因是上層做緩存的時候key沒寫全每次調(diào)用都認為“代理不存在”然后重新生成。這只是治理Class數(shù)量膨脹的一個常見例子。5.4 面試官常問的JVM/Class文件進階題與我的回答思路熱詞里有“jvm面試題”這塊正好把這篇文章的知識點串起來。以下這幾個問題我經(jīng)常在面工程師時問也建議自查。先看“Class文件里有注解嗎”“注解存哪個段”。這兩個是結(jié)構(gòu)題考的是常量池、屬性表以及RuntimeVisibleAnnotations這類屬性。答出來說明看過Class文件答不出來大概率是背了書沒實操過。再看“類加載過程哪個階段會出錯”“一個類被兩個ClassLoader加載算兩個類嗎”。后者尤其刁鉆答案是類由類全限定名和定義加載器共同標識同一個Class文件被兩個不同加載器加載生成的兩個Class對象不相等instanceof校驗也可能過不去。這是OSGi、插件化框架的底層難題。再看“為什么高版本JDK不能運行低版本編譯的Class文件反而沒問題”“如果JDK 17編譯的Class在JDK 8上跑會怎樣”。這是版本兼容題考察Class版本號以及向后兼容的設(shè)計。最后是“Metaspace存什么”“為什么JDK 8要移除PermGen”。答到Metaspace存類元數(shù)據(jù)、運行時常量池用本地內(nèi)存替代固定容量避免因為固定上限導致OOM基本就能過關(guān)。最好再補一句實際調(diào)優(yōu)經(jīng)驗比如設(shè)置MaxMetaspaceSize不要過小否則正常應(yīng)用一天到晚在GC。我在實際篩人時最怕聽到“Class文件就是個字節(jié)碼文件”這種一句到底的答案。真正動手拆過Class、做過字節(jié)碼增強、處理過Metaspace問題的人描述同一個東西時是會有細節(jié)的。這也是這篇東西存在的意義把JVM這條線上的一個重要零件拆到能落地為止。后面如果再有人問我“注解為什么丟了”我不會再直接給答案而是讓他先跑一句javap -v看清楚Class文件里到底有什么再反推結(jié)論。這個習慣比記住任何一張表都有用。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美色图97| 白丝jkav| 日韩中文字幕2020| 操逼逼一区视频| 志村玲子视频一区二区| 亚州欧美综合| 美女人妻色网站| 国产60页| 啊啊啊啊在线观看网址| 欧美在线官网| 在线观看无码三级少妇| 男人的天堂无码| 日本天堂网| 美女视频尤物网在线看| 男人的天堂VA| 2026国产精品视频| 私色综合网| 影音先锋日本乱伦| 欧洲一区二区| 欧美日韩淫加| 超碰免费在线| 91精品微拍福利| 大香蕉琪琪日本女优不卡| 欧美九9 9 9| 操B视频日韩无码| 久久久久99精品成人片蜜臀| 久久亚洲日韩国产欧| 五月婷婷深深爱| 亚洲美女av无码| 很狠操| 欧美72网页| 美女黄码视频午夜| 日韩中文字幕av在线播放| 97视频在线免费看| 内射日韩大臀美女| 自拍亚洲综合| 中国小夫妻勾搭露脸淫荡对白 | 自拍丝袜美腿人妻| 天天插天天射| 亚州精人品大香蕉| 97大色网| 999九九九九国产动| 日本色色网| 黑人免费福利视频| 极品少妇久久久久| 99热国产精品| 日本成a人v网站在线观看| 91天天综合日韩欧美| 欧美人妻色| 亚洲色图a| 国产SV一线| 天天享受天天看| 少妇69中文| 97天天操天天干| 看日韩美女二区三区免费操逼视频| 在线可观看的黄色网址| 中文字幕一二区二三区人妻专区| 亚洲丝袜诱惑| 啊啊啊爽爽| 无码人妻1727| 亚洲久久久久| 国产一区在线免费播放| 自拍鲍鱼一区在线高清观看免费| 一级AV性爱| 无码高清国产AV| 中文字幕久久婷婷丁香五月天 | 国产情侣自拍在线播放| 国产91精品福利在线| 在线日韩日本亚洲国产| 亚洲成aⅴ人片不卡无码| 啪啪啪东京| 综合久久六月久久婷婷| 97精品熟女少妇一区| 99婷婷一区二区| 亚欧性爱无码| 性一交一乱一交A片久久四色| 天天做日日做天天欢。| 香一区二区三区| 色色色网站| 歐美一級亂黃99在綫精品| 亚洲极品| 青草一区二区| 99久久久无码国产精品性啊聊| 69少妇一区二区| 国产精品一区二区 尿失禁| 激情久久av一区av二区av| 99久久精品国产高潮| 蜜臀久久一区二区| 国产suv精品一区二六| 超碰97在线中文| 东京热91| 男人的天堂 在线一区| 亚洲少妇综合在线播放| 国产97色在线| 午夜AV污污污| 翔田千里爆乳巨臀无码| 操操操日本的逼| 99久久e免费热视| 俺去久久| 黄片视频观看| 欧美1727免费观看视频| 男人天堂久久精品不卡| 无码人妻精品一区二区中文| www.97在线| 91丝袜人妻| 日韩无码a片| 综合激情97 | 激情婷婷综合久久| 蜜臀Av一区二区三区| 亚州五月| 亚洲 欧美 手机在线观看| 亚洲成人网站在线观看| 干B| 欧美色999| 国产亚洲精品精AV.| 色色色欧美| 久久久久久久久国产| 亚洲,日韩,欧美,成人播放| 午夜久久一区二区无码中出| 九九九精品成人免费视频小说| 亚洲精品影视老司机| 亚洲 中文 女同| 黄色成年| 精品一区二区三区蜜桃臀赵总 | 99999亚洲另类| 色综合天天爱去电影网| 操穴国产| 午夜精品久久久久久久久久蜜桃| 果冻传媒一区二区三区| aaa一级黄片| 午夜精品久久久久| 911av网站免费观看| 伊人97色天使| 天堂中文日本在线观看| 中国亚洲呦女专区| 久久九色| 亚洲诱惑| 久久艹逼视频| 日本久久女同性恋视频| 亚洲欧美日韩电影网站一区| 亚洲国产精品成人无码久久久| 成人黄页| 视频在线观看免费一区二区三区| 欧美熟妇亚洲版| sewuyueav| Julia在线播放亚洲久久| 91这里只有精品| 久久精彩视频9| 精品人体无圣光凹凸| 97精选久久| 国内毛片免费h片在线| 欧美啪啪啪91| 国产精品 午夜福利| 日韩本不卡视频在线观看 | 91超碰在线观看| 五月天精品| 97国产精品视频| 97综合国产精品高潮久久| 99re公开精品免费视频| 久久日本熟妇熟色一区| 91少妇通奸网站| 很很操在线| 色狠狠综合噜一二三区| 熟女人妻一区二区三区| 久艹日日日| 艳尻美人妻| 中文字幕 国产区| 欧美色网| 超碰美国| 超硑97精品| 国产精品电| 日本超碰在线国产一区| 物尤视频一区二区| 青青青青操国内视频在线| 中文字幕乱碼在线| 色噜噜综合在线| www.91逼逼.com| 哈哈操电影| 99精品热| 日韩丝袜人妻AV| 亚洲欧美精品福利在线| 亚洲欧洲综合成人av一区| 亚91网| 美女黑人91神马| 欧洲天天在线| J?P?NESEHD熟女熟妇伦| 激情视频图片| 青青草女人天天干| 亚洲色图 综合| 天综合中文| 国产AV久久久蜜爱影集| 狠狠操夜夜| 精品国产乱码久久久久久蜜臀| 五月开心久久AV官网| 91逼逼女人91| 久久欧美按摩999| 91狠狠色丁香婷婷综合久久精品| 无码av永久免费专区网站| 夜夜草我| 在线毛片片免费观看| 国产AV高清AV无码| AV污污污污| 超碰成人公开| 欧美综合娱乐久久| 国产一级137片内射麻豆| 亚洲图片激情小说| 国产在线播放成人免费| 国产精品爱欲| 特级特黄一级毛片免费| 天天夜躁日日躁狠狠2002| 91亚洲欧洲| 色香欲影| 色网站导航大全| 欧美日韩在线小说| 麻豆久久精品亚洲精品88| 久久少妇| 91精品国产91久久福利| www熟女乱伦com| 91亚州| 99色网| 2023天天操夜夜操| 人人艹亚洲| 国产a片操逼| 99久久久久久亚洲精品不卡| 久久透逼视频| 天天操夜夜嗨| 久久婷婷亚洲| 久久久999网站| 超AV色女| 久久久免费视频18| 日韩精品一区二区高清| 亚洲av影音先锋| 后入日本1234| 色臀AV| 精品无码一区二区三区| 九九九九久久久| 不卡超碰护士AV在线免费播放| 999久久久九| 中文字幕视频2区| 色香伊人| 高清无码人妻久久久一区二区三区aⅴ| 亚洲色综合| 日韩精品碰碰| 欧美人妻二区三区| 9 9无尺码天堂网| 婷婷性网| 在线综合色| 亚洲有码 视频一区| 久久肏大逼| 成人短视频在线观看| 精品人妻夜夜草| 色狠人在线99| 日韩射图| 温婉少妇玩3p| 国产精品 午夜福利| 91老熟女91老女人| 久久精品| 日本三级中国三级99人妇网站| 日本不卡卡一区| 韩国毛片一区二区三区| 人妻一区二区三区视频| 后入美女国产| 蜜臀一二三区| 3d成人精品一区二区| 伊人AAA| 婷婷九月国产| 少妇一区二区三区精选| 极品白嫩福利在线| 96一区二区| 精品偷拍13p欧美dodk视频| 久久精精区一区二区一蜜桃一区二区| 成人天天爽| 亚洲97| 丁香九月激情啪| 亚洲吊色| 日韩啪啪视频| 人妻av在线| 天天看高清麻豆| 国产日韩久久| 9/A片| 91美女小视频| 天天欧美色| 日本亚洲嫩草影院啪啪| 五月丁香六月婷综合成人综合 | 丝袜美腿91| 91足交| 亚洲国产精品久久久男人的天堂| 国产内射爽爽大片| 久久久穴999| 曰韩人妻中文字幕在线 | 97人人色| 99视频只有精品| 久久宗合97| 国产精点久久久成人| 久久啊啊啊视频| 激情 欧美 亚洲 小说| 97精品国产97久久久久久户外免费| 色约约一区=区三区| 欧美久久伊人| 日本2020一区二区| 少妇超碰在线| 日韩性爱啪啪视频| 97资源欧美| 人人弄人人摸| 91黑丝美女| 久久黄色性爱视频| 久久久91福利姬| 亚洲砖码砖专无区2023| 亚洲久久天堂| 屌妞视频久久久久久久久久久久| 强奸乱伦日韩AV| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 青青草狠狠撸| 静品嫩模一区二区| 97资源久久| 久久一二三级一一一| 日语五十路和六十路亚洲国产精品| 夜夜爽妓女| 四虎午夜影院| 97人妻人人躁人人玩人人| 丁香五月婷婷色| 亚洲影院成人| 91网站18+| 久久亚洲av成人无码国产| 亚洲国产精品无石码久久 | 最新国产精品| 中文字幕第23区| 我爱大香蕉| 啊啊啊想要| 成人精品一区二区三区| 狠狠操狠狠爱| 殴美大黄片| 91综合网| 少好三P| 亚洲熟妇自偷自拍另欧美| 另类亚洲一区二区三区| 天天干人妻视频| 久久这里精品国产99丫e6| 久久av成人无码免费| 中出欧美| 嫩草 我啊~嗯~在线| 丰满人妻一区二区三区| 国产熟女完整版中字| 欧美色综合网| 五月开心久久AV官网| 人妻嗯啊啊在线播放| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 毛片久久| 农村少妇久久久久久久| 欧美日韩人妻婷婷一区| 欧亚乱色熟一区二区三四区| 亚洲欧美国产其他二区| 波多野结衣被操50分钟免费视频| 亚洲天天综合| 亚洲中文字幕av | 囯戸精品高潮呻吟旡码| 欧美乱伦专区| 久久岛国| 欧美 日韩第一性色| 婷婷色网| 国产超碰在线一区| 亚 欧 美 综合| 精品区国产区一区二区三区| 91丨豆花丨熟女| 久草尤物| 最新av中文字幕高清| 日韩无码极品| 天天综合网网欲色| 淫荡网址| 亚洲国产综合视频| 男人午夜天堂| 好爽免费视频| 超碰97人人cao| 思思久热在线精品66| 97超碰欧美手机| 九九九成人| 啊啊啊轻点在线观看| 亚州熟妇精品| 射丝袜大香蕉| 韩国嫰模上门援交视频| 欧美色道啊| 午夜AV污污污| 欧美性五月| 国产视频97| avav青青草久久夜| 久久青娱乐| 加勒比色99999| 一本色道久久综合狠狠操| 亚洲女人毛茸茸91| 美女黄色91| 日韩无码人妻中字久久三区四区| 日韩91网站| 夜夜欢天天干| 伊人影院日本| 国产精品无码久久久久2025| 色欲蜜臀AV| 性爱乱伦网址| 99亚亚热| 久久中出在线| 欧洲亚洲综合| 大鸡巴久久| 一起草高清无码| 高清国产无码av| 久久人人爽爽人人爽人人片αV| 亚洲AV噜噜狠狠网址蜜桃动漫| 无码av永久免费专区网站| 一个人免费HD91视频| 一块操欧美性爱| 天天欧美色| 色偷偷色偷偷欧美日韩| 97人妻人人躁人人玩人人| 久久粉色| 国产特级毛片AAAAAA高潮流水 | 亚洲久久东京热一二三四五区视频| 很狠操| 视频不卡中文字幕| 岛国在线一区二区三区| 91黑丝在线播放| 97 超碰 人人做 人人爱| 日韩国产九九精品一区二区三区毛片| 天天综合青苹果| 伊人一区二区在线播放| 国产成人精品亚洲日本| 久久25| 嗯嗯嗯啊啊在线观看| 曰韩中文人妻视频| 国精精品无码一二三区水多多| 免费视频无码| 日韩精品国模| 国产精品一区二区久久精品| 日本福利二区视频| 日本久久综合| 91美女小视频| 人人色人人操在线| 日韩78m视频| 97超碰日韩| 欧美久久伊人| 91欧美另类| av黄图片在线观看| www.99视频| 天综合网欧美| 中文字幕日韩电影人妻| 1024亚洲中文字幕久在线看片你懂的 | 91美女在线视频| 亚州一区二区| 超碰在线看| 98超碰日本| 人人摸.人人色| 欧美性猛交美女自慰91| 少妇淫妇久久久久久久| 久9热| 另类成人首页一区| 国产精品亚洲无码| 东京成人一区| A 天堂| 丝袜熟女2P| juliaann欧美丝袜办公室| AV无码久久久精品| 疯操AV| 97国产高清视频在线观看| 亚洲第一色页夜| 日韩黄色片子| 女人一区| 日本性爰一道本| 欧美亚洲美少妇一区二区| 秋霞 色色| 欧美天天插| 大香蕉99999| 99热| 思思久热在线精品66| 91网站18在线观看| 伊人操你| 日本精品性生活久久久| 伦理片秋霞免费影院| 91男人综合| 99久久久久| 日韩情色一区二区| 久久9精品视频| 国产亚洲色停停久久99精品91| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | AV一区观看| 亚洲综合性网址| 91精品人妻电影| 日夜尻逼网| 91碰碰碰| 日韩三级在线观看网站| 国产亚洲精品美女| 午夜男女爽爽爽在线视频| 東南亚性呦成人伦理资源在线视频| www.狠狠| 翔田千里无码一区| 99热18这里只有精品| 亚洲一区二区三区欧美日韩| 农村妇女精品一二区| 亚州操操穴网| 多乙久久久久久| 欧美性色欧美| 99操| 成人五月香网在线| 国产成人无码啪| 情色图区| 婷婷情色五月天| 全球成人中文在线| 色屁屁影院www国产| 激情小说亚洲视频| 欧美少妇熟女| 男人高清无码一区二区| 加勒比海色香蕉婷婷| 中文字幕97色| 95人妻爽爽人人做人人澡| 久9re热视频这里只有精品| 久热大香蕉网站| 青娱乐av在线| 玖玖在线视频| 日韩久久.一级黄色片| 神马午夜久久| 超碰一区二区| 青青草男人天堂| 91人妻爽爽人人做人人澡| A 在线网址| 少妇久久久| 天天操天天干美女网址导航| 亚洲在高跟鞋自慰久久在色线| 九九色精品| 亚洲第一黄色av网站| 久久老女人| 亚洲第一男人天堂| 精品网站99999| 91 手机在线播放 绯色| 搡老熟女老女人老熟妇免费视频| 欧美成人A√在线一区二区| 快灬快灬 一下爽蜜桃在线观看| 久久人爽| 双插在线| 亚洲欧美天堂在线| 麻豆 欧美 日韩| 91热爆在线| 日韩不卡毛片Av免费高清| 黄色大片免费在线| 亚洲精品久久久久毛片A片拉屎 | 干干干天天| 国产精品4p在线观看| 老熟女综合| 另类小说欧美激情校园春色| 日韩特一级久久| 超碰97在线色男人??| 欧美日韩少妇色情| 超碰在线97国产| 国产熟女一区二区丰满| 色鬼在线综合| 国产成人AV麻豆| 天天α片| 日韩美女高潮喷水视频| 97操在线| 大香蕉在线SuP| 欧美日韩美女精品久草一区二区三区| 午夜毛片高清免费不卡| 久久久久久久久久久久久久久久9| 91久久午夜无码鲁丝片久久人妻| 日韩精品高清资源在线| 久久久久久久久久久久久久久乱码| 女人的久久久| 久久久久久久久九九久孕交| 亚洲人妖网| 九九自拍伦理| 久草成人影片| 青草一区二区| 久久国产在线一区二区| 天天视频网站黄| 做爱A级亚欧| 日本www操操操| 大香蕉久操| 国产欧美伊人| 色九九九九| 精品人妻伦一区二区三区久久| 色噜噜狠狠色综无码久久| 农村少妇久久久久久久| 天天综合91| 国产性爱在线视频一区二区| 国产精品久久久久无码AV会牛| 一块操欧美性爱| 久久最新免费视频23| 久久中日麻豆| 四虎884| 又大又大又大又粗爽高潮观看| 狠狠久久手机视频精品| 国产精品视频一区二区三区八戒| 激情五月综合网| 超碰97资源大奶| 天天日美女的B| 欧美激情区| 韩三级a视频在线观看| 亚洲精品亚洲人成在线麻豆| AV 少妇 人妻 偷拍| 五月天伊人| 骚熟女AV网| 国内偷拍精品一区二区| 国产剧情AV不卡在线观看| 亚洲另类综合欧美| 欧洲亚洲人妻无码久久三区四区| 日本在线观看网址| 国产精品无码久久久久2028| 在线观看无码三级少妇| 久久精品福利影院| 91在线视频免费播放| 久久性爱视频| 国产外初女出血视频| 超清中文乱码字幕| 91社区拍啪人妻| 日本淫色网| 乱人乱色一区二区三区免费 | 欧美激情综合色综合啪啪五月| wwe 天天干.com| 久久在肏| 日本一级二级三级网站| 操操操操操操| 久久久久久久人妻丝袜| 婷婷视频网| 97超碰总站| 在线亚洲 欧美 日本专区 | 国产无码成人无码| 思思热在线| 福利五区| 国产剧情AV不卡在线观看| 中文字幕55555| 好吊色综合| 色区久久| 亚洲欧洲日韩中文字幕一区| 老司机老司机午夜影院| 东北女人| 亚洲无码国产精品久久| 97色论| 人人操人人色网| 亚洲色吧网| 深夜视频| 亚洲性爱高潮影院| 欧美 亚洲 在线| 婷婷五月色| 欧美丝袜91| 亚洲天堂热| 欧美少妇高潮视频| 国产精品久久久鸭无码的功能| 久久少妇人妻| 国人欧美精品一区二区| 久久9999| 五月丁香综合激情| 久久久久99精品成人片蜜臀| 五月丁香在线| 酒色综合网| 黄页大片在线观看| 精品人妻一区二区三区四区石在线 | 大香蕉一人在线| 人妻献身系列第54部| 日日黄色三级网站| 黄在线| 亚洲欧美91√| 五月丁香综合激情| 神马九九| 91爰爱欧美| 久操视频资源站公开| 久久女女| 国产精品久久久亚洲一区| 男人亚洲天堂| 伊人一区二区三区| 国产精品自在自拍视频| 日韩精品亚洲一二三| 韩日精品四区| 亚洲春色欧美激情自拍| 偷拍色图| 韩日精品四区| 日本性爰一道本| 一区二区三区四区五区久久久久久| 五月色网| 无遮挡又黄又刺激的视频| 91挑色欧美| 97综合在线| 亚洲无线观看久久| 色拍偷亚洲| 久久久爆乳翘臀一线天伦理视频| 天天添天天干电影| 中文字幕一区二区三区高清| 综合熟妇一区二区三区| 久久精品免费| 久久草在线综合视频| 97国产精品视频| 男人的天堂久久狠| 999狠狠综合| 国产白嫩漂亮KTV在线| 激情欧美97| 九九九九欧美| 天天综合日韩网| 亚洲欧美在线观看2021| 色吧 综合| 久久禁| 久久久穴999| 九月色婷婷| 草草影院最新网址| 日韩精品人妻| 久久久久久久久女黄| 亚洲综合网图| 91久久久久免| 日韩中文字幕视频在线观看| 亚洲国产成人精品久久久国产成人一区二区 | 中国和日本人色哪个不下载能放| 日本999精品视频| 九九Av| 久久九九国产精品| 天天躁日日躁AAAAXXXX国产| 98久久超碰| 97香蕉人人乳| 91人妻Pr| 中文字幕一区二区免费在线| 狠狠爱综合网| 玖玖久久久| 啊啊啊轻点在线观看| 亚洲一区二区三区久久 亚洲一区二区| 岛国在线一区二区三区| 人妻无一区二区三区| 我要色综合网| 后入国产| 天天欧美| 九九九国产| 极品少妇久久久久| 夜夜高潮夜夜爽国产伦精品| 精品九九九九九九九九九| 极品白嫩福利在线| 97色五月天完| 色999人与兽| 久艹日日日| 久久久久久久久久久久97| 999九九九九国产动| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 中文字幕av片| 亚洲欧美视| 大但人体久久久久| 久久原创中文| 欧美一品道| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 777超碰| 男同专区一区二区三区在线| 草B在线| 日韩AV噜噜噜一区二区三区四区 | 午夜色婷婷| 99热综合| 91N欧美| 1024亚洲中文字幕久在线看片你懂的| 亚洲情色婷婷五月天| 久久天天摸| 日韩一999精品| 亚洲天堂自拍| 内射卯月麻衣| 亚洲天堂另类| 99色网| 亚洲 欧美 制服 另类 自拍| 黄片免费看的| 亚洲AV无码久久久国产精品 | 国产精品电影大全| 激情五月综合开心五月| 波多野结衣一级视频| 乱论91| 亚洲综合五月天| 亚欧精品久久久久久久久久久| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 免费视频a级毛片免费视频| 在线不卡视频| 北条麻妃99精品青青久久| 精久久久91| 亚洲九月丁香| 91操人视频| 成人精品视频一区二区| 91AV天美在线视频| 精品69网| 久久综合资源一区二区| 99色色网| 神马久久网| 在线看污网站| 无码区蜜乳| 国模精品一区二区三区苹果色戒 | 友优传媒精品在线一区二区| av毛片aaaaa免费看| 亚洲精品官网在线观看| 另类小说五月天| 久久综合超碰| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 素颜老阿姨乱情色| 欧美熟妇精品黑人巨大91| 色哟哟综合| av九九| 久9久精品视频| 超碰97人妻在线| 亚洲人妻中文高清| 啊好大好舒服| 亚洲区小说| AV一区观看| 天天色粽合合合合合合合| 久草男人天堂| 免费成人自拍视频在线| 久精品无码av一区二免费国产在线观看| 日韩另类色图| 91超碰丝袜制服| 亚洲日本激情| 麻豆 欧美 日韩| 蜜汁欧美| 免费中文在线| 少妇精品久久久| 亚洲欧美高清无码| 亚洲丝袜色| 久久激情四射婷婷丁香五月天| 操操逼视频| 日韩 人妻 精品| 亚洲中文字幕一区二区| 久操视频资源站公开| 国产传媒1234区| 97精品网| 又大又白奶子| 天天天干977| 婷婷丁香五月激情啪啪| 另类视频在线| 91深夜夜| 中文字幕人妻色偷偷久久皮| yiqicaoav| 九九热精品免费视频| 天天天肏屄肏屄肏屄欧美欧美| 久久久久亚洲Aⅴ无码| 日日骚精品视频| 国产精品无码久久久久2025| 超碰97玖玖爱| 操逼视频国产无套| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 骚女高跟AV在线| 翔田千里一区二区三区奶水| 日韩二三区| 我要去看2个日本美女.com曹逼| 一本一道人妻久久一区二区三区| 日逼97| 五月婷婷六月丁香| 国内一区二区免费| 欧美中文字幕男人天堂久久精品 | 久久熟女人| aV中亚| 亚洲欧美日韩有码| 欧亚性爱在线视频| 天天日美女的B| 久久‘黄片视频| 小电影欧美91| caorenqi shipin| 91激情| 欧美色997| 久久美女国产| 精品国产乱码久久久久久免费| 日韩人妻无码专区| 91少妇人妻| 亚洲丝袜色图| a天堂视频| 韩日欧亚a级| 久久国色天香香蕉| 老子午夜伦不卡影院| 东京热熟女亚洲视频网站| 精品性爱一区二区| AV女优男人的天堂| 成人网欧美风情| 无码天天操| 五月天精品| 亚洲精品丝袜| 亚洲最大成人a毛毛片| 啊啊啊 在线| 久久久草成人网站久久久草成人久久久草久久久| 无码78| 久久女同性恋一二区| 五月天玖玖资源站| 国产精品熟女一区二区三区| 天天α片| 超碰人妻在线| 亚洲黄片免费在线播放| 91青青在线视频| 国产精品一区二区三区在线密挑| 一个色导综合| 天天综合欧美黑人| 欧美18禁91| 丁香六月婷婷综合| 国产不良强奸视频免费看| 超碰偷拍| 久久只有精品一区二区三区| 久久久久久AⅤ无码免费肉站 | 男人的天堂欧美| 99久久综合网| 亚洲免费在线探花| 91精品老女人| 人妻 欧美亚洲| 躁躁日曰躁2020| 丁香六月综合激情| 性爱免费视频成人| 性综合网| 蜜臀99久久精品久久久久久| 日韩三级在线观看mp4| 国产一级片| 日va操| 精品国产91内射久久| 综合网少妇| 成人片视频| av网站在线看| 国产美女91| 亚洲日本天堂| 啊啊啊在线观看免费视频| 性爱动态120秒| 男男H黄动漫啪啪无遮挡网站| 超碰在线人妻中文字幕| 干B网| 噜噜噜噜天天狠狠| 九草九九九| 日韩欧亚中文在线| 美女91在线观看| 精品超碰中文在线| 亚洲欧洲另类| 国产67194| 97任你吞精| 一区二区三区四区免费视频| 久久久一区二区三区三州| 91夜色| 综合夜夜| 亚洲激情片| 啊啊啊啊网站| 久久九色| 一级二级在线观看| 综合网 欧美| 啊啊啊爽爽| 国产路线专区| www亚洲欧美| 97av在线观看| 超碰在线一区二区三区| 九热久| 亚州色综合| 亚洲国产97| 97AV在线观看| 黄片免费日韩| 日本影视久久免费| 亚洲欧洲成人在线电影| 成人精品无码| 蜜臀AV秘一区翔田千里| 以及麻豆国产入口在线观看免费| 日韩av在线精品观看| 明星性猛交ⅹxxx乱大交| 精品美女久久久久| 日韩高清黄片| 美國A片| 免费一级欧美片片线观看| 婷婷色中文字幕| 天天做天天爱| 97久精品| 黄色不卡视频| 少妇内射视频| 日日骚av| 天天综合97| 人人妻人人爽 97人人看碰人免费公开视频 | 91人妻Pr| 91N欧美| 青青草手机在线免费观看| 97在线观看免费视频l| 破处bbq| 亚洲视频精选| 一级人妻性爱视频| 免费在线黄片视频| 99熟女| 亚州成人a∨| 天天操人人操骚逼网站| 超碰4A| 日本一区二区中文字幕久久| 人妻献身系列第54部| 一级啊性爱在线视频| 大香樵伊人网| 黄色不卡视频| 我爱操| 青娱乐淫乱1314| a级成人毛片免费视频高清| 伊人五月天| 欧美狠狠操| 亚洲男人天堂2| 97在线免费观看| 日韩国产乱子伦App| 色色99| 久久伦理视频久久大香蕉视频| 亚洲区 欧美区| 天天躁日日躁成人字幕aⅴ| 四虎AV在线播放| 久操91视频| 亚洲中文字幕三级在线| 亚洲另类色图片| 久9综合在线| 亚洲欧洲av影音| 久久亚洲精品成人av| 日本三级小说中文字幕| 97在线观看免费| 精品久久久久久无码| 国产激情视频在线观看| 日本999精品| 97天堂| 日韩AC| 亚洲美女色图| 啊啊啊好想要| 日本午夜久久电影| 夜夜爽爽夜夜精品视频| 午夜操一操| 日韩无码成人电影| 中文字幕AV片| 一级毛片电影免费看| 99操视频| 后入式五六区| 亚洲小电影免费涩涩成人在线高清| 欧美亚洲日韩人妻在线观看| 韩国毛片一区二区三区| 国产又色又粗又黄又爽| 69超碰综合| 东京男人天堂| 在线人人人人人人精品超 | 国产女人和拘做爰视频| 天天操女人| 天天cao在线| 色婷五月| 欧美黑人日韩少妇色情| 国产成人无码啪| 国产精品欧美激在线| 97亚洲综合| 91视频国品一二三区| 日本ZZ高免费A级视频| 欧洲一级性爱视频在线观看| 麻豆 亚洲 97| 高潮毛片无遮挡高清免费| 日韩精品高清资源在线| 超碰97中文| 免费观看欧美日韩操逼视频| 0755午夜福利视频| 国产一区二区三区影片| 热久久无毒不卡| 欧美久久伊人| 午夜精品久久久99热蜜桃的功能特点| 国产av波波国产精品| 精品乱码久久久久| 久久五月天婷婷丁香中文字幕| 九X超碰| 嫩草在线视频| 一区二区视频你懂的| 欧美亚洲色图另类国产| 亚洲综合骚逼| 美中日韩无码| chaopen97久久| 东京热免费视频| 人人操人人肉久久精品| 亚洲天堂区| a级免费在线观看| 久久中文色图| 日本免费人成视频播放120秒| 校园春色亚洲无码| 欧美极度丰满熟妇hd| 国产97av| 天天操女人| 99久国产精品午夜性色福利| 日韩精品人妻中文字有码在线| 色噜噜精品一区二区三| 综合自拍| AV色天香在线| 被男人吃奶很爽的毛片| 97频视在线| 日本99久久| 亚洲天天综合| 亚洲精品蜜桃久久久久久久| 午夜寂寞欧美| 欧美AB在线| 亚洲综合小视频小说在线观看| 国产熟女免费观看久久| 青青草大香蕉视频| 欧美日韩国第一区| 亚洲精品一二区| 9 9精品一区二区三区| 欧美第一页| 日日夜夜模| 午夜免费视频1000| 国产Av超碰| 欧美色图20P| 五月天久久婷婷亚洲| 亚洲免费人妻在| 日韩啊V| 蜜臀一二三区| 嗯嗯啊啊啊好舒服| 人人干人人操人人..com| 国产精品久久久| 亚洲日韩久久精品一区| 亚洲情色第一页| 亚洲最新av无码成人精品区 | 91N欧美| 精品人妻一区| 97日韩欧美| 91碰碰| 九九成人精品| 婷婷久久五月天| 丰满人妻无码一区二区三区| 亚洲色图欧洲| 少妇特黄一区二区三区| 大香蕉伊人网WWWn0n| 欧美成人午夜免费福利785| 日韩操啪| 欧美综合天堂| Aa东京男人的天堂| 日本一二区免费| 日本123区操B视频| 亚洲中文字幕久久人妻| 亚洲国产精品无码AV久久| 少妇精品久久久八区九区| 老熟女熟妇| 玖色AV| 人妻中文在线| 久操网线| 人人摸.人人色| WWW.操逼.COM| 九九操久久国产免费视频| 久久宗合亚洲| 天天夜夜久久| 夜夜爽妓女| 久久欧美按摩999| 五月综合久久| 精品人妻美妇91job| 国产免a费看黄片在线| 久久超碰国产一区二区三区| 91性网| 蜜臀久久99精品久久久久久成人小说 | 久草婷婷| 麻豆AV一区二区| 偷窥自拍亚洲色图| 综合网欧美在线| 久久97| 欧美婷婷| 激情深爱五月天| 综合久久婷婷| 亚洲激情av| 婷婷色导航| 人妻av在线| 色五月婷婷久久| 婷婷伊人| 伊人成人中文字幕久久网| 久久综合九九| 丁香五月影院| 欧美国产日韩清纯唯美| 婷婷色网| 国产欧美精品日韩区二区麻豆天美| 99∨VTV| 精品 码产区一区二-1080P高清在线www-B029AV| 乱伦熟女区| 色五月大香蕉| 精品妇女一区二区三区| 狠狠狠一区二区三区| 丁香五月天婷婷姐| 九月AV| 伊人991| 亚洲极品| 97中文字幕九区| 国产农村妇女精品| 日本中文字幕不卡视频| 成人影院永久免费观看网址| 园内精品自拍视频在线播放| 强奸乱伦中文字幕AV| 国产AV超爽|