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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JVM调优笔记:认识JVM内存模型(jdk1.8)

發(fā)布時(shí)間:2025/3/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JVM调优笔记:认识JVM内存模型(jdk1.8) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

文章目錄

  • 1、什么是JVM
  • 2、jdk、jre、jvm關(guān)系
  • 3、JVM執(zhí)行過(guò)程
  • 4、JVM執(zhí)行程序的過(guò)程
  • 5、JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)
    • 虛擬機(jī)棧(線程私有)
    • 本地方法棧(線程私有)
    • 程序計(jì)數(shù)器(線程私有)
    • 堆(線程共享)
    • 方法區(qū)(線程共享)
  • 6、內(nèi)存分配參數(shù)
    • 大小分配
    • 比例分配
  • 7、垃圾回收
    • 算法與思想
    • 分類
      • 新生代串行收集器 Serial
      • 老年代串行收集器 Serial Old
      • 新生代并行收集器 ParNew
      • 新生代并行回收收集器 Parallel Scavenge
      • 老年代并行回收收集器 Parallel Old
      • CMS收集器
      • G1收集器
  • 8、常見(jiàn)調(diào)優(yōu)方法
  • 9、其他實(shí)用JVM參數(shù)

1、什么是JVM

(1)JVM即Java Virtual Machine,java虛擬機(jī)。它是一個(gè)虛構(gòu)出來(lái)的機(jī)器,是通過(guò)實(shí)際計(jì)算機(jī)上的仿真模擬各種功能實(shí)現(xiàn)的。
(2)JVM包含了一套字節(jié)碼指令集,一組寄存器、一個(gè)占、一個(gè)垃圾回收堆和一個(gè)存儲(chǔ)方法域。
(3)JVM支持java程序跨平臺(tái)。因?yàn)樗帘瘟伺c具體操作系統(tǒng)平臺(tái)相關(guān)信息,使我們的Java程序只需要生成在Java虛擬機(jī)上運(yùn)行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺(tái)上運(yùn)行。

JVM在執(zhí)行字節(jié)碼時(shí),實(shí)際上最終還是把字節(jié)碼解釋成具體平臺(tái)上的機(jī)器指令來(lái)執(zhí)行。

2、jdk、jre、jvm關(guān)系

(1)JRE(Java Runtime Environment),也就是java平臺(tái)。所有的java程序都要在JRE環(huán)境下才能運(yùn)行。
(2)JDK(Java Development Kit),是開(kāi)發(fā)者用來(lái)編譯、調(diào)試程序用的開(kāi)發(fā)包。JDK也是JAVA程序需要在JRE上運(yùn)行。
(3)JVM(Java Virtual Machine),是JRE的一部分。它是一個(gè)虛構(gòu)出來(lái)的計(jì)算機(jī),是通過(guò)在實(shí)際的計(jì)算機(jī)上仿真模擬各種計(jì)算機(jī)功能來(lái)實(shí)現(xiàn)的。

JVM有自己完善的硬件架構(gòu),如處理器、堆棧、寄存器等,還具有相應(yīng)的指令系統(tǒng)。
Java語(yǔ)言最重要的特點(diǎn)就是跨平臺(tái)運(yùn)行。使用JVM就是為了支持與操作系統(tǒng)無(wú)關(guān),實(shí)現(xiàn)跨平臺(tái)。

3、JVM執(zhí)行過(guò)程

(1)jvm是java的核心和基礎(chǔ),在java編譯器和os平臺(tái)之間的虛擬處理器,可在上面執(zhí)行字節(jié)碼程序。
(2)java編譯器只要面向jvm,生成jvm能理解的字節(jié)碼文件。java源文件經(jīng)編譯成字節(jié)碼程序,通過(guò)jvm將每條指令翻譯成不同的機(jī)器碼,通過(guò)特定平臺(tái)運(yùn)行。

4、JVM執(zhí)行程序的過(guò)程

第一步:程序員寫(xiě)出各種java文件 通過(guò)編譯器編譯成class字節(jié)碼文件

第二步:然后我們通過(guò)tomcat 或者java -jar的形式在linux或windows上運(yùn)行

第三步:前提安裝了jdk 我們的jar或war程序就整體是一個(gè)jvm,在運(yùn)行時(shí)會(huì)首先去讓最頂層的父層 啟動(dòng)類加載器(BootStrap ClassLoader)去java的lib包下加載核心類庫(kù)。然后通過(guò) Extension ClassLoader 擴(kuò)展類加載器 在lib/ext下加載擴(kuò)展類 ,再然后通過(guò)Application ClassLoader應(yīng)用程序類加載器 加載我們自己的java程序中的class字節(jié)碼文件 。。。。。其中加載過(guò)程中會(huì)有雙親委派機(jī)制,就是當(dāng)前應(yīng)用程序類加載器向上層父級(jí)擴(kuò)展類中找尋是否該類應(yīng)由其執(zhí)行,擴(kuò)展類加載器在向上。到達(dá)啟動(dòng)類加載器去核心類庫(kù)中找尋是否是自己的類。如果是則有自己進(jìn)行類加載進(jìn)jvm內(nèi)存方法區(qū)中。如果沒(méi)有則再向下進(jìn)行委派。直到找到是屬于各級(jí)加載器自己的類。如果每一層都沒(méi)有。那么由發(fā)起方自己去執(zhí)行該類(類加載進(jìn)方法區(qū))

第四部:如果我們是通過(guò)tomcat加載的話。tomcat會(huì)將應(yīng)用程序解析,驗(yàn)證,通過(guò)自定義類加載加載如tomcat自己的jvm方法區(qū)。

第五步:放入方法區(qū)的class類會(huì)被字節(jié)碼引擎執(zhí)行字節(jié)碼指令進(jìn)行各種操作(讀寫(xiě)),過(guò)程中會(huì)有程序計(jì)數(shù)器來(lái)記錄指令執(zhí)行的位置。

第六步:執(zhí)行過(guò)程從各個(gè)方法也就是線程執(zhí)行起始,該對(duì)象在建立的時(shí)候會(huì)被放入堆內(nèi)存中。

第七步:初始化的對(duì)象 都會(huì)有自己的成員變量,賦完默認(rèn)值,會(huì)將成員變量進(jìn)行壓棧,進(jìn)入java虛擬機(jī)棧中成為棧幀。并且每一個(gè)成員變量都在棧內(nèi)存中指向堆內(nèi)存的對(duì)象。堆棧相互關(guān)聯(lián)。

第八步:垃圾回收時(shí)刻監(jiān)測(cè)堆內(nèi)存中是否有未被棧內(nèi)存中成員變量指向的對(duì)象。如果有,則進(jìn)行垃圾回收。

第九步:而在方法去的類和棧中的棧幀什么時(shí)候被回收呢?首先該類所有的實(shí)例化對(duì)象都在堆內(nèi)存中被回收。其次加載該類的類加載器已經(jīng)被回收,最后對(duì)該類的class文件沒(méi)有任何堆內(nèi)存的線程或線程中變量引用。這三種情況全部滿足,棧和方法區(qū)的線程和類都全部被回收了。

5、JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)


從圖來(lái)看,我們可以把Java內(nèi)存區(qū)分為堆內(nèi)存(Heap)和棧內(nèi)存(Stack)。雖然這種分法比較粗糙,實(shí)際上要復(fù)雜的多,不過(guò)初學(xué)者來(lái)說(shuō)這是我們最關(guān)注的的兩塊區(qū)域。

總內(nèi)存=堆內(nèi)存(Xmx)+方法區(qū)內(nèi)存(MaxPermSize)+棧內(nèi)存(Xss)*線程數(shù)+直接內(nèi)存(MaxDirectMemorySize,堆外)+虛擬機(jī)內(nèi)存

虛擬機(jī)棧(線程私有)

(1)Java棧中存放的是一個(gè)個(gè)的棧幀,每個(gè)棧幀對(duì)應(yīng)一個(gè)被調(diào)用的方法,在棧幀中包括局部變量表(Local Variables)、操作數(shù)棧(Operand Stack)

(2)指向當(dāng)前方法所屬的類的運(yùn)行時(shí)常量池(運(yùn)行時(shí)常量池的概念在方法區(qū)部分會(huì)談到)的引用(Reference to runtime constant pool)

(3)方法返回地址(Return Address)和一些額外的附加信息。當(dāng)線程執(zhí)行一個(gè)方法時(shí),就會(huì)隨之創(chuàng)建一個(gè)對(duì)應(yīng)的棧幀,并將建立的棧幀壓棧。當(dāng)方法執(zhí)行完畢之后,便會(huì)將棧幀出棧。


這塊區(qū)域存在兩種異常情況
(1)如果線程請(qǐng)求的棧深度大于虛擬機(jī)允許的深度,拋出StackOverflowError異常;
(2)如果虛擬機(jī)棧可以動(dòng)態(tài)擴(kuò)展,且擴(kuò)展時(shí)無(wú)法申請(qǐng)到足夠的內(nèi)存時(shí)會(huì)拋出OutOfMemoryError異常。

