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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java垃圾回收(GC)、找垃圾的方式、GC Root、GC停顿、引用、垃圾收集算法、收集器、GC日志、安全点、安全区域

發(fā)布時間:2024/10/14 java 90 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java垃圾回收(GC)、找垃圾的方式、GC Root、GC停顿、引用、垃圾收集算法、收集器、GC日志、安全点、安全区域 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

1.垃圾回收

1.1概念

在Java語言中,垃圾回收(Garbage Collection,GC)是一個非常重要的概念。

它的主要作用是回收程序中不再被使用的內(nèi)存,Java提供的GC功能可以自動監(jiān)測對象是否已經(jīng)超過作用域從而達到自動回收內(nèi)存的目的。即垃圾回收的是無任何引用的對象占據(jù)的內(nèi)存空間而不是對象本身。

1.2任務(wù)

Java語言提供了垃圾回收器來自動檢測對象的作用域,可自動地把不再被使用的存儲空間釋放掉。

具體而言,垃圾回收器主要負責(zé)三個事情

  • 分配內(nèi)存;
  • 保證不再被使用的內(nèi)存被釋放掉;
  • 保證被引用的對象不會被回收。

1.3方式

垃圾回收器通常是作為一個單獨的低優(yōu)先級的線程運行,不可預(yù)知的情況下對內(nèi)存堆中已經(jīng)死亡或者長時間沒有使用的對象進行清除和回收,程序員不能實時的調(diào)用垃圾回收器對某個對象或所有對象進行垃圾回收。

2.垃圾回收

要回收的垃圾:不可能在被任何途徑使用的對象

找到這些對象的方法:

2.1引用計數(shù)法

給對象中添加一個引用計數(shù)器。

  • 每當一個地方一用這個對象時,計數(shù)器值+1;
  • 當引用失效時,計數(shù)器值-1。

任何計數(shù)值為0的對象就是不可能再被使用的對象。

Java中沒有使用這種算法,因為這種算法很難解決對象之間相互引用的情況。

舉例

/*** 虛擬機參數(shù):-verbose:gc*/ public class ReferenceCountingGC {private Object instance = null;private static final int _1MB = 1024 * 1024;/** 這個成員屬性唯一的作用就是占用一點內(nèi)存 */private byte[] bigSize = new byte[2 * _1MB];public static void main(String[] args){ReferenceCountingGC objectA = new ReferenceCountingGC();ReferenceCountingGC objectB = new ReferenceCountingGC();objectA.instance = objectB;objectB.instance = objectA;objectA = null;objectB = null;System.gc();} }

運行結(jié)果:

GC 4417K->288K(61440K), 0.0013498 secs] [Full GC 288K->194K(61440K), 0.0094790 secs]

兩個對象相互引用著,但是虛擬機還是把兩個對象回收掉了。

這說明虛擬機并不是通過引用計數(shù)法來判定對象是否存活的。

2.2可達性分析

這個算法的思想是:用過一系列成為“GC Root”的對象作為起始點,從這些節(jié)點向下搜索,搜索所走過的路徑成為引用鏈。

當一個對象到GC Root沒有任何引用鏈(即GC Roots到對象不可達)時,則證明此對象是不可用的。

Java中的GC Roots對象包括:

  • 虛擬機棧(棧幀中的局部變量區(qū),也叫作局部變量表)中引用的對象;
  • 方法去中的類靜態(tài)屬性引用的對象;
  • 方法區(qū)中常量引用的對象;
  • 本地方法棧中JNI(Native方法)引用的對象。

GC Roots舉例:

下圖為GC Roots的引用鏈

由圖可知,obj8、obj9、obj10都沒有到GC Roots對象的引用鏈。

即便obj9和obj10之間有引用鏈,它們還是會被當成垃圾處理,可以進行回收。

2.2.1 GC停頓(的原因)

判斷對象是否存活的可達性分析對時間的敏感還體現(xiàn)在GC停頓上。

因為可達性分析工作必須在一個能確保一致性的快照中進行,

  • “一致性”的意思是指在整個分析期間整個執(zhí)行系統(tǒng)看起來就像被凍結(jié)在某個時間點上,不可以出現(xiàn)分析過程中對象引用關(guān)系還在不斷變化的情況。
  • 不然的話可達性分析的結(jié)果就無法得到保證,這是導(dǎo)致GC進行時必須停頓所有Java執(zhí)行線程的一個重要原因。

3.四種引用狀態(tài)

JDK1.2之前,Java中引用的定義很傳統(tǒng):

? ? ? ? 如果引用類型的數(shù)據(jù)中存儲的數(shù)值代表的是另一塊內(nèi)存的起始地址,就稱這塊內(nèi)存代表著一個引用。

(定義很純粹,但過于狹隘——一個對象只有被引用或者沒被引用兩種狀態(tài))

我們希望描述這樣一類對象:

當內(nèi)存的空間還足夠時,則能保留在內(nèi)存中;

如果內(nèi)存空間再進行垃圾收集后還是非常緊張,則可以拋棄這些對蒼。

JDK1.2之后,Java對引用的概念進行了擴展,將引用分為:強引用、軟引用、弱引用、虛引用四種,這四種引用強度一次減弱。

1.強引用

Object obj=new Object();這類引用;

如果一個對象具有強引用,那垃圾回收器當內(nèi)存不夠時,寧愿拋出outofmemory錯誤也不會程序終止。

只要強引用還存在,垃圾回收器永遠不會回收掉被引用的對象。

2.軟引用

有些還有用但并非必需的對象。

如果一個對象具有軟引用,如內(nèi)存空間足夠,垃圾回收器就不會回收它,如果內(nèi)存不足,就會回收這些對象的內(nèi)存(可以實現(xiàn)內(nèi)存敏感的高速緩存,軟引用可以和一個引用隊列(ReferenceQueue)聯(lián)合使用)

如果這次回收還沒有足夠的內(nèi)存,才會拋出內(nèi)存溢出異常。

Java中SoftReference表示軟引用。