在這里也說(shuō)一個(gè)題外話,由于每個(gè)方法從進(jìn)入到返回對(duì)應(yīng)著棧幀的壓入和彈出,這個(gè)過(guò)程需要耗費(fèi)一定的時(shí)間和資源,所以也意味著代碼中調(diào)用的方法越多,執(zhí)行效率也會(huì)越低。所以拆分方法的也不是越多越好的。

本地方法棧(線程私有)

本地方法棧和Java虛擬機(jī)棧的功能很相似,Java虛擬機(jī)棧用于管理Java函數(shù)的調(diào)用,而本地方法棧用于管理Native方法的調(diào)用。本地方法并不是用Java實(shí)現(xiàn)的,而是使用C實(shí)現(xiàn)的。在HotSpot虛擬機(jī)中,不區(qū)分本地方法棧和虛擬機(jī)棧,因此和虛擬機(jī)棧一樣,它也會(huì)拋出StackOverFlowError和OutOfMemoryError

程序計(jì)數(shù)器(線程私有)

(1)由于在JVM中,多線程是通過(guò)線程輪流切換來(lái)獲得CPU執(zhí)行時(shí)間的.
(2)在任一具體時(shí)刻,一個(gè)CPU的內(nèi)核只會(huì)執(zhí)行一條線程中的指令
(3)為了能夠使得每個(gè)線程都在線程切換后能夠恢復(fù)在切 換之前的程序執(zhí)行位置,每個(gè)線程都需要有自己獨(dú)立的程序計(jì)數(shù)器,并且不能互相被干擾

程序計(jì)數(shù)器是每個(gè)線程所私有的,由于程序計(jì)數(shù)器中存儲(chǔ)的數(shù)據(jù)所占空間的大小不會(huì)隨程序的執(zhí)行而發(fā)生改變,因此,對(duì)于程序計(jì)數(shù)器是不會(huì)發(fā)生內(nèi)存溢出現(xiàn)象(OutOfMemory)的。

堆(線程共享)

(1)Java堆可以說(shuō)是Java運(yùn)行時(shí)內(nèi)存中最重要的部分,是被所有線程共享的一塊區(qū)域幾乎所有的對(duì)象和數(shù)組都是在堆空間中分配空間的,但是隨著JIT編譯器的發(fā)展與逃逸分析技術(shù)逐漸成熟,棧上分配、標(biāo)量替換優(yōu)化技術(shù)導(dǎo)致一些微妙的變化,所有對(duì)象堆上分配也漸漸變得不那么”絕對(duì)”了。
(2)Java堆分為新生代和老年代兩個(gè)部分,新生代又可進(jìn)一步分為eden、Survivor space0(from space)和survivor space1(to space)。eden意為伊甸園,即對(duì)象的出生地,s0和s1為survivor空間,可意為幸存者,如果幸存者的對(duì)象到了指定年齡仍未被回收,則有機(jī)會(huì)進(jìn)入老年代(tenured)。

默認(rèn)值:
老年代:2/3的堆空間
年輕代:1/3的堆空間
eden區(qū):8/10 的年輕代
survivor0: 1/10 的年輕代
survivor1:1/10的年輕代

方法區(qū)(線程共享)

(1)被所有方法線程共享的一塊內(nèi)存區(qū)域。
(2)用于存儲(chǔ)已經(jīng)被虛擬機(jī)加載的類信息,常量,靜態(tài)變量等。
(3)這個(gè)區(qū)域的內(nèi)存回收目標(biāo)主要針對(duì)常量池的回收和堆類型的卸載。

在JDK1.8之前HotSpot的實(shí)現(xiàn)中是用永久代實(shí)現(xiàn)的,雖然叫永久代但同樣也是可以被GC回收的,只是對(duì)于GC的表現(xiàn)也和堆空間略有不同,通常對(duì)永久代GC的回收從兩個(gè)方面分析,一是GC對(duì)永久代常量池的回收,二是永久代對(duì)類元數(shù)據(jù)的回收(需要虛擬機(jī)確認(rèn)該類的所有實(shí)例已被回收并不會(huì)再被使用,并且加載該類的ClassLoader已經(jīng)被回收,GC就有可能回收該類型);而在JDK1.8之后永久代被拋棄,使用元空間。

6、內(nèi)存分配參數(shù)

大小分配

最大堆內(nèi)存:-Xmx,指新生代和老年代的大小之和的最大值

最小堆內(nèi)存:-Xms,Java應(yīng)用程序運(yùn)行時(shí),首先會(huì)被分配的內(nèi)存大小,無(wú)法滿足時(shí)會(huì)向操作系統(tǒng)申請(qǐng)更多的內(nèi)存。JVM會(huì)試圖將系統(tǒng)內(nèi)存盡可能限制在-Xms中,因此當(dāng)內(nèi)存實(shí)際使用量觸及-Xms指定大小時(shí),會(huì)觸發(fā)Full GC,因此把-Xms設(shè)置為-Xmx時(shí),可以在系統(tǒng)運(yùn)行初期減少GC次數(shù)和耗時(shí)

新生代:-Xmn,設(shè)置新生代的大小會(huì)影響老年代的大小,這個(gè)參數(shù)對(duì)系統(tǒng)性能與GC有很大的影響。一般新生代設(shè)置為整個(gè)堆內(nèi)存空間的1/4到1/3左右。在HotSpot中,可以用-XX:NewSize和-XX:MaxNewSize分別設(shè)置新生代初始值和最大值,但是一般用-Xmn統(tǒng)一設(shè)置就足夠了

永久代:-XX:PermSize和-XX:MaxPermSize,在JDK1.8之前,可以分別設(shè)置永久代的初始大小和最大值

元空間:-XX:MetaspaceSize和-XX:MaxMetaspaceSize,在JDK1.8之后使用元空間,元空間的大小僅受本地內(nèi)存限制,但可以分別設(shè)置元空間的初始大小和最大值(默認(rèn)沒(méi)有限制)

每個(gè)線程堆棧:-Xss,在線程中進(jìn)行局部變量分配,函數(shù)調(diào)用時(shí)都需要在棧中開(kāi)辟空間。如果棧的空間分配太小,那線程運(yùn)行中可能沒(méi)有足夠空間分配局部變量或達(dá)不到足夠的深度導(dǎo)致異常退出;如果棧空間過(guò)大,那么開(kāi)設(shè)線程所需的內(nèi)存成本上升,系統(tǒng)所能支持的線程總數(shù)也會(huì)下降

Direct內(nèi)存:-XX:MaxDirectMemorySize,javaNIO中通過(guò)Direct內(nèi)存來(lái)提高性能,這個(gè)區(qū)域的大小默認(rèn)是64M,在適當(dāng)?shù)膱?chǎng)景可以設(shè)置大一些

比例分配

新生代:-XX:SurvivorRatio,用于設(shè)置新生代中,eden空間和s0空間的比例關(guān)系,其中s0與s1空間大小是相同的,只能也是一樣的,并在MinorGC之后會(huì)互換角色,因此值為eden/s0 = eden/s1
新生代與老年代:-XX:NewRatio,用來(lái)設(shè)置老年代/新生代之間的比例

survivior使用率:-XX:TargetSurvivorRatio,設(shè)置survivior區(qū)的可使用率,當(dāng)使用率達(dá)到這個(gè)數(shù)值時(shí),會(huì)將對(duì)象送入老年代

新生代存活次數(shù):-XX:MaxTenuringThreshold,在新生代中對(duì)象存活次數(shù)(經(jīng)過(guò)Minor GC的次數(shù))后仍然存活,就會(huì)晉升到老年代

直接進(jìn)入老年代:-XX:PretenureSizeThreshold,設(shè)置大對(duì)象直接進(jìn)入老年代的閾值,當(dāng)對(duì)象的大小超過(guò)這個(gè)值時(shí)直接在老年代分配

堆空閑比例:-XX:MinHeapFreeRatio與-XX:MaxHeapFreeRatio,設(shè)置堆空間的對(duì)最小/最大空閑比例。當(dāng)堆空間的空閑內(nèi)存大于/小于對(duì)應(yīng)值時(shí),JVM便會(huì)擴(kuò)展/壓縮堆空間大小

元空間空閑比例:-XX:MinMetaspaceFreeRatio與-XX:MaxMetaspaceFreeRatio,設(shè)置最小/最大的Metaspace剩余空間容量的百分比,Metaspace GC之后,用來(lái)控制擴(kuò)展/壓縮元空間大小

可以使用-XX:PrintGCDetails來(lái)打印出堆的實(shí)際大小

7、垃圾回收

算法與思想