主要特點:

  • 具有較強的引用功能。
  • 只有當內(nèi)存不夠的時候,才進行回收這類內(nèi)存;
  • 因此在內(nèi)存足夠的時候,它們通常不被回收。
  • 這些引用對象還能保證在Java拋出OutOfMemory 異常之前,被設(shè)置為null。
  • 它可以用于實現(xiàn)一些常用圖片的緩存,實現(xiàn)Cache的功能,保證最大限度的使用內(nèi)存而不引起OutOfMemory。
  • 3.弱引用

    非必需對象。

    被弱引用關(guān)聯(lián)的對象智能生存到下一次垃圾回收之前。

    垃圾回收器工作之后,無論當前內(nèi)存是否足夠,都會回收掉只被弱引用關(guān)聯(lián)的對象。

    Java中的類WeakReference表示弱引用。

    4.虛引用

    這個引用在內(nèi)存中存在的唯一目的就是:在這個對象被收集器回收時收到一個系統(tǒng)通知。跟蹤垃圾回收過程,清理被銷毀對象的相關(guān)資源。

    被虛引用關(guān)聯(lián)的對象,和其生存時間完全沒關(guān)系,無法通過虛引用來取得一個對象實例。

    Java中的類PhantomReference表示虛引用。

    對于可達性分析算法而言,未到達的對象并非是“非死不可”的,若要宣判一個對象死亡,至少需要經(jīng)歷兩次標記階段:

  • 如果對象在進行可達性分析后發(fā)現(xiàn),沒有與GC Roots相連 的引用鏈,則該對象被第一次標記并進行篩選。
  • 篩選條件為:是否有必要執(zhí)行該對象的finalize方法
  • 若對象沒有覆蓋finalize方法或者改對象否認finalize方法是否已經(jīng)被虛擬機執(zhí)行過了,則均視作不必要執(zhí)行該對象的finalize方法,即該對象將會被回收;
  • 反之,若該對象覆蓋了finalize并且該finalize方法并沒有被執(zhí)行過,那么,這個對象會被放置在一個叫F-Queue的隊列中,之后會有虛擬機自動建立的、優(yōu)先級低的Finalizer線程去執(zhí)行,而虛擬機不必要等待該線程執(zhí)行結(jié)束。即虛擬機只負責(zé)建立線程,其他的事情交給此線程去處理。
  • 對F-Queue中的對象進行第二次標記。
  • 如果對象在finalize方法中拯救了自己(即關(guān)聯(lián)上了GC Roots引用鏈),如把this關(guān)鍵字賦值給其他變量,那么在第二次標記的時候該對象將從“即將回收”的集合中移除;
  • 如果對象還是沒有拯救自己,那就會被回收。
  • 但是他只能拯救自己一次,第二次就被回收了,具體示例代碼如下:
  • package com.demo;/** 此代碼演示了兩點:* 1.對象可以再被GC時自我拯救* 2.這種自救的機會只有一次,因為一個對象的finalize()方法最多只會被系統(tǒng)自動調(diào)用一次* */ public class FinalizeEscapeGC {public String name;public static FinalizeEscapeGC SAVE_HOOK = null;public FinalizeEscapeGC(String name) {this.name = name;}public void isAlive() {System.out.println("yes, i am still alive :)");}@Overrideprotected void finalize() throws Throwable {super.finalize();System.out.println("finalize method executed!");System.out.println(this);FinalizeEscapeGC.SAVE_HOOK = this;}@Overridepublic String toString() {return name;}public static void main(String[] args) throws InterruptedException {SAVE_HOOK = new FinalizeEscapeGC("leesf");System.out.println(SAVE_HOOK);// 對象第一次拯救自己SAVE_HOOK = null;System.out.println(SAVE_HOOK);System.gc();// 因為finalize方法優(yōu)先級很低,所以暫停0.5秒以等待它Thread.sleep(500);if (SAVE_HOOK != null) {SAVE_HOOK.isAlive();} else {System.out.println("no, i am dead : (");}// 下面這段代碼與上面的完全相同,但是這一次自救卻失敗了// 一個對象的finalize方法只會被調(diào)用一次SAVE_HOOK = null;System.gc();// 因為finalize方法優(yōu)先級很低,所以暫停0.5秒以等待它Thread.sleep(500);if (SAVE_HOOK != null) {SAVE_HOOK.isAlive();} else {System.out.println("no, i am dead : (");}} }

    運行結(jié)果如下:

    leesfnullfinalize method executed!leesf yes, i am still alive :) no, i am dead : (

    由結(jié)果可知,該對象拯救了自己一次,第二次沒有拯救成功。

    因為對象的finalize方法至多只被系統(tǒng)調(diào)用一次

    此外,從結(jié)果我們可以得知:一個堆對象的this(放在局部變量表中的第一項)引用會永遠存在,在方法體內(nèi)可以將this吟詠風(fēng)賦值給其他變量,這樣讀一中的對象就可以被其他變量所引用,即不會被回收。

    4.方法區(qū)的垃圾回收

    方法區(qū)的垃圾回收主要回收兩部分內(nèi)容:

  • 廢棄常量
  • 無用的類
  • 4.1判斷廢棄常量

    沒有其他地方引用的常量。

    以字面量回收為例,如果一個字符串“abc”已經(jīng)進入了常量池,但是當前系統(tǒng)并沒有一個String對象引用了叫做“abc”的字面量,那么,如果發(fā)生垃圾回收并且有必要時,“abc”就會被系統(tǒng)移出常量池。

    常量池中的其他類(接口)、方法、字段的符號引用也與此類似。

    4.2判斷無用的類

    需要滿足以下三個條件:

  • 該類所有的實例都已被回收。即Java堆不存在該類的任何實例。
  • 加載該類的ClassLoader已經(jīng)被回收;
  • 該類對應(yīng)的java.lang.Class對象沒有在任何地方被引用,無法再任何地方通過反射訪問該類的方法。
  • 滿足以上三個條件的類可以進行垃圾回收。但是并不是無用就被回收,虛擬機提供了一些參數(shù)供我們配置。

    5.垃圾收集算法

    5.1標記—清除算法

    最基礎(chǔ)的算法。

    分為“標記”和“清除”兩個階段:

  • 標記處所有需要回收的對象
  • 標記完成后,統(tǒng)一回收所有被標記的對象。
  • 不足:

    • 效率:標記和清除兩個階段的效率都不高;
    • 空間:標記清除后會產(chǎn)生大量不連續(xù)的內(nèi)存碎片。內(nèi)存碎片太多可能導(dǎo)致以后程序運行過程中需要分配大對象時,無法找到足夠的連續(xù)內(nèi)存而不得不提前出發(fā)一次垃圾收集動作。

    執(zhí)行過程如圖:

    5.2復(fù)制(Copying)算法

    為了解決效率問題。

    將可用的內(nèi)存分為兩塊,每次只用其中一塊,當這一塊內(nèi)存用完了,就醬還存活著的對象復(fù)制到另一塊上面,然后再把已經(jīng)是用過的內(nèi)存空間一次性清理掉。

    這樣每次就只需要對整個半?yún)^(qū)進行內(nèi)存回收。

    內(nèi)存分配時也不需要考慮內(nèi)存碎片等復(fù)雜情況。只需要移動指針,按照順序分配即可。

    缺點:

    內(nèi)存縮小為了原來的一半,代價較高。

    現(xiàn)在的商用虛擬機都采用這種算法來回收新生代

    不過研究表明1:1的比例非常不科學(xué)。因此新生代的內(nèi)存被劃分為一塊較大的Eden空間和兩塊較小的Survivor空間。每次使用Eden和其中的一塊Survivor。

    每次回收時,將Eden和Survivor中還存活的對象一次性復(fù)制到另外一塊Survivor空間上。最后清理掉Eden和剛才用過Survivor空間。

    HotSpot虛擬機默認Eden區(qū)和Survivor區(qū)的比例為8:1,意思是,每次新生代中可用內(nèi)存空間為整個新生代容量的90%.

    當然,我們沒法保證每次回收的都只有不讀偶10%的對象存活,當Survivor空間不夠用時,需要依賴老年代進行分配擔(dān)保(Handle Promotion)。

    5.3標記—整理(Mark-Compact)算法

    復(fù)制算法在對象詢貨率較高的場景下需要進行大量的復(fù)制操作,小效率較低。

    萬一對象存活率為100%,那么需要由額外的空間進行分配擔(dān)保。

    老年代都是不易被回收的對象,對象存活率較高,因此一般不能直接選用復(fù)制算法。

    根據(jù)老年代的特點,有人提出了另外一種標記—整理算法。

    ? ? ? ? 過程與標記—清除算法一樣,不過不是直接對可回收的對象進行整理,而是讓所有存活對象都向一段移動,然后直接清理掉邊界以外的內(nèi)存。

    工作過程如圖:

    5.4分代收集算法

    根據(jù)上面的內(nèi)容,用一張圖概括一下堆內(nèi)存的布局

    現(xiàn)代商用虛擬機基本都采用分代收集算法來進行垃圾回收。

    根據(jù)對象的生命周期的不同將內(nèi)存劃分為幾塊,然后根據(jù)各塊的特點采用最適當?shù)氖占惴ā?/p>

    大批對象死去,商量對象存活的(新生代),使用復(fù)制算法,復(fù)制成本低;對象存活率高,沒有額外的空間進行分配擔(dān)保的(老年代),采用標記—清除算法或者標記—整理算法。

    6.垃圾收集器

    垃圾收集器就是上面講的理論知識的具體實現(xiàn)了。

    不同虛擬機提供的垃圾收集器可能會有很大的差別。

    我們使用的是HotSpot,HotSpot所包含的收集器如圖:

    上圖展示了7種作用域不同分代的收集器。

    如果兩個收集器之間有連線,說明它們可以搭配使用。

    虛擬機所處的區(qū)域說明它是屬于新生代收集器還是老年代收集器。

    必須明確一個觀點:沒有最好的收集器,更加沒有萬能的收集器,只能選擇對具體應(yīng)用最合適的收集器。

    6.1Serial收集器

    最基本、發(fā)展歷史最悠久的收集器。

    采用復(fù)制算法的單線程的收集器。

    • 單線程意味著它只會使用一個CPU或一條線程去完成垃圾收集工作;
    • 另一方面也意味著它進行垃圾收集時必須暫停其它線程的所有工作,直到它收集結(jié)束為止。(在用戶不可見的情況下要把用戶正常工作的線程全部停掉)——這對很多應(yīng)用是難以接受的。

    目前為止,Serial收集器依然是虛擬機運行在Client模式下默認的新生代收集器,因為它簡單而高效。

    用戶桌面應(yīng)用場景中,分配給虛擬機管理的內(nèi)存一般來說不會很大,收集幾十兆甚至一兩百兆的新生代停頓時間在幾十毫秒到一百毫秒,只要不是頻繁地發(fā)生,這點停頓是完全可以接受的。

    Serial收集器運行過程如下圖所示:

    說明:

  • 需要STW(Stop The World),停頓時間長;
  • 簡單高效,對于單個CPU環(huán)境而言,Serial收集器由于沒有線程交互開銷,可以獲取最高單線程收集效率。
  • 6.2ParNew收集器

    其實是Serial的多線程版本。輸了使用多條線程進行垃圾收集之外,其余行為和Serial收集器完全一樣,包括使用的也是復(fù)制算法。

    它是Server模式下的虛擬機首選的新生代收集器,其中一個很重要的和性能無關(guān)的原因是,處理Serial收集器外,目前只有它能與CMS收集器配合工作。

    CMS收集器是一塊幾乎可以認為有劃時代意義的垃圾收集器。因為它第一次實現(xiàn)了讓垃圾收集線程與用戶線程基本上同時工作。

    ParNew收集器在但CPU環(huán)境中絕對不會有比Serial收集器更好的效果,甚至由于線程交互的開銷,該收集器在兩個CPU的環(huán)境中都不能百分之百保證可以超越Serial收集器。

    當然,隨著可用CPU數(shù)量的增加,它對于GC時系統(tǒng)資源的有效利用還是很有好處的。

    它默認開啟的收集線程數(shù)與CPU相同,在CPU數(shù)量非常多的情況下,可以使用-XX:ParallelGCThreads參數(shù)來限制垃圾收集的線程數(shù)。

    6.3 Parallel Scavenge收集器

    也是一個新生代收集器,也是使用復(fù)制算法,也是并行的多線程收集器。

    特點:關(guān)注的點和其他收集器不同。

    • CMS等收集器的關(guān)注點是盡可能縮短垃圾收集時用戶線程的停頓時間;
    • Parallel Scavenge收集器的目標則是達到一個可控制的吞吐量。

    吞吐量:CPU用于運行用戶代碼時間與CPU總消耗時間的比值。

    即吞吐量=運行用戶代碼時間/(運行用戶代碼時間+垃圾收集時間)

    此外,Parallel Scavenge收集器是虛擬機運行在Server模式下的默認垃圾收集器。

    ?

    • 停頓時間短適合需要與用戶交互的程序,良好的響應(yīng)速度能提升用戶體驗;
    • 高吞吐量則可以高效率利用CPU時間,盡快完成運算任務(wù),主要是和在后臺運算而不需要太多交互的任務(wù)。

    虛擬機提供了-XX:MaxGCPauseMillis-XX:GCTimeRatio兩個參數(shù)來精確控制最大垃圾收集停頓時間和吞吐量大小。

    • GC停頓時間的縮短是以犧牲吞吐量和新生代空間換取的,所以第一個參數(shù)也不是越小越好;

    由于與吞吐量密切相關(guān),Parallel Scavenge收集器也稱作“吞吐量有限收集器”。

    Parallel Scavenge收集器有一個-XX:UseAdaptiveSizePolicy參數(shù),這是一個開關(guān)參數(shù):

    • 這個參數(shù)打開后,就不需要手動指定新生代的大小、Eden區(qū)和Survivor區(qū)參數(shù)等細節(jié)參數(shù)了;
    • 虛擬機會根據(jù)這些參數(shù)以提供最合適的停頓時間或者最大的吞吐量。
    • 適用于對收集器運作原理不是很了解,以至于在優(yōu)化比較困難時。使用此收集器配合自適應(yīng)調(diào)節(jié)策略,把內(nèi)存管理的調(diào)優(yōu)任務(wù)交給虛擬機來完成。

    6.4Serial Old收集器

    Serial 收集的老年版本,單線程,使用“標記—整理”算法,主要意義是給Client模式下的虛擬機使用。

    6.5Parallel Old收集器

    Parallel Scavenge收集器的老年版本,使用多線程和“標記—整理”算法。

    此收集器在JDK1.6之后出現(xiàn),“吞吐量優(yōu)先收集器”終于有了比較名副其實的應(yīng)用組合。

    在注重吞吐量以及CPU資源敏感的場合,都可以優(yōu)先考慮Parallel Scavenge收集器+Parallel Old收集器的組合。

    運行過程如圖:

    6.6CMS收集器

    Concurrent Mark Sweep收集器以互毆最短回收停頓時間為目標,使用“標記—清除”算法,收集過程分為以下四步:

  • 初始標記:標記GC Roots能直接關(guān)聯(lián)到的對象,時間很短;
  • 并發(fā)標記:進行GC Roots Tracing(可達性分析)過程,時間很長;
  • 重新標記:修正并發(fā)標記期間因用戶程序繼續(xù)運作而導(dǎo)致標記陳升變動的那一部分對象的標記記錄,時間較長;
  • 并發(fā)清除:回收內(nèi)存空間,時間很長。
  • 其中,2和4耗時最長,但是可以與用戶線程兵法執(zhí)行。

    運行過程如下:

    說明:

  • 對CPU資源非常敏感,可能會導(dǎo)致應(yīng)用程序變慢,吞吐量下降;
  • 無法處理浮動垃圾。
  • 因為在并發(fā)清理階段用戶線程還在運行,自然就會產(chǎn)生新的垃圾,而在此次收集中無法收集它們,只能留到下次收集,這部分垃圾為浮動垃圾。
  • 同時由于用戶線程并發(fā)執(zhí)行,所以需要預(yù)留一部分老年代空間提供并發(fā)收集時程序運行使用。
  • 由于采用“標記—清除”算法,會產(chǎn)生大量的內(nèi)存碎片,不利于大對象的分配,可能會提前出發(fā)一次Full GC.
  • 虛擬機提供了-XX:UseCompactAtFullCollection參數(shù)來進行碎片的合并整理過程,這樣會使得停頓時間過長;
  • 虛擬機還提供了一個參數(shù)配置-XX:CMSFullGCsBeforeCompaction,用于設(shè)置執(zhí)行多少次不壓縮的Full GC后,接著來一次帶壓縮的GC。
  • 6.7 G1收集器

    G1是目前技術(shù)發(fā)展的最前沿成果之一。

    HotSpot開發(fā)團隊賦予它的使命是未來可以替換掉JDK1.5中發(fā)布的CMS收集器。

    與其他GC收集器相比,G1收集器有以下特點:

  • 并行和并發(fā):使用多個CPU來多段Stop The World停段時間,與用戶線程并發(fā)執(zhí)行;
  • 分代收集:獨立管理整個堆,但是能夠采用不同的方式去處理新創(chuàng)建的對象和已經(jīng)存活了一段時間、熬過多次GC的就對象,以獲取更好的收集效果;
  • 空間整合:基于“標記—整理”算法,無內(nèi)存碎片便產(chǎn)生;
  • 可預(yù)測的停頓:能建立可預(yù)測的停頓時間模型,能讓使用者明確指定在一個長度為M毫秒的時間片段內(nèi),小號在垃圾收集上的時間不得超過N毫秒;
  • 在G1之前的收集器,收集范圍都是整個新生代或者老年代。

    使用G1收集器時,Java堆的內(nèi)存布局與其他的收集器有很大的額差別,他將整個Java堆劃分為多個大小相等的獨立區(qū)域(Region)。雖然還保留由新生代和老年代的概念,但是新生代和老年代不再是物理隔離的了,它們都是一部分(可以不連續(xù))Region的結(jié)合。

    6.8常用的收集器組合

    7.理解GC日志

    每種收集器的日志形式都是由它們自身的實現(xiàn)決定的。即每種收集器的日志格式都可不一樣。

    不過虛擬機為了方便用戶閱讀,將各個收集器的日志都維持了一定的共享。

    看下面一段GC日志:

    [GC [DefNew: 310K->194K(2368K), 0.0269163 secs] 310K->194K(7680K), 0.0269513 secs] [Times: user=0.00 sys=0.00, real=0.03 secs] [GC [DefNew: 2242K->0K(2368K), 0.0018814 secs] 2242K->2241K(7680K), 0.0019172 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] [Full GC (System) [Tenured: 2241K->193K(5312K), 0.0056517 secs] 4289K->193K(7680K), [Perm : 2950K->2950K(21248K)], 0.0057094 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] Heapdef new generation total 2432K, used 43K [0x00000000052a0000, 0x0000000005540000, 0x0000000006ea0000)eden space 2176K, 2% used [0x00000000052a0000, 0x00000000052aaeb8, 0x00000000054c0000)from space 256K, 0% used [0x00000000054c0000, 0x00000000054c0000, 0x0000000005500000)to space 256K, 0% used [0x0000000005500000, 0x0000000005500000, 0x0000000005540000)tenured generation total 5312K, used 193K [0x0000000006ea0000, 0x00000000073d0000, 0x000000000a6a0000)the space 5312K, 3% used [0x0000000006ea0000, 0x0000000006ed0730, 0x0000000006ed0800, 0x00000000073d0000)compacting perm gen total 21248K, used 2982K [0x000000000a6a0000, 0x000000000bb60000, 0x000000000faa0000)the space 21248K, 14% used [0x000000000a6a0000, 0x000000000a989980, 0x000000000a989a00, 0x000000000bb60000) No shared spaces configured.
  • 日志的開頭“GC”、“Full GC”表示這次垃圾收集的挺短類型,而不是用來區(qū)分新生代GC還是老年代GC的
  • 如果有Full說明本次GC停止了替她所有工作線程(Stop-The-World);
  • Full GC的寫法是Full gc(System)說明是調(diào)用System.gc()方法所觸發(fā)的GC。
  • “GC”中接下來的“[DefNew”表示GC發(fā)生的區(qū)域,這里顯示的區(qū)域名稱與使用的GC收集器密切相關(guān)
  • 上面樣例中所使用的Serial收集器中的新生代名為“Default New Generation”,所顯示的是“[DefNew”
  • 如果是ParNew收集器,新生代名稱為“[ParNew”,意為“Parllel New Generation”
  • Pallel Scavenge收集器的新生代名為“PSYoungGen”
  • 老年代和永久代同理,名稱也是由收集器決定的
  • 后面方括號內(nèi)部的“310K->194K(2368K)”、“2242K->0K(2368K)”指的是該區(qū)域已使用的容量->GC后該內(nèi)存區(qū)域已使用的容量(該內(nèi)存區(qū)域總?cè)萘?#xff09;。方括號外面的“310K->194K(7680K)“、”2242K->2241K(7680K)“則指的是GC前Java堆已使用的容量->GC后Java堆已使用的容量(Java堆總?cè)萘?#xff09;
  • 再往后“0.0269163 secs”表示該內(nèi)存區(qū)域GC所占用的時間,單位是秒。最后的“[Times:user=0.00 sys=0.00 real=0.03 secs]”則更具體了,user表示用戶態(tài)消耗的CPU時間、內(nèi)核態(tài)消耗的CPU時間、操作從開始到結(jié)束經(jīng)過的墻鐘時間。后面兩個的區(qū)別是,墻鐘時間包括各種費運算的等待消耗,比如等待磁盤I/O、等待線程阻塞,而CPU時間不包括這些耗時,擔(dān)當系統(tǒng)由多CPU或者多核時,多想愛你城操作會疊加這些CPU時間,所以如果看到user或sys時間超過real時間是完全正常的
  • :Heap:后面就列舉出堆內(nèi)存目前各個年代的區(qū)域的內(nèi)存情況
  • 7.1?通過日志看到,系統(tǒng)的請求數(shù)目很少,每個請求資源也不多,但是系統(tǒng)堆內(nèi)存占用非常高,可能出現(xiàn)了什么問題?怎樣定位問題在哪里

    可能是發(fā)生了堆溢出或內(nèi)存泄露,要解決堆內(nèi)存異常的情況一般的手段是通過內(nèi)存映像分析工具(如Eclipse Memory Analyzer)對Dump出來的堆轉(zhuǎn)儲快照進行分析,重點是確認內(nèi)存中的對象是否是有必要的,也就是要先分清楚是內(nèi)存泄露還是內(nèi)存溢出。

    • 如果是內(nèi)存泄露,可進一步通過工具查看泄露對象到GC Roots的引用鏈。于是就能找到泄露的對象是怎么與GC Roots相連接導(dǎo)致進行垃圾回收時沒能回收泄露對象所占的內(nèi)存,有了泄露對象的信息和GC Roots引用鏈的信息,就可以準確地定位出泄露代碼的位置
    • 如果沒有發(fā)出內(nèi)存泄露,也是說,內(nèi)存中的對象確實還活著,那就應(yīng)該去檢查虛擬機的堆參數(shù)(-Xmx與-Xms),與物理機器對比看是否還可以進一步擴大,從代碼上檢查是否存在某些對象聲明周期過長、持有狀態(tài)時間過長等,嘗試減少程序運行內(nèi)存消耗。

    8.垃圾回收利弊

    8.1優(yōu)點

    垃圾回收器的存在一方面把開發(fā)人員從釋放內(nèi)存的復(fù)雜工作中解脫出來,提高了開發(fā)人員的生產(chǎn)效率;

    另一方面,對開發(fā)人員屏蔽了釋放內(nèi)存的方法,可以避免因開發(fā)人員錯誤地操作內(nèi)存而導(dǎo)致應(yīng)用程序的崩潰,保證了程序的穩(wěn)定性。

    8.2缺點

    但是垃圾回收也帶來了問題,為了實現(xiàn)垃圾回收,垃圾回收器必須跟蹤內(nèi)存的使用情況,釋放沒用的對象,在完成內(nèi)存的釋放后還需要處理堆中的碎片,這些操作必定會增加JVM的負擔(dān),從而降低程序的執(zhí)行效率。

    9.垃圾回收存在的原因

    在程序開發(fā)過程中如果忘記或者錯誤的釋放內(nèi)存,往往會導(dǎo)致程序運行不正常甚至是導(dǎo)致程序崩潰。

    為了減輕程序開發(fā)人員的工作和保證程序的安全與穩(wěn)定,Java語言提供了垃圾回收器來自動檢測對象的作用域,可自動地回收不可能再被引用的對象所占用的內(nèi)存。

    要請求垃圾收集,可以調(diào)用下面的方法之一:System.gc() 或Runtime.getRuntime().gc() ,但JVM可以屏蔽掉顯式的垃圾回收調(diào)用

    10.垃圾回收的時機

    垃圾回收可能發(fā)生的時間是堆可用空間不足或CPU空閑

    對于HotSpot虛擬機,用OopMap數(shù)據(jù)結(jié)構(gòu)存儲 “程序中哪些地方存放著對象引用” 的信息。在類加載完成的時候,HotSpot就把對象內(nèi)什么偏移量上是什么類型的數(shù)據(jù)計算出來,在JIT編譯過程中,也會在特定的位置上記錄下棧和寄存器中哪些位置是引用。這樣GC在掃描時就可以直接得到這些信息了。

    10.1安全點

    程序執(zhí)行時并不是在所有地方都能停頓下來開始GC,只有到達安全點時才能暫停。其中安全點指的是記錄OopMap數(shù)據(jù)結(jié)構(gòu)的位置。

    • 安全點的選擇基本上是以程序“是否能讓程序長時間執(zhí)行的特征”為標準進行選定的。
    • “長時間執(zhí)行”的最明顯的特征就是指令序列復(fù)用,例如方法調(diào)用、循環(huán)跳轉(zhuǎn)、異常跳轉(zhuǎn)等,所有具有這些功能的指令才會產(chǎn)生safepoint。
    • 對于safepoint,另一個需要考慮的問題就是如何在GC發(fā)生時讓所有線程都“跑”到最近的安全點上再停頓下來。
      • 有兩種方案可以選擇:搶先式中斷和主動式中斷。

    10.1.1搶先式中斷

    在GC發(fā)生時,首先把所有線程全部中斷,如果發(fā)現(xiàn)有些線程中斷的地方不在安全點上,就恢復(fù)線程,讓它“跑”到安全點上。

    現(xiàn)在幾乎沒有虛擬機采用這種中斷方式應(yīng)GC事件。

    10.1.2主動式中斷

    當GC需要中斷線程的時候,不直接對線程操作,僅僅簡單地設(shè)置一個標志,各個線程執(zhí)行時主動輪詢這個標志,發(fā)現(xiàn)中斷標志為真時,就自己中斷掛起。輪詢標志的地方和安全點是重合的,另外再加上創(chuàng)建對象需要分配內(nèi)存的地方。

    10.2安全區(qū)域

    安全點機制保證了程序執(zhí)行時,在不太長的時間內(nèi)就會遇到可進入GC的安全點。但當線程處于sleep狀態(tài)或者blocked狀態(tài)時,這時候線程可能無法響應(yīng)JVM的中斷請求,“走到”安全的地方中斷掛起。

    對于這種情況,就需要安全區(qū)域來解決。

    安全區(qū)域是指在一段代碼片段之中,引用關(guān)系不會發(fā)生變化,在這個區(qū)域的任何地方開始GC都是安全的。因此也可以把安全區(qū)域看做被擴展了的安全點。

    部分整理自微信公眾號“Java編程精選”與《深入理解Java虛擬機——JVM高級特性與最佳實踐》

    在線程執(zhí)行到Safe Region中的代碼時,首先標識自己已經(jīng)進入到了Safe Region,那樣,當在這段時間里JVM要發(fā)起GC時,就不用管標識自己為Safe Region狀態(tài)的線程了。在線程要離開Safe Region時,要檢查系統(tǒng)是否已經(jīng)完成了根結(jié)點的枚舉(或者整個GC過程),如果完成了,那線程就繼續(xù)執(zhí)行,否則它就繼續(xù)等待直到收到可以安全離開Safe Region的信號為止。

    總之,程序并非是時時刻刻都可以去執(zhí)行GC操作,只有程序運行到安全區(qū)域的時候才可以發(fā)起GC的操作。

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Java垃圾回收(GC)、找垃圾的方式、GC Root、GC停顿、引用、垃圾收集算法、收集器、GC日志、安全点、安全区域的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    在线久久| 在线成人看片 | 91香蕉视频色版 | 91高清视频在线 | 日韩网站中文字幕 | 国产精品久久久久久久久久白浆 | 欧美日韩视频在线观看免费 | 91视频免费视频 | 久久视频中文字幕 | 中文字幕日韩电影 | 日韩精品无码一区二区三区 | 久久理伦片 | 在线观看国产麻豆 | 探花视频在线版播放免费观看 | 91超国产| 97人人射 | 超碰国产在线观看 | 99在线观看视频 | 在线视频精品播放 | av丝袜美腿 | 99久久日韩精品免费热麻豆美女 | 高清一区二区 | 91天堂影院 | 国产中文字幕在线观看 | 成人av网站在线播放 | 久久久香蕉视频 | 成人97视频 | 三级黄色a | 日韩欧美一区二区三区免费观看 | 日韩欧美专区 | 中中文字幕av在线 | 精品久久国产一区 | 日本久久久久久久久 | 成人精品国产免费网站 | 国外成人在线视频网站 | 国产精品成人自产拍在线观看 | 亚洲黄色免费观看 | 国内一级片在线观看 | 国产原创在线观看 | 欧美男男激情videos | 久久久久久久久久网 | 国产一区在线观看免费 | 亚洲一区二区视频在线播放 | 欧美另类网站 | 亚洲区色 | 久久免费精品一区二区三区 | 五月婷婷六月丁香 | 精品一区91 | 探花视频免费在线观看 | 五月婷婷中文 | 免费黄色a网站 | 亚洲成av人片在线观看香蕉 | 中国一区二区视频 | 久久久久久久久久久电影 | 一区二区三区视频 | 成人高清在线观看 | 国产精品久久久久久麻豆一区 | a久久免费视频 | 中文在线8新资源库 | 色视频 在线 | 91视频传媒 | 日韩中文字幕电影 | 国产伦精品一区二区三区高清 | 亚洲va天堂va欧美ⅴa在线 | 人人舔人人插 | 六月丁香色婷婷 | 亚洲欧美色婷婷 | 欧美亚洲成人xxx | 午夜免费福利视频 | 国产老妇av | 免费三及片 | 欧美成人aa | 亚洲自拍自偷 | 久久国产精品免费一区二区三区 | 亚洲老妇xxxxxx | 婷婷丁香色 | 国产日韩精品一区二区三区在线 | 在线观看涩涩 | 九九九毛片 | 99视频99| 婷婷中文字幕综合 | 黄a网站| 77国产精品 | 丁香网婷婷| 久久精品站 | 69久久久| 国际精品久久久久 | 日韩欧美在线综合网 | 国产第一页精品 | 91一区一区三区 | 中文永久字幕 | 国产中的精品av小宝探花 | 亚洲成人999 | 久久成熟| 国内精品久久久久久久 | av中文天堂在线 | 亚洲视频中文 | 女人18片| 免费精品在线视频 | 一区二区网 | 久久九九视频 | 黄色大片网 | 亚洲狠狠丁香婷婷综合久久久 | 五月天视频网站 | 999毛片| 8x成人免费视频 | 久久综合色播五月 | 狠狠色噜噜狠狠狠 | 最新在线你懂的 | 欧美激情在线看 | 91av亚洲 | 天堂av在线网站 | 激情婷婷av | 最新黄色av网址 | 九九九热精品免费视频观看 | 亚洲国产高清视频 | 亚洲精品国久久99热 | 国产精品麻豆99久久久久久 | 91亚洲永久精品 | 精品999| 日韩网站免费观看 | 最近日韩中文字幕中文 | 毛片二区 | 久久福利精品 | 国产一级不卡毛片 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 就色干综合 | 在线观看91av | 在线黄色国产 | 国产涩涩在线观看 | 手机看片1042 | 亚洲精品美女在线 | 免费在线观看av不卡 | 久久婷婷激情 | 中文字幕黄色网址 | 欧美日韩中文国产 | 欧美国产日韩在线观看 | 日日插日日干 | 国产剧情一区二区在线观看 | 免费97视频 | 黄色在线观看网站 | 天天爽天天做 | 国产精品99久久久久久小说 | av天天在线观看 | 久久久久久久久久久国产精品 | 嫩草av影院 | 黄色一级大片在线免费看产 | 夜夜夜影院 | 成人观看视频 | 国产精品久久久久久麻豆一区 | 免费美女久久99 | 久久精品视频18 | 日韩在线首页 | 国产色在线 | 国产精品久久久久久高潮 | 岛国av在线不卡 | 日韩av片无码一区二区不卡电影 | 国产一区二区三区高清播放 | 97精品在线观看 | 97在线观看免费 | 久久激情视频免费观看 | 欧美在线视频一区二区 | 手机成人av | av亚洲产国偷v产偷v自拍小说 | 中文字幕av全部资源www中文字幕在线观看 | 亚洲欧美在线综合 | 中文字幕在线观看2018 | 国产精品久久久久影视 | 99精品视频在线观看免费 | 天天射天天 | 免费av在线网| 人人干人人爽 | 美州a亚洲一视本频v色道 | 成年人网站免费在线观看 | 亚洲激情婷婷 | 日韩毛片在线一区二区毛片 | 国产成人精品日本亚洲999 | 国内久久 | 久久免费精彩视频 | 免费一级黄色 | 99久久电影 | 最近更新的中文字幕 | 久久99偷拍视频 | 久热电影 | 激情自拍av | 久久综合色一综合色88 | 亚洲精品视频第一页 | 精品在线视频一区 | 色视频国产直接看 | 正在播放国产一区 | 99久久精品免费看国产一区二区三区 | 国产五月色婷婷六月丁香视频 | 欧美性久久久久久 | 在线a亚洲视频播放在线观看 | 日本99热| 五月婷婷六月丁香在线观看 | 国产一级特黄毛片在线毛片 | 色婷婷激情电影 | av黄网站| 手机在线看a | 91超在线| 亚洲在线看 | 伊人久久五月天 | 日韩精品久久久 | 亚洲天天摸日日摸天天欢 | 在线观看免费黄视频 | 天天插天天干天天操 | 在线观看激情av | 久久香蕉国产精品麻豆粉嫩av | 69xxxx欧美 | 精品一区二区免费在线观看 | 国产精品 9999 | 97国产大学生情侣酒店的特点 | 午夜精品久久一牛影视 | 亚洲黄色一级电影 | 国产专区日韩专区 | 99麻豆视频 | 日韩欧美成人网 | 91传媒在线| 国产免费又爽又刺激在线观看 | 亚州精品视频 | 亚洲黄色在线 | 国产高清日韩 | 国产精品久久久久久久久软件 | 日本午夜在线观看 | av中文资源在线 | 天天综合网~永久入口 | 热久久免费视频精品 | 九九爱免费视频在线观看 | 夜色在线资源 | 激情综合国产 | 91国内在线 | 天天操天天操天天干 | 久久久 精品 | 国产九九在线 | 日韩精品久久久久久中文字幕8 | 在线免费观看国产黄色 | 在线天堂中文在线资源网 | 五月天婷亚洲天综合网鲁鲁鲁 | 日韩久久精品一区二区三区下载 | 欧美看片| 制服丝袜在线91 | 成人一级黄色片 | 亚洲夜夜综合 | 久久精品国产免费看久久精品 | 国模精品在线 | 国产一区电影在线观看 | 亚洲激情| 亚洲最大成人免费网站 | 视频在线观看国产 | 91成版人在线观看入口 | 国产一区二区三区网站 | 黄色毛片视频免费 | 久久久精品免费观看 | 97在线观看免费高清 | 国产成人精品av久久 | 国产成人久久77777精品 | 亚洲黄色一级视频 | 香蕉影视在线观看 | 波多野结衣在线中文字幕 | 国产理论一区二区三区 | 国内精品久久久久影院日本资源 | 国产一级小视频 | 亚洲成a人片77777kkkk1在线观看 | 超薄丝袜一二三区 | 中文字幕中文 | 日韩激情视频 | 精品国产一区二区三区久久 | 99久久精品无免国产免费 | 97在线观看免费高清完整版在线观看 | 99久久久免费视频 | 久久精品99国产精品酒店日本 | 久久蜜臀av | 一级精品视频在线观看宜春院 | 成人av免费在线观看 | 九九激情视频 | 精品国产福利在线 | 久久99国产精品自在自在app | 丁香婷婷激情国产高清秒播 | 亚洲成aⅴ人在线观看 | 天天五月天色 | 97精品国产91久久久久久 | 九九精品久久久 | 亚洲精品久久久久58 | 国产黄在线 | 国产裸体视频网站 | 亚州精品国产 | 亚洲精品www | 超碰午夜 | 草久久影院| 成人免费在线观看av | 超碰免费久久 | 蜜桃视频在线观看一区 | 亚洲精品av中文字幕在线在线 | 人人爽人人| 青青河边草观看完整版高清 | 国产麻豆剧果冻传媒视频播放量 | 日韩视频中文字幕在线观看 | 日韩高清免费观看 | 日韩一二区在线 | 精品一区二区日韩 | 日韩视频免费观看高清 | 欧美性大战久久久久 | 国产字幕在线播放 | 麻豆精品国产传媒 | 午夜美女福利直播 | 麻豆久久久 | av片子在线观看 | 久久久免费高清视频 | 亚洲最快最全在线视频 | 黄色免费网站下载 | 激情黄色av| 国产婷婷色| 麻豆视频免费观看 | 中文字幕国产亚洲 | 欧美一级欧美一级 | 91视频久久| 福利视频导航网址 | 久久综合国产伦精品免费 | 激情喷水 | 成人在线你懂得 | 香蕉视频导航 | 亚洲伦理中文字幕 | 一区二区三区免费在线 | 在线看的毛片 | 国产福利一区二区三区在线观看 | 波多野结衣精品 | 久久夜色精品国产欧美乱 | 日韩网站在线观看 | 欧美日韩另类视频 | 精品国产一区二区三区久久久蜜臀 | 91精品国产99久久久久久久 | 五月婷婷.com | 国产一区网址 | 欧美日韩一区二区三区不卡 | 久久午夜色播影院免费高清 | 毛片基地黄久久久久久天堂 | 国产精品黄色 | 亚洲国产精品成人女人久久 | 五月天激情视频 | 精品在线不卡 | 日韩av不卡在线播放 | 免费成人结看片 | 成人h在线观看 | 国产精品欧美日韩 | 日本特黄一级 | 亚洲精品播放 | 中国老女人日b | 国产一区视频在线观看免费 | 中文字幕国语官网在线视频 | 欧美尹人 | 香蕉影视 | 亚洲一区网 | 国产69精品久久app免费版 | 中文字幕观看视频 | 国产精品手机视频 | 综合网在线视频 | 福利一区在线视频 | 久久久久 | 色狠狠综合天天综合综合 | 亚洲男男gaygayxxxgv | 91成人观看| 粉嫩高清一区二区三区 | 久久精品福利视频 | 日本黄色免费看 | 91麻豆精品国产91久久久久 | 91精品久久久久久久91蜜桃 | 久久免费精品一区二区三区 | 国产精品久久久久久久久久久久久 | 天天操狠狠操网站 | 91久久精| 国产精彩视频一区 | 四虎成人精品在永久免费 | 黄色国产区 | 午夜精品一区二区三区视频免费看 | 91在线porny国产在线看 | 中文字幕亚洲综合久久五月天色无吗'' | 成年人网站免费观看 | 91av在线播放视频 | 97人人模人人爽人人少妇 | 亚洲视频免费在线观看 | 国产精品不卡视频 | 91自拍视频在线 | 亚洲黄色av一区 | 色无五月| 久久综合九色综合97_ 久久久 | 日本久久成人 | 香蕉久草 | 婷婷丁香花 | 99热这里只有精品免费 | 91成人在线观看喷潮 | 免费日韩视频 | 久久99在线 | 在线婷婷 | 国产精品区在线观看 | 伊人久久婷婷 | 久草免费在线视频 | 人人爽人人爽人人 | 激情开心站 | 日韩免费专区 | 2024国产在线| 国产色网 | 久久99精品国产麻豆宅宅 | 久久国产影视 | 久草视频手机在线 | 在线国产91 | 日本精品va在线观看 | 亚洲精品女 | 91精品爽啪蜜夜国产在线播放 | 成人亚洲综合 | 人人艹人人 | 最新在线你懂的 | 成人av网站在线播放 | 婷婷丁香在线 | 久久久久久久亚洲精品 | 四虎成人精品在永久免费 | 亚洲欧美va | 国产精品mm | 日韩专区一区二区 | 麻豆免费视频 | 日韩欧美一区二区三区在线观看 | 国产高清视频免费观看 | 狠狠插狠狠操 | 91麻豆精品国产91 | 亚洲电影成人 | 韩国av电影网 | 综合色影院| 中文字幕在线专区 | 精品96久久久久久中文字幕无 | 国产白浆视频 | 人人澡人摸人人添学生av | 国产99精品在线观看 | 亚洲精品1区2区3区 超碰成人网 | 色香蕉在线视频 | 中文亚洲欧美日韩 | 国产又粗又猛又爽又黄的视频先 | 久久99久久99久久 | 91成人在线网站 | 日本少妇久久久 | 国产精品激情偷乱一区二区∴ | 天天搞天天干天天色 | 狠狠色丁香婷婷综合橹88 | 亚洲高清在线 | 久久亚洲热 | 日韩中文字幕免费电影 | 免费观看性生活大片 | 91九色免费视频 | 亚洲第一中文网 | 国产一级二级在线观看 | 黄色动态图xx | 国产精品成人自拍 | 天天伊人狠狠 | 国产精品福利视频 | 国产精品毛片一区二区三区 | 免费看精品久久片 | 中文字幕精品在线 | 看毛片的网址 | 国产精品久久久999 国产91九色视频 | 国产成人在线网站 | 国产精品久久久久国产精品日日 | 九月婷婷综合网 | 婷婷久久综合九色综合 | 婷婷丁香激情网 | 91网站免费观看 | 91看成人| 免费高清在线观看电视网站 | 国产+日韩欧美 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 成年人免费电影在线观看 | 久久久久久久国产精品影院 | 97精品电影院 | 国产精品久久久久久久7电影 | 丁香电影小说免费视频观看 | 一区av在线播放 | 国产麻豆果冻传媒在线观看 | 伊人狠狠干 | 亚洲成a人片综合在线 | 国产婷婷视频在线 | 97色国产| 欧美黄网站 | 夜色成人av | 91精品1区2区 | 日韩av成人在线 | 国产精品va在线观看入 | 91九色蝌蚪国产 | 成年人免费在线观看网站 | 天天综合网久久 | 九九热国产视频 | av免费网 | 天堂成人在线 | 国产一级片免费视频 | 99热 精品在线 | 欧美日韩中文在线视频 | 99久久综合国产精品二区 | 久久国产精品网站 | 成年人视频在线免费观看 | 久久高视频| 久久久久久久久爱 | 五月天综合网站 | 久草手机视频 | 免费成人结看片 | 操操操com| 午夜视频在线观看一区二区三区 | 国产成人av在线 | 久久精品www人人爽人人 | 99精品国产亚洲 | 国产精品综合久久久久 | 欧美另类重口 | 欧美另类tv | 92精品国产成人观看免费 | 日本黄色片一区二区 | 综合国产在线 | 亚洲精品国精品久久99热 | 网站在线观看日韩 | 精品在线看 | 亚洲 欧美 变态 国产 另类 | aa级黄色大片 | 国产高清99 | 亚洲欧洲精品一区 | 97精产国品一二三产区在线 | 日本公妇在线观看高清 | 亚洲免费观看视频 | 天天曰天天 | 激情婷婷在线 | 国产毛片久久久 | 综合久久2023| 97香蕉视频| 午夜av不卡| 96久久欧美麻豆网站 | 天天色影院 | 日韩成人邪恶影片 | 日韩免费看视频 | 久久深夜福利免费观看 | 久章草在线 | 久草在线最新视频 | 日韩精品免费在线视频 | 国产综合婷婷 | 日韩在线观看不卡 | 国产精品入口麻豆www | 欧美日韩亚洲精品在线 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 亚洲深爱激情 | 中文字幕在线中文 | 国产不卡免费 | 黄色a级片在线观看 | 激情中文在线 | 蜜臀av性久久久久av蜜臀三区 | 亚洲精品va | 欧美日韩一区二区视频在线观看 | 欧美另类美少妇69xxxx | 91视频国产免费 | 九草视频在线观看 | 日日干夜夜干 | 日韩成人精品一区二区三区 | 日韩免费视频在线观看 | 69xxxx欧美 | 国产精品麻豆果冻传媒在线播放 | 91经典在线 | 色88久久| 好看的国产精品视频 | 精品 激情 | 国产一区欧美在线 | 激情婷婷亚洲 | 国产香蕉97碰碰碰视频在线观看 | 国产黄免费在线观看 | 日韩av一区二区在线影视 | 亚洲涩涩涩涩涩涩 | 911久久香蕉国产线看观看 | 欧美网址在线观看 | 美女黄频在线观看 | 久久综合狠狠综合久久激情 | 中文字幕亚洲在线观看 | 美女国产在线 | 中文 一区二区 | 操操碰 | 麻豆av一区二区三区在线观看 | 国产片免费在线观看视频 | 久久亚洲欧美日韩精品专区 | 久草视频资源 | 国产伦精品一区二区三区无广告 | 欧美日韩国产页 | 日韩色区| av色综合| 欧美久久久久久久久中文字幕 | 国产视频1区2区 | 中文亚洲欧美日韩 | 免费开视频 | 亚洲欧美日本一区二区三区 | 中文国产在线观看 | 91精品视频在线免费观看 | 天天天在线综合网 | 久久成 | 精品一区电影国产 | 91av视频| 久久免费视频在线观看6 | 国产91电影在线观看 | 亚洲精品乱码久久久久久高潮 | 国产一级视频免费看 | 亚一亚二国产专区 | 伊人色综合久久天天网 | 播五月婷婷 | 麻豆视频入口 | 日韩高清无线码2023 | 日本久久久久 | 久久久免费观看 | 911国产在线观看 | 日韩亚洲在线 | 视频福利在线观看 | 国产一级视频在线 | 欧美激情视频一区二区三区 | 亚洲精品在线观看网站 | 91高清免费| 成年人在线| 欧美性生爱| 黄色在线观看免费 | 最近中文字幕在线 | 国产精品毛片一区二区 | 国产精品麻豆一区二区三区 | 韩国一区二区三区视频 | 亚洲电影第一页av | 色婷婷色 | a爱爱视频| av成人动漫在线观看 | 四虎成人精品永久免费av | 免费在线观看成人小视频 | 欧美色图另类 | 色国产精品一区在线观看 | av电影免费在线看 | 中文字幕中文字幕中文字幕 | 国产精品理论在线观看 | 亚洲国产偷 | 久久99久久99精品免视看婷婷 | 91传媒在线播放 | 精品亚洲网 | 亚洲年轻女教师毛茸茸 | 亚洲视屏 | 成人精品亚洲 | 2023亚洲精品国偷拍自产在线 | 色狠狠狠 | 99久久www | 国产日韩中文在线 | 国产精品3 | 免费a v观看| 97碰在线 | 国产美女精品人人做人人爽 | 成人午夜影院在线观看 | 日韩精品一区二区在线观看视频 | 婷婷视频导航 | 玖玖玖精品 | 欧美日韩亚洲精品在线 | 欧美性色网站 | 欧美粗又大 | 久久精品国产亚洲aⅴ | 午夜精品福利一区二区 | 亚洲一级黄色大片 | 欧美日韩一区二区在线观看 | 国产99一区视频免费 | 久久99国产精品免费网站 | 欧美国产日韩一区二区三区 | 91精品老司机久久一区啪 | 麻豆你懂的| wwwwww色 | 久久任你操 | 日韩大片免费在线观看 | 亚洲国产欧美在线人成大黄瓜 | 91久久电影| 欧美日韩视频网站 | 黄色a视频 | 日韩毛片在线免费观看 | 中文在线字幕免费观看 | 美女av免费 | 在线播放精品一区二区三区 | 97视频资源 | 国产精品婷婷 | 日本一区二区三区视频在线播放 | 国产精品va在线播放 | 国产一级片在线播放 | 日日干精品 | 亚洲精选国产 | 亚洲精品456在线播放第一页 | 婷婷中文在线 | 狠狠干 狠狠操 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 久久国产精品久久w女人spa | 久久精品国产亚洲a | 成人国产精品久久久久久亚洲 | 日本黄色片一区二区 | 丁香婷婷久久 | 欧美另类视频 | 亚洲精品tv | 91九色蝌蚪| 国产二区视频在线观看 | 亚洲国产经典视频 | 亚洲国产精品va在线看黑人动漫 | 麻豆综合网 | 天天天综合 | www色,com | 久久国产手机看片 | 在线观看视频在线 | 麻豆91视频 | 国产免费中文字幕 | 久久香蕉电影网 | 91网免费观看| 在线亚洲激情 | 精品a在线 | 狠狠狠狠狠狠狠狠 | 500部大龄熟乱视频使用方法 | 国产精品久久久久久久婷婷 | a在线观看国产 | 福利一区在线 | 色诱亚洲精品久久久久久 | 久草视频首页 | 亚洲精品视频在线看 | 国产精品久久久久久一区二区三区 | 婷婷精品在线视频 | 在线观看日韩一区 | 国产精品二区三区 | 色六月婷婷 | 操天天操 | 91看毛片| 欧美黑人性猛交 | 久久看片网 | 欧美俄罗斯性视频 | 黄色三级在线观看 | 在线免费观看麻豆视频 | 精品免费观看 | 欧美日韩国产在线 | 亚洲一区二区视频在线播放 | 1024在线看片 | 成年人黄色免费看 | 91精品区 | 国产成人精品不卡 | 四虎小视频 | 日韩欧美视频免费看 | 视频在线观看入口黄最新永久免费国产 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产无限资源在线观看 | 视频91| 国产午夜精品一区二区三区嫩草 | 国产麻豆成人传媒免费观看 | 日本精品中文字幕 | 97在线观看免费高清 | 中文字幕黄色网 | 高清久久久久久 | 天天干天天操天天爱 | 精品在线亚洲视频 | 日本精品视频网站 | 久久久久亚洲精品 | 最近更新好看的中文字幕 | 久久久久久网址 | 欧美va天堂va视频va在线 | 99色人| 色视频国产直接看 | 久久久亚洲成人 | 国产99亚洲 | 日本69hd| 天天射天天射天天 | 亚洲午夜久久久影院 | 免费高清影视 | 久久久久久久久精 | 日韩中文字幕网站 | 亚洲精品国 | 粉嫩一区二区三区粉嫩91 | 99亚洲精品视频 | 午夜久久福利影院 | 中文字幕 在线 一 二 | 激情av综合 | 综合久久久久久久 | 日韩激情视频在线观看 | 成人在线观看日韩 | 在线观看亚洲精品 | 国色天香永久免费 | 色综合天天综合网国产成人网 | 国产精品网址在线观看 | 久久国产精品一二三区 | av三级在线播放 | 狠狠色丁香婷婷综合久小说久 | 日韩三级视频在线观看 | 在线观看一 | 在线一区观看 | av一区二区三区在线播放 | 色婷婷a | 久久伊人国产精品 | 国产精品一区二区精品视频免费看 | 免费看国产黄色 | 五月香视频在线观看 | 91精品成人久久 | 97在线看 | 欧美在线视频一区二区 | www.狠狠| 国产精品久久久久久爽爽爽 | 又黄又色又爽 | 开心激情五月网 | 在线观看免费观看在线91 | 国产精品久久久久久久久久久免费 | 狠狠色丁香婷婷综合欧美 | 国产综合在线视频 | 天天色播| 99re8这里有精品热视频免费 | 欧美一区,二区 | 日韩精品网址 | 久久精品日产第一区二区三区乱码 | 天天操天天舔天天干 | 精品成人a区在线观看 | 国产在线播放不卡 | 国产精品久久99综合免费观看尤物 | 久久精品成人 | 国产91影院| www久草| 国产手机视频 | 伊人天天综合 | 天天在线免费视频 | 国产又粗又硬又爽视频 | 国产午夜精品免费一区二区三区视频 | 人人揉人人揉人人揉人人揉97 | 在线观看免费av网站 | 国产一区高清在线观看 | 国内精品久久久久影院一蜜桃 | 久久精品久久综合 | 欧美伦理一区二区三区 | 亚洲黄色av一区 | 亚洲少妇自拍 | 欧美激情视频一区二区三区 | 久久高视频| 狠狠色丁香婷婷综合最新地址 | 国产精品久久 | 成+人+色综合 | 天天操夜夜爱 | 高清不卡毛片 | 免费色视频 | 色网址99 | 国产高清免费 | 香蕉精品视频在线观看 | 亚洲一二视频 | 成人国产一区二区 | 成人欧美日韩国产 | 国产精品高潮呻吟久久久久 | 91九色在线播放 | 欧美精选一区二区三区 | 手机成人在线 | 在线一二三四区 | 亚洲传媒在线 | 97超碰超碰 | 久久超碰在线 | 久久久999 | 成人午夜剧场在线观看 | 天天操,夜夜操 | 狠狠干网址 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 一级黄色片在线免费观看 | 欧美成人h版在线观看 | 国产精品激情偷乱一区二区∴ | 成人av电影网址 | 黄色大片免费播放 | 色欧美成人精品a∨在线观看 | 精品在线观看一区二区 | 国产免费大片 | 天天爱综合 | 日日干日日操 | 蜜臀久久99精品久久久无需会员 | 欧美精品999 | 天天射天 | 成人高清在线观看 | 91av视频在线观看 | 五月婷色 | 国产精品精 | 国产亚洲精品久久久久久大师 | 奇米网8888 | 五月天伊人 | 久久免费视频6 | 天天天干天天射天天天操 | 国产精品国产毛片 | 久久综合色综合88 | 日韩色在线观看 | 米奇四色影视 | 天天操天天操天天操 | 911av视频| 一区二区电影网 | 精品国产一区二区三区久久久蜜臀 | 国产精品系列在线播放 | 日韩系列在线 | 91精品视频网站 | 狠狠躁夜夜a产精品视频 | 99视频在线免费播放 | 日日夜夜天天人人 | 亚洲激情p | 中文综合在线 | 在线观看av网站 | caobi视频| 亚洲国产精品成人va在线观看 | 久草免费在线视频 | 日本一区二区免费在线观看 | 日本色小说视频 | 国产成本人视频在线观看 | 日本激情视频中文字幕 | 国产自产在线视频 | 国产精品不卡av | 婷婷精品国产一区二区三区日韩 | 青草视频在线免费 | 婷婷综合久久 | 人人舔人人 | 国产91精品一区二区麻豆网站 | 一区二区三区免费在线观看视频 | 国产黄色免费电影 | 亚洲精品在线网站 | 久久国产精品久久精品 | 日韩在线观看精品 | 蜜臀久久99静品久久久久久 | 久久国产成人午夜av影院潦草 | 国产精品久久久久一区二区国产 | 国产在线免费 | 摸bbb搡bbb搡bbbb | 成人动漫精品一区二区 | 99精品久久精品一区二区 | 色综合天天综合网国产成人网 | 狠狠色狠狠色 | 精品国产欧美一区二区三区不卡 | 久久久精品午夜 | 伊人午夜视频 | 久久久久亚洲精品中文字幕 | 欧美aa级| 国产视频不卡一区 | 中文字幕在线高清 | 国产自产在线视频 | 黄色一级大片免费看 | 亚洲精品国产精品国自产在线 | 丁香视频| 久草久草视频 | 欧美天堂影院 | 玖玖在线资源 | 91在线色| 国产精品99久久久久久武松影视 | 免费看亚洲毛片 | 久久久久久久久福利 | 伊人首页| 免费a v在线 | 午夜久草 | 欧美激情视频免费看 | 色综合色综合久久综合频道88 | av一级二级 | 欧美aaa视频| 久久综合九色综合欧美就去吻 | 国产美女主播精品一区二区三区 | 中文亚洲欧美日韩 | 欧美日韩免费观看一区=区三区 | 国产精品免费一区二区 | 久久se视频 | 91在线视频免费91 | 精品久久久久久综合 | 中文字幕 成人 | 亚洲精品9 | 色网av | 麻豆视频在线免费看 | 久久久久久久久久网站 | 91男人影院 | 国产乱码精品一区二区蜜臀 | 精品一区二区在线免费观看 | 国产黄色美女 | 91中文在线视频 | 久草com| 97超碰国产在线 | 久草久 | 伊人狠狠 | 伊人永久在线 | 久久久久亚洲精品男人的天堂 | 免费视频黄色 | 99视频免费在线观看 | 久久精品亚洲精品国产欧美 | 色综合久久88色综合天天6 | 久久成人毛片 | japanesexxxxfreehd乱熟| 国产福利在线免费 | 丁香久久激情 | 欧美日韩免费一区二区 | 国产精品区一区 | 丰满少妇在线观看资源站 | 亚洲播播| 在线观看亚洲电影 | 久久久天天操 | 96亚洲精品久久久蜜桃 | 欧美日韩不卡一区 | 九九九国产 | 99精品乱码国产在线观看 | 国产精品久久嫩一区二区免费 | 91精品视频导航 | 国产欧美日韩视频 | 玖玖玖精品 | 欧美日韩在线观看一区 | 日韩精选在线观看 | 久草在线播放视频 | 激情图片区 | 欧美另类交在线观看 | 国产精品福利久久久 | 久久涩视频 | 中文区中文字幕免费看 | 综合久久精品 | 男女激情免费网站 | 国产亚洲欧美在线视频 |