引用計(jì)數(shù)法:最經(jīng)典也是最古老的一種垃圾收集方法。引用計(jì)數(shù)器,只需要為每個(gè)對(duì)象配備一個(gè)整形的計(jì)數(shù)器即可,但是引用計(jì)數(shù)器有個(gè)嚴(yán)重的問(wèn)題,即無(wú)法處理循環(huán)引用問(wèn)題。因此在Java的垃圾回收器中沒(méi)有使用這種算法

標(biāo)記-清除算法(Mark-Sweep):是現(xiàn)代垃圾回收算法的思想基礎(chǔ)。將垃圾回收分為兩個(gè)階段,標(biāo)記階段和清除階段。一種可行的實(shí)現(xiàn)是,在標(biāo)記階段通過(guò)根節(jié)點(diǎn)標(biāo)記所有從根節(jié)點(diǎn)開(kāi)始可達(dá)的對(duì)象,然后在清除節(jié)點(diǎn)清除所有未被標(biāo)記的垃圾對(duì)象。標(biāo)記-清除算法可能產(chǎn)生的最大問(wèn)題就是空間碎片,因?yàn)榛厥蘸蟮目臻g是不連續(xù)的

復(fù)制算法(Copying):與標(biāo)記-清除算法相比,復(fù)制算法是一種相對(duì)高效的回收方法。核心思想是將原有的內(nèi)存空間分為兩塊,每次只使用一塊,在垃圾回收時(shí),將正在使用的內(nèi)存中的存活對(duì)象復(fù)制到未使用的內(nèi)存中,之后清除正在使用的內(nèi)存塊的所有對(duì)象,交換兩個(gè)內(nèi)存的角色,完成垃圾回收。如果系統(tǒng)中垃圾對(duì)象多,復(fù)制算法需要復(fù)制的對(duì)象數(shù)量不會(huì)太多,又由于對(duì)象被復(fù)制到新的內(nèi)存空間,所以確保沒(méi)有碎片。但是復(fù)制算法缺點(diǎn)是將系統(tǒng)內(nèi)存折半,因此單純的復(fù)制算法難以讓人接受

在Java的新生代串行垃圾回收期中,使用了復(fù)制算法的思想,將新生代分為eden空間、from空間和to空間3個(gè)部分。其中from和to空間可以視為用于復(fù)制的兩塊大小相同、地位相等且可角色互換的空間塊。復(fù)制算法比較適合新生代,因?yàn)樵谛律?#xff0c;垃圾對(duì)象通常會(huì)多于存活對(duì)象,復(fù)制算法的效果會(huì)比較好

標(biāo)記-壓縮算法(Mark-Compact):復(fù)制算法的高效建立在存活對(duì)象少、垃圾對(duì)象多的場(chǎng)景下,因此適合年輕代。但是對(duì)于老年代,更常見(jiàn)的是大部分對(duì)象都是存活對(duì)象,因此基于這種特性,需要使用新的算法。標(biāo)記-壓縮算法在標(biāo)記-清除的基礎(chǔ)上做了一些優(yōu)化。與標(biāo)記-清除一樣從根節(jié)點(diǎn)開(kāi)始對(duì)所有可達(dá)對(duì)象做一次標(biāo)記,但是之后清理未標(biāo)記對(duì)象時(shí),將存活對(duì)象壓縮到內(nèi)存的一端,然后清理邊界外的所有空間。這種方法既避免碎片的產(chǎn)生,又不需要兩塊相同的內(nèi)存空間,因此性價(jià)比較高

增量算法(Incremental Collecting):對(duì)大部分垃圾回收算法來(lái)說(shuō),在回收過(guò)程應(yīng)用程序都處于stop the world狀態(tài),所有線程都會(huì)掛起,暫停一切正常工作等待垃圾回收完成。如果回收時(shí)間很長(zhǎng)就會(huì)嚴(yán)重影響用戶體驗(yàn)和系統(tǒng)穩(wěn)定性。增量算法的基本思想是,如果一次性將所有垃圾進(jìn)行處理,需要造成系統(tǒng)長(zhǎng)時(shí)間停頓,那么就可以讓垃圾回收線程和應(yīng)用程序線程交替執(zhí)行。每次垃圾收集線程只收集一小塊的內(nèi)存空間,然后切換到應(yīng)用程序線程,如此反復(fù)直到垃圾收集完成。這種方式下,能間斷性地執(zhí)行應(yīng)用程序代碼,所以能減少系統(tǒng)停頓時(shí)間,但是由于線程切換和上下文轉(zhuǎn)換的消耗,會(huì)使得垃圾回收總成本上升,造成系統(tǒng)吞吐量下降

分代(Generational Collecting):所有的算法都無(wú)法完全替代其他算法,都具有獨(dú)特的優(yōu)勢(shì)和特點(diǎn),因此根據(jù)垃圾回收對(duì)象的特性,使用合適的算法才是明智之舉。分代就是基于這種思想,將內(nèi)存區(qū)間根據(jù)對(duì)象的特點(diǎn)分成幾塊,根據(jù)每塊內(nèi)存的特點(diǎn)選擇不同的回收算法,提高回收效率。幾乎所有的垃圾回收器都區(qū)分年輕代和老年代

分區(qū)算法(Region):分代算法是按照對(duì)象的生命周期長(zhǎng)短劃分成兩個(gè)部分,分區(qū)算法是將整個(gè)堆空間劃分為連續(xù)的不同小區(qū)間,每個(gè)小區(qū)間都獨(dú)立使用,獨(dú)立回收。這種算法的好處是可以控制一次回收多少個(gè)小區(qū)間,一般來(lái)說(shuō)堆空間越大,相同條件下一次GC所需的時(shí)間就越長(zhǎng),那么每次合理回收若干個(gè)小區(qū)塊,從而可以減少一次GC所產(chǎn)生的停頓

分類

按線程數(shù)分,可以分為串行垃圾回收器和并行垃圾回收器;按工作模式分,可以分為并發(fā)式垃圾回收器和獨(dú)占式垃圾回收器;按碎片處理方式,可以分為壓縮式垃圾回收器和非壓縮式垃圾回收器;按工作的內(nèi)存區(qū)間,可以分為新生代垃圾回收器和年老代垃圾回收器

評(píng)價(jià)指標(biāo):
1、吞吐量:指在應(yīng)用程序的生命周期內(nèi),應(yīng)用程序所花費(fèi)的時(shí)間和系統(tǒng)總運(yùn)行時(shí)間(應(yīng)用耗時(shí)+GC耗時(shí))的比值
2、垃圾回收器負(fù)載:與吞吐量相反,是垃圾回收器耗時(shí)與系統(tǒng)運(yùn)行總時(shí)間的比值
3、停頓時(shí)間:指垃圾回收器正在運(yùn)行時(shí),應(yīng)用程序的暫停時(shí)間
4、垃圾回收頻率:指垃圾回收器多長(zhǎng)時(shí)間會(huì)運(yùn)行一次
5、反應(yīng)時(shí)間:指當(dāng)一個(gè)對(duì)象成為垃圾后,多長(zhǎng)時(shí)間它所占用的內(nèi)存會(huì)被釋放
6、堆分配:不同垃圾回收器對(duì)堆內(nèi)存的分配方式可能不同,一個(gè)良好的垃圾回收期需要有一個(gè)合理的堆內(nèi)存區(qū)間劃分

新生代串行收集器 Serial

是最古老的一種,也是JDK最基本的垃圾收集器之一。主要有兩個(gè)特點(diǎn):第一,它僅僅使用單線程進(jìn)行垃圾回收;第二,它是獨(dú)占式的垃圾回收。因此垃圾收集器運(yùn)行時(shí),應(yīng)用所有線程都停止工作進(jìn)行等待。雖然如此,但是串行收集器是一個(gè)成熟、經(jīng)過(guò)長(zhǎng)時(shí)間考驗(yàn)的極為高效的收集器。新生代串行收集器使用復(fù)制算法,實(shí)現(xiàn)相對(duì)簡(jiǎn)單,邏輯處理高效,而且沒(méi)有線程切換的開(kāi)銷,在諸如單CPU或較小應(yīng)用內(nèi)存等硬件的平臺(tái),它的性能可以超過(guò)并行回收器和并發(fā)回收器

-XX:+UseSerialGC,指定使用新生代串行收集器和年老代串行收集器。當(dāng)JVM在Client模式下時(shí),它是默認(rèn)的垃圾收集器

老年代串行收集器 Serial Old

采用的是標(biāo)記-壓縮算法,和新生代串行收集器一樣,是串行的、獨(dú)占式的垃圾回收器。由于老年代垃圾回收器通常比新生代垃圾回收器使用更長(zhǎng)的時(shí)間,因此在堆空間較大的應(yīng)用中,一旦老年串行收集器啟動(dòng),應(yīng)用程序?qū)?huì)因此停頓幾秒甚至更長(zhǎng)。雖然如此,作為老牌的垃圾回收器,老年代串行收集器可以和多種新生代回收器配合使用,同時(shí)它也作為CMS回收器的備用回收器

-XX:+UseSerialGC,新生代、老年代都使用串行回收器
-XX:+UseParNewGC,新生代使用并行收集器,老年代使用串行收集器
-XX:+UseParallelGC,新生代使用并行回收收集器,老年代使用串行收集器

新生代并行收集器 ParNew

并行收集器是工作在新生代的垃圾收集器,它只是簡(jiǎn)單地將串行回收器多線程化,它的回收策略、算法以及參數(shù)和串行回收器一樣,并行回收器也是獨(dú)占式的回收器。但由于多線程進(jìn)行垃圾回收,因此在并發(fā)能力較強(qiáng)的CPU上,暫停時(shí)間短于串行回收器

-XX:ParallelGCThreads,指定工作時(shí)的線程數(shù)量,一般與CPU數(shù)量相當(dāng)
-XX:+UseParNewGC,新生代使用并行收集器,老年代使用串行收集器
-XX:+UseConcMarkSweepGC,新生代使用并行收集器,老年代使用CMS

新生代并行回收收集器 Parallel Scavenge

新生代并行回收器也是使用復(fù)制算法的收集器,表面上和并行收集器一樣,都是多線程、獨(dú)占式的收集器。但是它有一個(gè)重要的特點(diǎn),就是它非常關(guān)注系統(tǒng)的吞吐量。除此之外,并行回收收集器與并行收集器另一個(gè)不同之處在于,它還支持一種自適應(yīng)的GC調(diào)節(jié)策略,這種模式下,新生代的大小、eden和survivor的比例、晉升老年代的對(duì)象年齡等參數(shù)都會(huì)被自動(dòng)調(diào)整,已達(dá)到堆大小、吞吐量和停頓時(shí)間的平衡點(diǎn),在手動(dòng)調(diào)優(yōu)比較難的場(chǎng)合可以使用這種自適應(yīng)的方式

-XX:+UseParallelGC,新生代使用并行回收收集器,老年代使用串行收集器
-XX:+UseParallelOldGC,新生代和老年代都使用并行回收收集器
-XX:MaxGCPauseMillis,設(shè)置最大垃圾收集停頓時(shí)間,值為大于0的整數(shù)。收集器在工作時(shí),會(huì)調(diào)整Java堆大小或其他參數(shù),盡可能把停頓時(shí)間控制在范圍內(nèi)。如果把值設(shè)置過(guò)小,可能JVM會(huì)使用很小的堆(小堆回收更快),這將導(dǎo)致垃圾回收變得頻繁,反而增加總時(shí)間,降低吞吐量
-XX:GCTimeRatio,設(shè)置吞吐量大小,值是0~100之間的整數(shù)
-XX:+UseAdaptiveSizePolicy,打開(kāi)自適應(yīng)GC策略

老年代并行回收收集器 Parallel Old

老年代并行回收收集器也是一種多線程并發(fā)的收集器,和新生代并行回收收集器一樣,也是一種關(guān)注吞吐量的收集器。老年代并行回收收集器使用標(biāo)記-壓縮算法

-XX:+UseParallelOldGC,新生代和老年代都使用并行回收收集器

CMS收集器

與并行回收收集器不同,CMS收集器主要關(guān)注系統(tǒng)停頓時(shí)間,是一種以獲取最短回收停頓時(shí)間為目標(biāo)的收集器。是Concurrent Mark Sweep的縮寫(xiě),意為并發(fā)標(biāo)記清除,因此它使用的是標(biāo)記-清除算法,同時(shí)也是一個(gè)使用多線程并行回收的垃圾收集器。只會(huì)回收老年代和永久帶(1.8開(kāi)始為元數(shù)據(jù)區(qū),需要設(shè)置CMSClassUnloadingEnabled),不會(huì)收集年輕代。CMS收集器的工作過(guò)程略顯復(fù)雜,主要步驟有:初始標(biāo)記、并發(fā)標(biāo)記、重新標(biāo)記、并發(fā)清除和并發(fā)重置(回收完成后重新初始化CMS數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù))。其中初始標(biāo)記和重新標(biāo)記是獨(dú)占系統(tǒng)資源的,而并發(fā)標(biāo)記、并發(fā)清除和并發(fā)重置是可以和用戶線程一起并發(fā)執(zhí)行的。因此不算是獨(dú)占式的,可以在應(yīng)用程序運(yùn)行過(guò)程中進(jìn)行垃圾回收

-XX:+UseConcMarkSweepGC,使用CMS收集器
-XX:ParallelGCThreads,設(shè)置CMS的線程數(shù)量
-XX:CMSInitiatingOccupancyFraction,設(shè)置老年代使用率回收閾值,因?yàn)镃MS回收時(shí),應(yīng)用持續(xù)工作,因此會(huì)有新的垃圾產(chǎn)生,而這些垃圾在CMS回收過(guò)程中無(wú)法清除,因此CMS回收過(guò)程中還需要保證有足夠的內(nèi)存可用,這樣就不等待堆內(nèi)存飽和再進(jìn)行回收,而是當(dāng)堆內(nèi)存使用率達(dá)到某一閾值后就進(jìn)行回收
-XX:UseCMSCompactAtFullCollection,開(kāi)關(guān)使CMS在垃圾收集完成后,進(jìn)行一次內(nèi)存碎片整理,內(nèi)存碎片整理不是并發(fā)進(jìn)行的
-XX:CMSFullGCsBeforeCompaction,指定進(jìn)行多少次CMS回收后進(jìn)行一次內(nèi)存壓縮

G1收集器

是目前最新的垃圾回收器,目標(biāo)是作為一款服務(wù)端的垃圾收集器,因此在吞吐量和停頓控制上,預(yù)期要優(yōu)于CMS收集器。與CMS相比,G收集器是基于標(biāo)記-壓縮算法的,因此不會(huì)產(chǎn)生空間碎片,G1收集器還可以進(jìn)行非常精確的停頓控制。G1能充分利用CPU、多核環(huán)境下的硬件優(yōu)勢(shì),使用多個(gè)CPU(CPU或者CPU核心)來(lái)縮短stop-The-World停頓時(shí)間。部分其他收集器原本需要停頓Java線程執(zhí)行的GC動(dòng)作,G1收集器仍然可以通過(guò)并發(fā)的方式讓java程序繼續(xù)執(zhí)行。雖然G1可以不需要其他收集器配合就能獨(dú)立管理整個(gè)GC堆,但是還是保留了分代的概念。降低停頓時(shí)間是G1和CMS共同的關(guān)注點(diǎn),但G1除了追求低停頓外,還能建立可預(yù)測(cè)的停頓時(shí)間模型,能讓使用者明確指定在一個(gè)長(zhǎng)度為M毫秒的時(shí)間片段內(nèi)。G1的運(yùn)行步驟有1、初始標(biāo)記;2、并發(fā)標(biāo)記;3、最終標(biāo)記;4、篩選回收

-XX:+UseG1GC,啟用G1回收器
-XX:+UnlockExperimentalVMOptions,允許使用實(shí)驗(yàn)性參數(shù)
-XX:GCPauseIntervalMillis,設(shè)置停頓間隔時(shí)間
-XX:MaxGCPauseMillis,設(shè)置最大垃圾收集停頓時(shí)間

8、常見(jiàn)調(diào)優(yōu)方法

將新對(duì)象預(yù)留在新生代:由于Full GC的成本要遠(yuǎn)遠(yuǎn)高于Minor GC,因此盡可能將對(duì)象分配在新生代是一項(xiàng)明智的做法。雖然大部分情況下,JVM會(huì)嘗試在eden區(qū)分配對(duì)象,但是由于空間緊張等問(wèn)題,很可能不得不將部分年輕代對(duì)象提前先老年代壓縮。因此在JVM參數(shù)調(diào)優(yōu)時(shí),可以為應(yīng)用分配一個(gè)合理的新生代空間,最大限度避免新對(duì)象直接進(jìn)入老年代的情況

-Xmn,-XX:NewRatio,-XX:SurvivorRatio

大對(duì)象進(jìn)入老年代:大部分情況下將對(duì)象分配到新生代是合理的,但是對(duì)于大對(duì)象,很可能擾亂新生代GC,并破壞新生代原有的對(duì)象結(jié)構(gòu)。因?yàn)閲L試在新生代分配大對(duì)象,可能導(dǎo)致空間不足,JVM不得不將新生代中的年輕對(duì)象移動(dòng)到年老代。因?yàn)榇髮?duì)象占用空間大,所以可能需要移動(dòng)大量小的年輕對(duì)象進(jìn)入老年代,這對(duì)GC來(lái)說(shuō)是相當(dāng)不利的。但是如果大對(duì)象是個(gè)短命的對(duì)象,這種情況出現(xiàn)比較頻繁,那對(duì)GC也是一種災(zāi)難,擾亂了分代內(nèi)存回收的思想,因此應(yīng)該盡可能避免使用短命的大對(duì)象

-XX:PretenureSizeThreshold

設(shè)置對(duì)象進(jìn)入老年代的年齡:對(duì)象在eden區(qū)經(jīng)過(guò)一次GC后還存活,就移到survivior區(qū)并年齡加1,直到達(dá)到閾值進(jìn)入老年代。默認(rèn)值是15,但不意味著必須要達(dá)到這個(gè)年齡才能進(jìn)入老年代。實(shí)際上,對(duì)象實(shí)際進(jìn)入老年代的年齡是虛擬機(jī)在運(yùn)行時(shí)根據(jù)內(nèi)存使用情況動(dòng)態(tài)計(jì)算的,參數(shù)只是可以指定閾值年齡的最大值,即實(shí)際晉升年齡取閾值與動(dòng)態(tài)計(jì)算年齡中的最小值

-XX:MaxTenuringThreshold

穩(wěn)定與震蕩堆大小:穩(wěn)定的堆大小對(duì)垃圾回收是有利的,獲得穩(wěn)定堆大小的方式就是將-Xms和-Xmx設(shè)為大小一致。這樣運(yùn)行時(shí)堆大小恒定,穩(wěn)定的堆空間可以減少GC次數(shù)。但是不穩(wěn)定的堆也并不是毫無(wú)用處,穩(wěn)定的堆雖然減少GC次數(shù),但是也可能增加每次GC的時(shí)間。當(dāng)系統(tǒng)不需要大內(nèi)存時(shí),讓堆大小在一個(gè)區(qū)間中震蕩,壓縮堆空間,使GC應(yīng)對(duì)一個(gè)較小的堆,可以加快單次GC速度

-XX:MinHeapFreeRatio,-XX:MaxHeapFreeRatio

吞吐量?jī)?yōu)先案例:-Xms與-Xmx一致,使用-XX:+UseParallelGC新生代使用并行回收收集器并設(shè)置線程數(shù),-XX:UseParallelOldGC老年代也使用并行回收收集器

使用大頁(yè)案例:-XX:LargePageSizeInBytes設(shè)置大頁(yè)的大小,使用大的內(nèi)存分頁(yè)可以增強(qiáng)CPU的內(nèi)存尋址能力,從而提高系統(tǒng)性能

降低停頓案例:首先考慮使用關(guān)注系統(tǒng)停頓時(shí)間的CMS回收器,其次考慮減少Full GC次數(shù),應(yīng)盡可能將對(duì)象預(yù)留在新生代

9、其他實(shí)用JVM參數(shù)

JIT編譯參數(shù),JVM的JIT編譯器,可以在運(yùn)行時(shí)將字節(jié)碼編譯為本地代碼,從而提高函數(shù)的執(zhí)行效率,JIT編譯會(huì)花費(fèi)一定時(shí)間,但未來(lái)運(yùn)行中這些時(shí)間會(huì)被賺回來(lái)

-XX:CompileThreshold,JIT編譯閾值,當(dāng)函數(shù)調(diào)用次數(shù)超過(guò)該值,JIT就將字節(jié)碼編譯為本地機(jī)器碼。在Client模式默認(rèn)1500,Server模式下默認(rèn)10000 -XX:+CITime,打印JIT編譯的耗時(shí) -XX:+PrintCompilation,打印JIT編譯的信息

堆快照

-XX:+HeapDumpOnOutOfMemoryError,將當(dāng)前的堆信息保存到文件中,對(duì)于排查問(wèn)題是很有幫助的 -XX:HeapDumpPath,指定堆快照保存位置

取得GC信息

-verbose:gc-XX:+PrintGC,獲取簡(jiǎn)要的GC信息 -XX:+PrintGCDetails,獲取詳細(xì)GC信息

類和對(duì)象跟蹤

-XX:+TraceClassLoading,跟蹤類加載信息 -XX:+TraceClassUnloading,跟蹤類卸載信息 -verbose:class,同時(shí)打開(kāi)類加載和類卸載信息

控制GC

-XX:+DisableExplicitGC,禁止在程序中使用System.gc()觸發(fā)Full GC -Xnoclassgc,不需要回收類 -Xincgc,開(kāi)啟后系統(tǒng)會(huì)進(jìn)行增量式的GC,增量式GC使用特定算法讓GC線程與應(yīng)用線程交叉執(zhí)行,從而減小停頓時(shí)間

Solaris下線程控制

-XX:+UseBoundThreads,綁定所有用戶線程到內(nèi)核線程,減少線程進(jìn)饑餓狀態(tài)的次數(shù) -XX:+UseLWPSynchronization,使用內(nèi)核線程代替線程同步 -XX:+UseVMInterruptibleIO,允許運(yùn)行時(shí)中斷線程

使用大頁(yè)

-XX:+UseLargePages,啟用大頁(yè) -XX:LargePageSizeInBytes,設(shè)置大頁(yè)的大小

總結(jié)

以上是生活随笔為你收集整理的JVM调优笔记:认识JVM内存模型(jdk1.8)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

日韩av手机在线观看 | 国产伦理久久精品久久久久_ | 亚洲国产精品成人女人久久 | 日韩成人精品一区二区三区 | 欧美亚洲久久 | 亚洲国产高清在线观看视频 | 日韩欧美国产免费播放 | 久久国产精品视频观看 | 欧美 日韩 久久 | 日韩在线观看你懂得 | 九月婷婷色 | 99热亚洲精品 | 国产精品久久久久久久久久久免费 | 成人欧美一区二区三区黑人麻豆 | 天天色天天综合 | 久久综合九色综合97_ 久久久 | 在线观看亚洲国产 | 国产成人a v电影 | 欧美精品一二三 | 在线精品亚洲一区二区 | 日韩毛片在线播放 | 亚洲www天堂com | 91在线免费观看国产 | 亚洲黄色免费在线 | av免费在线观 | 日本黄色免费在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 96在线 | 国产精品门事件 | 黄色国产大片 | 青青草国产成人99久久 | 久久夜色精品国产欧美一区麻豆 | 综合激情婷婷 | 天天骚夜夜操 | 一区二区国产精品 | 成人av日韩| 免费在线国产视频 | bbbb操bbbb | 手机看片久久 | 99热这里只有精品国产首页 | 国产免费影院 | 久久婷婷精品视频 | 久久久九九 | 久久久这里有精品 | 久久综合久久久久88 | 午夜精品久久久 | 丁香色婷 | 国产精品美女免费视频 | 国产精品久久久久四虎 | 欧美一区,二区 | 在线激情影院一区 | 日韩一级成人av | 日韩激情视频在线观看 | 欧美aaa级片| 国产精品毛片久久 | 精品免费视频123区 午夜久久成人 | 亚洲精品在线网站 | 国产精品不卡av | 久久精品久久久久久久 | 97精品国产97久久久久久粉红 | 国产网站在线免费观看 | 国内精品在线看 | 久久免费国产视频 | 丁香午夜 | 日韩一区视频在线 | 国产成人精品一区二区三区在线 | 久久亚洲视频 | 黄色成年片 | 人人爽人人澡 | 国产亚洲精品综合一区91 | 日韩精品一区二区免费 | 中文字幕91在线 | 亚洲三级在线免费观看 | 狠狠躁夜夜躁人人爽超碰91 | 黄色大片视频网站 | 激情动态 | 一区二区三区在线免费观看视频 | 久草在线视频新 | 免费视频网 | 人人舔人人射 | 欧美精品一区二区免费 | 久久少妇av | 一级免费黄视频 | 久久久久久久久综合 | 国产麻豆电影在线观看 | www免费在线观看 | 24小时日本在线www免费的 | 黄网av在线| av不卡在线看 | 日本久久高清视频 | 99视频精品 | 2019中文在线观看 | 国产在线观看一区 | 日本久草电影 | 久久久一本精品99久久精品 | 丁香婷婷射 | 99视频免费| 日韩日韩日韩日韩 | 人人爽人人爽人人片av免 | 国产精品99久久久久久久久久久久 | 又色又爽又黄 | 992tv在线观看网站 | 国产一级淫片在线观看 | 在线播放国产一区二区三区 | 久久免费高清视频 | h网站免费在线观看 | 天天搞天天干天天色 | 国产精品12 | 91成人免费在线 | 免费亚洲成人 | 免费看黄色大全 | 日本精品午夜 | 国产精品国产毛片 | av片在线观看 | 亚洲婷婷综合色高清在线 | av三级在线免费观看 | 成人免费看电影 | 精品九九久久 | 日韩av资源在线观看 | 国产中文字幕视频在线 | 国产黄色片久久久 | 国产永久免费高清在线观看视频 | 国产中文字幕国产 | 亚洲专区在线播放 | 久久视频 | 亚洲国产精久久久久久久 | 日韩有码专区 | 天天操夜操视频 | 国产精品免费一区二区三区在线观看 | 久久伊人91| 91精品视频在线播放 | 亚洲精品视频免费在线观看 | 在线看一级片 | 免费看片网址 | 五月天亚洲精品 | 色视频网站免费观看 | 国产一区视频在线观看免费 | 99r精品视频在线观看 | 国产美女免费 | 国产男女免费完整视频 | 日日草天天干 | 日韩免费一级a毛片在线播放一级 | 国产黑丝一区二区三区 | 毛片网站在线观看 | 欧美精品一区在线 | 亚洲高清精品在线 | 日本精品一区二区三区在线观看 | 丁香五月亚洲综合在线 | 国产xx在线 | 97精品一区二区三区 | 99色免费视频 | 国产精品久久久久久一区二区三区 | 国产手机av在线 | 日日操网站 | 一级久久久 | 欧美亚洲一区二区在线 | 一区二区三区在线观看 | 欧美久久综合 | 国产一区国产精品 | 久久99国产精品久久99 | 欧美成人久久 | 国产欧美精品一区二区三区四区 | 国产视频一区在线免费观看 | 欧美日本中文字幕 | 欧美成年人在线观看 | 国产高清视频免费在线观看 | 99在线免费观看视频 | 日日躁夜夜躁aaaaxxxx | 亚洲精品国| 国产在线视频在线观看 | 免费久草视频 | 国产免费久久 | 日韩欧美综合 | 果冻av在线 | 亚洲在线精品视频 | 日韩在线电影 | 国产亚洲精品久久久久久电影 | 免费看麻豆 | 亚洲视屏| 久艹视频免费观看 | 91一区二区三区久久久久国产乱 | 九月婷婷人人澡人人添人人爽 | av高清一区二区三区 | 国产人成精品一区二区三 | 国产一区二区视频在线 | 国产高清无线码2021 | 精品国产一区二区三区久久久久久 | www色av| 亚洲免费国产视频 | 免费在线观看日韩 | 国产精品日韩在线播放 | 福利视频第一页 | 日韩毛片一区 | 成人av高清在线观看 | 一区三区视频在线观看 | 国产三级国产精品国产专区50 | 91在线麻豆 | 欧美日韩综合在线 | 国产精品久久久久婷婷二区次 | 国产69精品久久久久9999apgf | 国产精华国产精品 | 五月激情丁香 | 天天色天天| 超碰97公开 | 福利二区视频 | 国产精品一区二区久久久 | 97色狠狠 | 999久久久免费视频 午夜国产在线观看 | 日韩亚洲国产中文字幕 | 久久99精品波多结衣一区 | 99精品视频精品精品视频 | 色播亚洲婷婷 | 国产成人av免费在线观看 | 国产精品亚洲人在线观看 | 九七视频在线观看 | 国产白浆视频 | 久久99精品国产麻豆宅宅 | 亚洲第一成网站 | 99久久精品电影 | 久久色网站 | 国模精品在线 | 成人在线观看av | 麻豆免费在线播放 | 中国一级片免费看 | 成人免费亚洲 | 伊人五月天av| 黄色特级一级片 | 久久精品视频网站 | aaa日本高清在线播放免费观看 | 久久午夜剧场 | 久久视频国产精品免费视频在线 | 国产精品女教师 | 日韩中文在线播放 | 在线观看国产一区 | 欧美激情精品久久久久久免费 | 人人狠狠综合久久亚洲 | 在线视频观看成人 | 爱射综合 | 中文字幕精品www乱入免费视频 | 午夜精品久久久久久久99 | 丰满少妇高潮在线观看 | a久久免费视频 | 福利视频入口 | 国产综合精品一区二区三区 | 久久精品aaa| 亚洲精品三级 | 成在线播放 | 99r在线观看 | 国产视频精选在线 | 亚洲精品免费在线 | 久久se视频 | 超碰97成人| 久久精品视频在线观看免费 | 精品不卡视频 | 久久最新视频 | 91精品国产91久久久久久三级 | 国产高清视频在线 | 黄色国产区 | 欧美日韩免费观看一区二区三区 | 国产传媒一区在线 | 国产成人久久 | 欧美成人精品三级在线观看播放 | 成年人免费在线播放 | 一区二区视频在线观看免费 | 久久精彩视频 | 国内综合精品午夜久久资源 | 在线导航av| 亚洲国产精品久久 | 国产精品一区二区三区在线免费观看 | 中文字幕精品三区 | 91喷水| 欧美成人精品三级在线观看播放 | 成人av一区二区兰花在线播放 | 国产精品一区二区久久国产 | 国产91九色蝌蚪 | 日韩av电影免费观看 | 99国产成+人+综合+亚洲 欧美 | 综合视频在线 | 啪啪午夜免费 | 波多野结衣一区三区 | 亚洲婷婷网 | 天天天综合网 | 超碰公开97 | 中文字幕在线观看的网站 | www.777奇米 | 麻豆果冻剧传媒在线播放 | 天天操夜夜操国产精品 | jizzjizzjizz亚洲| 国产精品私拍 | 久久综合九色九九 | 黄色一级大片在线观看 | 一区久久久 | 91在线观看高清 | 精品亚洲男同gayvideo网站 | 国产艹b视频 | 最近中文字幕mv | 亚洲高清久久久 | 亚洲理论视频 | 亚洲精品久久久久久久不卡四虎 | 日韩精品免费一区二区 | 一级黄色网址 | 99999精品| 少妇激情久久 | 免费看污污视频的网站 | 亚洲成人在线免费 | 欧美日韩一区二区三区视频 | 久久爱www. | 欧美a在线免费观看 | 97操操 | 国产精品久久一区二区无卡 | www日韩精品 | 亚洲女同ⅹxx女同tv | 国产一区二区中文字幕 | 欧美aa级| 日韩剧 | 91成人在线网站 | 91精品久久久久久久久久久久久 | 一区二区三区四区在线免费观看 | 粉嫩av一区二区三区免费 | 国产理论影院 | 国产不卡精品视频 | 欧美精品中文在线免费观看 | av成人在线播放 | 成人免费在线视频 | 999免费视频 | 久久午夜免费观看 | 97视频在线观看免费 | 国产精品理论视频 | av电影不卡在线 | 在线看片视频 | 国产在线欧美 | 日韩成人免费电影 | 欧美日韩免费网站 | 日本激情中文字幕 | 日韩电影中文字幕在线观看 | 国产精品一区二区三区在线 | 欧美日韩视频在线一区 | 黄色大片视频网站 | 久久无码精品一区二区三区 | 综合色狠狠 | 久久久 精品 | 999久久久久久 | 日本在线精品视频 | 日本黄色免费在线 | 免费日韩 精品中文字幕视频在线 | 美女亚洲精品 | 日本特黄一级 | 欧美日韩不卡在线观看 | 欧美与欧洲交xxxx免费观看 | 日韩在线首页 | 成人免费观看在线视频 | 最近乱久中文字幕 | 91九色蝌蚪 | 亚洲va在线va天堂 | 乱子伦av | 丁香六月国产 | 91av福利视频 | 亚洲精品在线观看网站 | 五月激情片 | 国产精品久久久久久欧美 | 国产精品观看在线亚洲人成网 | 最新日韩在线 | 国产精品视频专区 | 欧美中文字幕第一页 | 五月天伊人网 | 久草www | 日韩网站在线播放 | 久久精品视频在线免费观看 | 免费网站在线 | 人人cao | 亚洲天堂网视频在线观看 | 久久久久久久久久久福利 | 午夜精品99久久免费 | 国产精品美女毛片真酒店 | 成人在线黄色 | 欧美激情精品 | 久久久久区 | 久色婷婷 | 精品国产精品国产偷麻豆 | 福利一区二区三区四区 | 国产精品美女999 | 免费看高清毛片 | 久久公开视频 | 欧美日韩一区二区三区视频 | 特级毛片爽www免费版 | 日韩久久在线 | 久草a在线| 午夜视频亚洲 | 亚洲一区二区91 | 国产高清无av久久 | www.日日操.com| 精品国产123 | 日韩精品视频网站 | 又长又大又黑又粗欧美 | 精品国内自产拍在线观看视频 | 日韩在线首页 | 亚洲极色 | 久久久久久视频 | 日韩一级片观看 | 日韩欧美一区二区三区视频 | 久草久| 91精品对白一区国产伦 | 久久一区二区三区超碰国产精品 | 黄色成人小视频 | 国产一区影院 | 亚洲韩国一区二区三区 | 最近免费中文视频 | 精品久久久久久亚洲综合网 | 一区二区三区三区在线 | 亚洲午夜av久久乱码 | 久久综合欧美精品亚洲一区 | 国产精品久久久一区二区 | 91字幕| 午夜精品电影 | 欧美日韩在线观看一区 | 色姑娘综合天天 | 日韩一区二区三免费高清在线观看 | 久热久草 | 欧美日高清视频 | 精品久久久久_ | 亚洲精品合集 | 国产精品麻豆欧美日韩ww | 人人插人人射 | 免费69视频 | 亚洲狠狠婷婷综合久久久 | 麻豆国产精品va在线观看不卡 | av中文电影| 天天爽天天爽天天爽 | 亚洲最新视频在线播放 | 亚洲一二三在线 | 国产在线a免费观看 | 精品国产电影一区二区 | 日韩av网址在线 | 手机av片 | 国产视频一区在线免费观看 | 色婷婷中文 | 日韩剧| 成人午夜在线电影 | 九九免费观看视频 | 日韩电影中文字幕 | 丁香六月婷婷 | 五月天激情电影 | 99电影 | 99久久综合国产精品二区 | 丁香九月激情 | 天天干天天操天天搞 | 日韩不卡高清视频 | 国产亚洲一区二区在线观看 | 粉嫩av一区二区三区入口 | 在线观看免费成人 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产精品亚洲a | 狠狠色伊人亚洲综合网站野外 | 国产片免费在线观看视频 | 99免费国产| 亚洲 中文 欧美 日韩vr 在线 | 日韩美精品视频 | 久久av影视 | 国产剧情在线一区 | 精品在线播放视频 | 成人国产精品久久久久久亚洲 | 日日操狠狠干 | 国产一区久久久 | 色播五月激情五月 | 欧美aaa视频 | 国产永久免费高清在线观看视频 | 在线不卡中文字幕播放 | 在线观看视频97 | 国产色影院 | 日韩性片 | 丁香花中文在线免费观看 | 国产成人a亚洲精品 | 韩国在线视频一区 | 久久亚洲福利 | 91在线在线观看 | 亚洲精品网址在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 色婷婷国产精品一区在线观看 | a视频在线观看 | 国产一区二区视频在线 | 日韩精品在线看 | 中文字幕免费看 | 91在线视频在线 | 久久高清av| 国产中文字幕视频在线观看 | 在线视频黄 | 国产粉嫩在线 | 99久高清在线观看视频99精品热在线观看视频 | 99免费看片 | 毛片黄色一级 | 国产精品久久久久影视 | 99国产视频 | 五月天婷亚洲天综合网鲁鲁鲁 | 国产精品99久久免费黑人 | 成人国产网址 | 人人澡人人添人人爽一区二区 | 久草视频视频在线播放 | 色网站在线看 | 天堂入口网站 | 国产精品麻 | 国产午夜精品免费一区二区三区视频 | 蜜臀av免费一区二区三区 | 国产高清小视频 | 在线观看第一页 | 欧美 另类 交 | 色在线视频| 91大神精品视频在线观看 | 欧美日韩免费网站 | 国产精品久久久久久久久久久久 | 国内偷拍精品视频 | 国产精品久久久久久超碰 | 99久久精品免费视频 | 黄www在线观看 | 99精品视频在线播放观看 | 国产69精品久久99不卡的观看体验 | 免费网站在线观看人 | www视频在线免费观看 | 九七视频在线观看 | 手机在线观看国产精品 | 91视频免费观看 | 亚洲电影第一页av | 国内免费的中文字幕 | 一区二区不卡高清 | 中文字幕在线视频一区二区 | 国产在线久草 | 欧美片网站yy | 国产精品尤物 | 久草综合视频 | 草久视频在线 | 欧美一级片在线免费观看 | 日本久久电影网 | 最近中文字幕第一页 | 久久影视一区 | 久久福利影视 | 激情欧美丁香 | 在线欧美a| 午夜在线免费观看视频 | 九色91在线 | 久久麻豆精品 | 二区三区在线 | 91网免费看| 五月激情姐姐 | 午夜精品久久久 | 黄色视屏免费在线观看 | a天堂最新版中文在线地址 久久99久久精品国产 | 欧美日本一二三 | 亚洲在线视频观看 | 免费成人在线观看 | 91黄色小视频 | 欧美日韩视频在线播放 | 在线国产一区 | 亚洲激情在线视频 | 中文字幕日本特黄aa毛片 | 亚洲成人av片在线观看 | 国产免费av一区二区三区 | 四虎在线影视 | 日韩精品欧美精品 | av色综合 | 91在线免费观看网站 | 狠狠色丁香婷婷综合久小说久 | 久久99国产精品久久 | 99精品视频网 | 欧美精品一区二区三区四区在线 | 97精产国品一二三产区在线 | 日韩三级精品 | 精品日韩在线 | 日韩在线视频播放 | 国内精品久久久久久久久久清纯 | 成人avav | 久久国产电影 | 成年人av在线播放 | 一级黄色片网站 | 日韩色区| 国产一及片| 国内精品国产三级国产aⅴ久 | 在线一区二区三区 | 最近日韩免费视频 | 国产九九精品 | av免费在线观 | 岛国大片免费视频 | 国产婷婷视频在线 | www.狠狠色.com| 国产成人精品一区二区三区在线观看 | 欧美精品久久久久久久久久久 | 嫩草av在线 | 久久国语露脸国产精品电影 | www.国产在线观看 | 日韩免费一级电影 | 久久久久日本精品一区二区三区 | 日韩在线观看你懂的 | 91麻豆视频| 亚洲免费av网站 | 国产福利a | 国产日本高清 | 激情五月伊人 | 欧美日韩在线视频免费 | 国产中文字幕国产 | 日韩久久精品一区二区 | 日本精品久久久久久 | 欧洲亚洲国产视频 | 久久 地址 | 夜夜高潮夜夜爽国产伦精品 | 亚洲成人精品影院 | 麻豆传媒在线免费看 | 一区二区不卡 | 亚洲精品一区二区网址 | 久久精品伊人 | 色婷丁香 | 在线精品视频在线观看高清 | av在线免费观看黄 | 色5月婷婷 | 狠狠操影视 | 91麻豆精品国产91久久久更新时间 | 天天操天天射天天操 | 天天狠狠干 | 日本黄色免费看 | 国产99久 | 精品福利国产 | 久久一区91 | 一二三区视频在线 | 97精品久久 | 黄色av网站在线观看免费 | 在线观看国产日韩 | 久艹视频免费观看 | 在线观看免费一级片 | 国产视频中文字幕在线观看 | 色视频网站在线 | 欧美日本啪啪无遮挡网站 | 中文字幕在线视频网站 | 在线性视频日韩欧美 | 91麻豆精品国产91 | 黄色国产成人 | 国产成人黄色在线 | 国产一级免费观看视频 | 91日韩在线| 91亚洲国产成人久久精品网站 | 国产精品尤物视频 | 免费观看特级毛片 | 久久66热这里只有精品 | 不卡电影免费在线播放一区 | 波多野结衣视频一区二区 | 中文字幕日本在线观看 | 成人免费共享视频 | 超碰在97 | 免费久久精品视频 | 色视频国产直接看 | av九九| 亚洲视频每日更新 | 99 色| 天天天插| 五月婷婷.com | 片网站 | 992tv在线观看 | 精品主播网红福利资源观看 | 精品不卡视频 | 欧美日本不卡高清 | 日韩欧美在线视频一区二区三区 | 99国产成+人+综合+亚洲 欧美 | 国产亚洲精品福利 | 午夜精品99久久免费 | 亚洲丝袜一区二区 | 91视频免费视频 | 99精品视频中文字幕 | 亚洲人成人在线 | 国产正在播放 | 国产精品丝袜在线 | 国产69精品久久久久99 | 国产精品一区二区久久 | 国产五十路毛片 | 91看成人 | 综合色站 | 色五月色开心色婷婷色丁香 | 亚洲女人av | 奇米网网址| 精品国产_亚洲人成在线 | 97在线成人| 91麻豆精品国产91久久久无需广告 | 精品国产精品久久一区免费式 | 久久久久久久久久网站 | 国产精品免费观看久久 | 国产精品粉嫩 | 国产免费国产 | 国产午夜精品一区二区三区在线观看 | 国产一级在线免费观看 | 国产手机视频在线播放 | 超碰97成人 | 国产尤物一区二区三区 | 色香天天 | 精品黄色在线观看 | 99久久www免费 | 亚洲欧美日韩国产一区二区三区 | 精品在线看 | 婷婷丁香色综合狠狠色 | 成人免费在线电影 | 国产视频九色蝌蚪 | 亚洲欧美日韩国产一区二区 | 亚洲国产成人精品在线 | 亚洲精品男人天堂 | 91在线免费观看网站 | 色综合久久久久久中文网 | 91色一区二区三区 | 在线蜜桃视频 | 国产大片免费久久 | 美女露久久 | 国产精品久久久久永久免费看 | 国产精品九九视频 | 99精品国产福利在线观看免费 | 欧美另类性 | 在线看日韩 | 高清一区二区三区av | 三级av中文字幕 | 性日韩欧美在线视频 | 国产精品久久久久久久久久久久冷 | 美女网站色在线观看 | 久久国产精品网站 | 国产午夜不卡 | 日韩欧美视频免费观看 | 久草在线国产 | 免费看一及片 | 天天操天天草 | 91久久久久久久一区二区 | 国色天香永久免费 | 国产精品aⅴ | 欧美色综合天天久久综合精品 | 99视频精品免费观看, | 福利精品在线 | 国产在线2020 | 久久综合中文字幕 | 色偷偷88888欧美精品久久久 | 久久久久久久久久福利 | 欧美日韩一区二区在线 | av千婊在线免费观看 | 天天操夜夜操天天射 | 免费观看国产视频 | 国产精品麻豆一区二区三区 | 六月婷操 | 天天干天天操av | 久久视频免费在线 | 久久久久久久免费观看 | 欧美片网站yy | 超碰在线公开免费 | 日日爱夜夜爱 | 中文字幕av电影下载 | 91你懂的 | 国产成人一区二区啪在线观看 | 日韩动态视频 | 九九热在线精品视频 | 亚洲激情五月 | 久久欧美精品 | 国产视频一区在线 | 又紧又大又爽精品一区二区 | 九九色视频 | 欧美一区二区免费在线观看 | 国产字幕在线播放 | 波多野结衣视频一区 | 国产黄色精品在线观看 | 97激情影院| 成人精品国产 | 亚洲91视频 | 国产一区二三区好的 | 日韩毛片在线一区二区毛片 | 在线观看视频97 | 怡春院av| 欧美激情精品久久 | 四虎国产精品成人免费影视 | 色噜噜噜 | 99精品黄色片免费大全 | 激情大尺度视频 | 激情五月综合 | 日韩性久久 | 成人国产精品一区 | www久久| 91亚洲国产成人久久精品网站 | 久久久污 | 国产精品成人一区二区三区吃奶 | 视频一区视频二区在线观看 | 日韩av一区二区三区四区 | 久久久久久国产精品 | 久久综合亚洲鲁鲁五月久久 | 亚洲天堂精品视频在线观看 | 久久国产精品久久久久 | 高清不卡一区二区在线 | 国产亚洲精品久久久久久网站 | 91在线中文 | 黄污污网站 | 涩涩网站在线观看 | 在线视频久 | 成人中文字幕在线 | 人人爽人人 | 久久y| av在线官网| 国产精品欧美日韩 | 国产高清在线看 | 久久免费片 | 精品国产电影一区二区 | 国产性xxxx | 免费在线电影网址大全 | 人人舔人人射 | 中文字幕在线免费 | 日韩视频www | 成人av免费电影 | 亚洲国产精品成人女人久久 | 五月天久久久久 | 日韩精品在线免费播放 | a天堂免费 | 久久成人午夜视频 | 色婷婷激情五月 | 99精品在线免费视频 | 永久免费精品视频 | 香蕉网站在线观看 | 黄色av网站在线免费观看 | 99久久综合精品五月天 | 国产麻豆传媒 | www.亚洲精品 | 欧美成年网站 | 久久久久高清毛片一级 | 欧美成人性网 | 国内久久视频 | 亚洲片在线观看 | 在线99热 | 狠狠色丁香久久婷婷综合五月 | 在线视频成人 | 美女网站在线看 | 一区二区三区国产精品 | 中文日韩在线视频 | 亚洲精品综合一二三区在线观看 | 999精品视频| 久草精品视频 | 亚洲精区二区三区四区麻豆 | 成人国产精品久久久 | 日本三级久久 | 国产xxxxx在线观看 | 精品久久片 | 一区二区三区在线播放 | 日韩啪视频 | 黄色av网站在线观看 | 亚洲午夜av电影 | 欧美a级成人淫片免费看 | 久久午夜色播影院免费高清 | 精品一二区 | 久久精品久久久精品美女 | 成人国产精品久久久久久亚洲 | 欧美日本一区 | 狠狠操狠狠操 | 91在线一区 | 中文字幕在线观看网站 | 激情视频久久 | 天天干天天看 | 亚洲国产成人高清精品 | 国产精品免费久久久久久久久久中文 | 黄色网址在线播放 | 超碰在线观看av.com | 91视频电影 | 天天做天天爱天天爽综合网 | 999成人网 | 精品久久久久久久 | 天天干夜夜夜操天 | 我爱av激情网 | 免费精品 | 欧美精品乱码99久久影院 | 27xxoo无遮挡动态视频 | 天天爱天天操天天干 | 日本h视频在线观看 | 精品国产不卡 | 青青河边草免费观看 | 久久久精品成人 | 国产 中文 日韩 欧美 | 99在线视频播放 | 国产午夜精品福利视频 | 最新av观看 | 亚洲精品欧美专区 | 免费看成年人 | 亚洲天堂色婷婷 | 四虎永久视频 | 国内久久精品视频 | 韩国av免费在线 | 麻豆视传媒官网免费观看 | 欧美在线视频一区二区 | 97视频在线免费观看 | 99热在线精品观看 | 中文视频一区二区 | 91九色porny蝌蚪主页 | 久草在线这里只有精品 | 一区二区三区国产欧美 | 正在播放国产一区 | 精品国产一区二区三区久久影院 | 天天摸天天舔 | 米奇影视7777 | 天天色天天射综合网 | 二区精品视频 | 亚洲成人资源在线 | 日韩理论片在线观看 | 欧美一区二区三区在线 | 丁香婷婷久久 | 天天曰天天爽 | 欧美极品少妇xxxx | 97电影手机 | 日韩大片在线 | 97人人澡人人添人人爽超碰 | 亚洲精品欧美成人 | 国产精品第二页 | 91一区啪爱嗯打偷拍欧美 | 最近中文字幕mv免费高清在线 | 99精品国产高清在线观看 | 久免费视频| 日韩精品综合在线 | 中文字幕在线观看国产 | 69av免费视频 | 成人av在线一区二区 | 99九九99九九九视频精品 | 久久久久久久久久久网站 | 色婷婷成人网 | 欧美日韩中文另类 | 亚洲精品乱码久久久久久按摩 | 色片网站在线观看 | 一区二区精品在线观看 | 国产精品久久中文字幕 | 国产成年免费视频 | 日韩啪啪小视频 | 香蕉久草| av在线电影网站 | 超碰大片| 在线看污网站 | 91理论电影 | 98精品国产自产在线观看 | 在线观看一级视频 | 日韩精品欧美精品 | 成片免费观看视频大全 | 日韩一区二区三区免费视频 | av资源免费在线观看 | 91亚洲在线 | 一区二区三区免费在线观看视频 | 丁香五香天综合情 | 97国产情侣爱久久免费观看 | 国产精品影音先锋 | 十八岁免进欧美 | 亚洲精品国产片 | 五月天最新网址 | 欧美一区成人 | 国产精品黄色av | 色综合国产 | 国产欧美在线一区二区三区 | 97国产精品视频 | 日韩精品在线播放 | 91精品专区 | 毛片一区二区 | 91av影视 | 在线看成人 | 国产精品一区二区三区久久久 | 色狠狠综合天天综合综合 | 欧美人交a欧美精品 | 天天干天天搞天天射 | 天天操人人干 | 国产免费黄色 | 香蕉视频国产在线 | 黄色一级片视频 | 久久久久久久久久久久久国产精品 | 久久亚洲精品国产亚洲老地址 | 97人人爽人人 | 一区二区三区四区五区在线 | 超碰在线公开 | 91天天视频 | 中文字幕丝袜一区二区 | 色婷婷激情综合 | 久久高清 | 91视频免费播放 | 中文字幕丝袜美腿 | 狠狠躁夜夜躁人人爽超碰91 | 日韩精品在线播放 | 中文字幕网址 | 久久精品国产免费 | 亚洲精品在线免费播放 | 国产日韩视频在线 | 欧美一区二视频在线免费观看 | 在线观看一级 | 人人舔人人舔 | 九草视频在线 | 国产中文字幕在线播放 | 国产啊v在线观看 | 国产精品久久久久久久久岛 | 色婷婷a| 天天操天天操天天操天天操 | 国产又黄又爽又猛视频日本 | 日韩电影在线观看一区 | 日韩av五月天| 久久久久综合网 | 日日爽日日操 | 欧洲精品视频一区二区 | 国产色在线,com | 99热这里只有精品国产首页 | 国产亚洲精品久久久久久移动网络 | 亚洲成 人精品 | 国产精品久久久久久欧美 | 日韩理论在线播放 | 在线免费精品视频 | 99热这里有 | 国产一级片视频 | 国产精品一区二区免费在线观看 |