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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全面解读java虚拟机

發布時間:2024/1/17 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全面解读java虚拟机 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JVM是虛擬機,也是一種規范,他遵循著馮·諾依曼體系結構的設計原理。馮·諾依曼體系結構中,指出計算機處理的數據和指令都是二進制數,采用存儲程序方式不加區分的存儲在同一個存儲器里,并且順序執行,指令由操作碼和地址碼組成,操作碼決定了操作類型和所操作的數的數字類型,地址碼則指出地址碼和操作數。從dos到window8,從unix到ubuntu和CentOS,還有MAC OS等等,不同的操作系統指令集以及數據結構都有著差異,而JVM通過在操作系統上建立虛擬機,自己定義出來的一套統一的數據結構和操作指令,把同一套語言翻譯給各大主流的操作系統,實現了跨平臺運行,可以說JVM是java的核心,是java可以一次編譯到處運行的本質所在。

我研究學習了JVM的組成和運行原理,JVM的統一數據格式規范、字節碼文件結構,JVM關于內存的管理。

一、JVM的組成和運行原理 。

JVM的畢竟是個虛擬機,是一種規范,雖說符合馮諾依曼的計算機設計理念,但是他并不是實體計算機,所以他的組成也不是什么存儲器,控制器,運算器,輸入輸出設備。在我看來,JVM運行在真實的操作系統中表現的更像應用或者說是進程,他的組成可以理解為JVM這個進程有哪些功能模塊,而這些功能模塊的運作可以看做是JVM的運行原理。JVM有多種實現,例如Oracle的JVM,HP的JVM和IBM的JVM等,而在本文中研究學習的則是使用最廣泛的Oracle的HotSpot JVM。

1.JVM在JDK中的位置。

JDK是java開發的必備工具箱,JDK其中有一部分是JRE,JRE是JAVA運行環境,JVM則是JRE最核心的部分。我從oracle.com截取了一張關于JDK Standard Edtion的組成圖,

從最底層的位置可以看出來JVM有多重要,而實際項目中JAVA應用的性能優化,OOM等異常的處理最終都得從JVM這兒來解決。HotSpot是Oracle關于JVM的商標,區別于IBM,HP等廠商開發的JVM。Java HotSpot Client VM和Java HotSpot Server VM是JDK關于JVM的兩種不同的實現,前者可以減少啟動時間和內存占用,而后者則提供更加優秀的程序運行速度(參考自:http://docs.oracle.com/javase/8/docs/technotes/guides/vm/index.html ,該文檔有關于各個版本的JVM的介紹)。在命令行,通過java -version可以查看關于當前機器JVM的信息,下面是我在Win8系統上執行命令的截圖,

?

可以看出我裝的是build 20.13-b02版本,HotSpot 類型Server模式的JVM。?

2.JVM的組成

JVM由4大部分組成:ClassLoader,Runtime Data Area,Execution Engine,Native Interface。

我從CSDN找了一張描述JVM大致結構的圖:

?

2.1.?ClassLoader 是負責加載class文件,class文件在文件開頭有特定的文件標示,并且ClassLoader只負責class文件的加載,至于它是否可以運行,則由Execution Engine決定。

2.2.Native Interface 是負責調用本地接口的。他的作用是調用不同語言的接口給JAVA用,他會在Native Method Stack中記錄對應的本地方法,然后調用該方法時就通過Execution Engine加載對應的本地lib。原本多于用一些專業領域,如JAVA驅動,地圖制作引擎等,現在關于這種本地方法接口的調用已經被類似于Socket通信,WebService等方式取代。

2.3.Execution Engine 是執行引擎,也叫Interpreter。Class文件被加載后,會把指令和數據信息放入內存中,Execution Engine則負責把這些命令解釋給操作系統。

2.4.Runtime Data Area 則是存放數據的,分為五部分:Stack,Heap,Method Area,PC Register,Native Method Stack。幾乎所有的關于java內存方面的問題,都是集中在這塊。下圖是javapapers.com上關于Run-time Data Areas的描述:

可以看出它把Method Area化為了Heap的一部分,javapapers.com中認為Method Area是Heap的邏輯區域,但這取決于JVM的實現者,而HotSpot JVM中把Method Area劃分為非堆內存,顯然是不包含在Heap中的。下圖是javacodegeeks.com中,2014年9月刊出的一片博文中關于Runtime Data Area的劃分,其中指出,NonHeap包含PermGen和Code Cache,PermGen包含Method Area,而且PermGen在JAVA SE 8中已經不再用了。查閱資料(https://abhirockzz.wordpress.com/2014/03/18/java-se-8-is-knocking-are-you-there/)得知,java8中PermGen已經從JVM中移除并被MetaSpace取代,java8中也不會見到OOM:PermGen Space的異常。目前Runtime Data Area可以用下圖描述它的組成:

2.4.1.?Stack 是java棧內存,它等價于C語言中的棧,棧的內存地址是不連續的,每個線程都擁有自己的棧。 棧里面存儲著的是StackFrame,在《JVM Specification》中文版中被譯作java虛擬機框架,也叫做棧幀。StackFrame包含三類信息:局部變量,執行環境,操作數棧。局部變量用來存儲一個類的方法中所用到的局部變量。執行環境用于保存解析器對于java字節碼進行解釋過程中需要的信息,包括:上次調用的方法、局部變量指針和操作數棧的棧頂和棧底指針。操作數棧用于存儲運算所需要的操作數和結果。StackFrame在方法被調用時創建,在某個線程中,某個時間點上,只有一個框架是活躍的,該框架被稱為Current Frame,而框架中的方法被稱為Current Method,其中定義的類為Current Class。局部變量和操作數棧上的操作總是引用當前框架。當Stack Frame中方法被執行完之后,或者調用別的StackFrame中的方法時,則當前棧變為另外一個StackFrame。Stack的大小是由兩種類型,固定和動態的,動態類型的棧可以按照線程的需要分配。 下面兩張圖是關于棧之間關系以及棧和非堆內存的關系基本描述(來自 http://www.programering.com/a/MzM3QzNwATA.html ):

?

?

?

2.4.2. Heap 是用來存放對象信息的,和Stack不同,Stack代表著一種運行時的狀態。換句話說,棧是運行時單位,解決程序該如何執行的問題,而堆是存儲的單位,解決數據存儲的問題。Heap是伴隨著JVM的啟動而創建,負責存儲所有對象實例和數組的。堆的存儲空間和棧一樣是不需要連續的,它分為Young Generation和Old Generation(也叫Tenured Generation)兩大部分。Young Generation分為Eden和Survivor,Survivor又分為From Space和 ToSpace。

和Heap經常一起提及的概念是PermanentSpace,它是用來加載類對象的專門的內存區,是非堆內存,和Heap一起組成JAVA內存,它包含MethodArea區(在沒有Code Cache的HotSpotJVM實現里,則MethodArea就相當于GenerationSpace)。 在JVM初始化的時候,我們可以通過參數來分別指定,PermanentSpace的大小、堆的大小、以及Young Generation和Old Generation的比值、Eden區和From Space的比值,從而來細粒度的適應不同JAVA應用的內存需求。

2.4.3. PC Register 是程序計數寄存器,每個JAVA線程都有一個單獨的PC Register,他是一個指針,由Execution Engine讀取下一條指令。如果該線程正在執行java方法,則PC Register存儲的是 正在被執行的指令的地址,如果是本地方法,PC Register的值沒有定義。PC寄存器非常小,只占用一個字寬,可以持有一個returnAdress或者特定平臺的一個指針。

2.4.4. Method Area 在HotSpot JVM的實現中屬于非堆區,非堆區包括兩部分:Permanet Generation和Code Cache,而Method Area屬于Permanert Generation的一部分。Permanent Generation用來存儲類信息,比如說:class definitions,structures,methods, field, method (data and code) 和 constants。Code Cache用來存儲Compiled Code,即編譯好的本地代碼,在HotSpot JVM中通過JIT(Just In Time) Compiler生成,JIT是即時編譯器,他是為了提高指令的執行效率,把字節碼文件編譯成本地機器代碼,如下圖:

?

引用一個經典的案例來理解Stack,Heap和Method Area的劃分,就是Sring a="xx";Stirng b="xx",問是否a==b? 首先==符號是用來判斷兩個對象的引用地址是否相同,而在上面的題目中,a和b按理來說申請的是Stack中不同的地址,但是他們指向Method Area中Runtime Constant Pool的同一個地址,按照網上的解釋,在a賦值為“xx”時,會在Runtime Contant Pool中生成一個String Constant,當b也賦值為“xx”時,那么會在常量池中查看是否存在值為“xx”的常量,存在的話,則把b的指針也指向“xx”的地址,而不是新生成一個String Constant。我查閱了網絡上大家關于String Constant的存儲的說說法,存在略微差別的是,它存儲在哪里,有人說Heap中會分配出一個常量池,用來存儲常量,所有線程共享它。而有人說常量池是Method Area的一部分,而Method Area屬于非堆內存,那怎么能說常量池存在于堆中?

我認為,其實兩種理解都沒錯。Method Area的確從邏輯上講可以是Heap的一部分,在某些JVM實現里從堆上開辟一塊存儲空間來記錄常量是符合JVM常量池設計目的的,所以前一種說法沒問題。對于后一種說法,HotSpot JVM的實現中的確是把方法區劃分為了非堆內存,意思就是它不在堆上。我在HotSpot JVM做了個簡單的實驗,定義多個常量之后,程序拋出OOM:PermGen Space異常,印證了JVM實現中常量池是在Permanent Space中的說法。但是,我的JDK版本是1.6的。查閱資料,JDK1.7中InternedStrings已經不再存儲在PermanentSpace中,而是放到了Heap中;JDK8中PermanentSpace已經被完全移除,InternedStrings也被放到了MetaSpace中(如果出現內存溢出,會報OOM:MetaSpace,這里有個關于兩者性能對比的文章: 。 所以,仁者見仁,智者見智,一個饅頭足以引發血案,就算是同一個商家的JVM,畢竟JDK版本在更新,或許正如StackOverFlow上大神們所說,對于理解JVM Runtime Data Area這一部分的劃分邏輯,還是去看對應版本的JDK源碼比較靠譜,或者是參考不同的版本JVM Specification。

2.4.5.?Native Method Stack 是供本地方法(非java)使用的棧。每個線程持有一個Native Method Stack。

3.JVM的運行原理簡介

Java 程序被javac工具編譯為.class字節碼文件之后,我們執行java命令,該class文件便被JVM的Class Loader加載,可以看出JVM的啟動是通過JAVA Path下的java.exe或者java進行的。JVM的初始化、運行到結束大概包括這么幾步:

調用操作系統API判斷系統的CPU架構,根據對應CPU類型尋找位于JRE目錄下的/lib/jvm.cfg文件,然后通過該配置文件找到對應的jvm.dll文件(如果我們參數中有-server或者-client, 則加載對應參數所指定的jvm.dll,啟動指定類型的JVM),初始化jvm.dll并且掛接到JNIENV結構的實例上,之后就可以通過JNIENV實例裝載并且處理class文件了。class文件是字節碼文件,它按照JVM的規范,定義了變量,方法等的詳細信息,JVM管理并且分配對應的內存來執行程序,同時管理垃圾回收。直到程序結束,一種情況是JVM的所有非守護線程停止,一種情況是程序調用System.exit(),JVM的生命周期也結束。

關于JVM如何管理分配內存,我通過class文件和垃圾回收兩部分進行了學習。

二、JVM的內存管理和垃圾回收

JVM中的內存管理主要是指JVM對于Heap的管理,這是因為Stack,PC Register和Native Method Stack都是和線程一樣的生命周期,在線程結束時自然可以被再次使用。雖然說,Stack的管理不是重點,但是也不是完全不講究的。

1.棧的管理

JVM允許棧的大小是固定的或者是動態變化的。在Oracle的關于參數設置的官方文檔中有關于Stack的設置(http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html#wp1024112),是通過-Xss來設置其大小。關于Stack的默認大小對于不同機器有不同的大小,并且不同廠商或者版本號的jvm的實現其大小也不同,如下表是HotSpot的默認大小:

PlatformDefault
Windows IA3264 KB
Linux IA32128 KB
Windows x86_64128 KB
Linux x86_64256 KB
Windows IA64320 KB
Linux IA641024 KB (1 MB)
Solaris Sparc512 KB

我們一般通過減少常量,參數的個數來減少棧的增長,在程序設計時,我們把一些常量定義到一個對象中,然后來引用他們可以體現這一點。另外,少用遞歸調用也可以減少棧的占用。

棧是不需要垃圾回收的,盡管說垃圾回收是java內存管理的一個很熱的話題,棧中的對象如果用垃圾回收的觀點來看,他永遠是live狀態,是可以reachable的,所以也不需要回收,他占有的空間隨著Thread的結束而釋放。(參考自:http://stackoverflow.com/questions/20030120/java-default-stack-size)
關于棧一般會發生以下兩種異常:

1.當線程中的計算所需要的棧超過所允許大小時,會拋出StackOverflowError。

2.當Java棧試圖擴展時,沒有足夠的存儲器來實現擴展,JVM會報OutOfMemoryError。

我針對棧進行了實驗,由于遞歸的調用可以致使棧的引用增加,導致溢出,所以設計代碼如下:

我的機器是x86_64系統,所以Stack的默認大小是128KB,上述程序在運行時會報錯:

而當我在eclipse中調整了-Xss參數到3M之后,該異常消失

?

另外棧上有一點得注意的是,對于本地代碼調用,可能會在棧中申請內存,比如C調用malloc(),而這種情況下,GC是管不著的,需要我們在程序中,手動管理棧內存,使用free()方法釋放內存。

2.堆的管理

堆的管理要比棧管理復雜的多,我通過堆的各部分的作用、設置,以及各部分可能發生的異常,以及如何避免各部分異常進行了學習。

?

上圖是 Heap和PermanentSapce的組合圖,其中?Eden區里面存著是新生的對象,From Space和To Space中存放著是每次垃圾回收后存活下來的對象 ,所以每次垃圾回收后,Eden區會被清空。 存活下來的對象先是放到From Space,當From Space滿了之后移動到To Space。當To Space滿了之后移動到Old Space。Survivor的兩個區是對稱的,沒先后關系,所以同一個區中可能同時存在從Eden復制過來 對象,和從前一個Survivor復制過來的對象,而復制到年老區的只有從第一個Survivor復制過來的對象。而且,Survivor區總有一個是空的。同時,根據程序需要,Survivor區是可以配置為多個的(多于兩個),這樣可以增加對象在年輕代中的存在時間,減少被放到年老代的可能。

Old Space中則存放生命周期比較長的對象,而且有些比較大的新生對象也放在Old Space中。

堆的大小通過-Xms和-Xmx來指定最小值和最大值,通過-Xmn來指定Young Generation的大小(一些老版本也用-XX:NewSize指定), 即上圖中的Eden加FromSpace和ToSpace的總大小。然后通過-XX:NewRatio來指定Eden區的大小,在Xms和Xmx相等的情況下,該參數不需要設置。通過-XX:SurvivorRatio來設置Eden和一個Survivor區的比值。(參考自博文:)

堆異常分為兩種,一種是Out of Memory(OOM),一種是Memory Leak(ML)。Memory Leak最終將導致OOM。實際應用中表現為:從Console看,內存監控曲線一直在頂部,程序響應慢,從線程看,大部分的線程在進行GC,占用比較多的CPU,最終程序異常終止,報OOM。OOM發生的時間不定,有短的一個小時,有長的10天一個月的。關于異常的處理,確定OOM/ML異常后,一定要注意保護現場,可以dump heap,如果沒有現場則開啟GCFlag收集垃圾回收日志,然后進行分析,確定問題所在。如果問題不是ML的話,一般通過增加Heap,增加物理內存來解決問題,是的話,就修改程序邏輯。

3.垃圾回收

JVM中會在以下情況觸發回收:對象沒有被引用,作用域發生未捕捉異常,程序正常執行完畢,程序執行了System.exit(),程序發生意外終止。

JVM中標記垃圾使用的算法是一種根搜索算法。簡單的說,就是從一個叫GC Roots的對象開始(GC ROOT節點主要在全局性的引用(例如常量或靜態屬性)與執行上下文(例如棧幀中的本地變量表)中),向下搜索,如果一個對象不能達到GC Roots對象的時候,說明它可以被回收了。這種算法比一種叫做引用計數法的垃圾標記算法要好,因為它避免了當兩個對象啊互相引用時無法被回收的現象。

注意:1.?如果在節點搜索中從ROOT不能到達這個對象,并不是一定會被回收,因為JVM給了這些對象第二次機會,這些對象會被第一次標記(“緩刑”)并且會進行一次篩選,篩選條件就是此對象是否有必要執行finalize()方法,(當對象覆蓋finalized方法或者已經被執行過一次,都視為沒必要執行finalize),通過篩選的對象放入F-Queue隊列,低優先級的finalize線程會執行這個方法,這里的“執行”是說虛擬機會觸發這個方法,但并不承諾會等到這個方法執行完成,因為finalize方法中可能有死循環,如果在這次執行中,能將自己拯救(將自身(this)與引用鏈上的任何一個對象關聯即可(比如吧自己的this賦值給某個類變量或者成員變量)),那么JVM在進行第二次標記的時候就會將他移除即將回收的集合。

2. Elden沒有足夠的內存時會MInor GC,可以通過 -XX:PreteureSizeThreshold參數設置當對象 >=這個值時,會直接放入老年代。

JVM中對于被標記為垃圾的對象進行回收時又分為了一下3種算法:

1.標記清除算法,該算法是從根集合掃描整個空間,標記存活的對象,然后在掃描整個空間對沒有被標記的對象進行回收,這種算法在存活對象較多時比較高效,但會產生內存碎片。

2.復制算法,該算法是從根集合掃描,并將存活的對象復制到新的空間,這種算法在存活對象少時比較高效。(適合新生代每次生存的對象很少)

3.標記整理算法,標記整理算法和標記清除算法一樣都會掃描并標記存活對象,在回收未標記對象的同時會整理被標記的對象,解決了內存碎片的問題,(適合老年代:沒有過多內存)。

4.分代收集。

?

JVM中,不同的 內存區域作用和性質不一樣,使用的垃圾回收算法也不一樣,所以JVM中又定義了幾種不同的垃圾回收器(圖中連線代表兩個回收器可以同時使用):

?

?

1.Serial GC。從名字上看,串行GC意味著是一種單線程的,所以它要求收集的時候所有的線程暫停。這對于高性能的應用是不合理的,所以串行GC一般用于Client模式的JVM中。

2.ParNew GC。是在SerialGC的基礎上,增加了多線程機制。但是如果機器是單CPU的,這種收集器是比SerialGC效率低的。

3.Parrallel Scavenge GC。這種收集器又叫吞吐量優先收集器,而吞吐量=程序運行時間/(JVM執行回收的時間+程序運行時間),假設程序運行了100分鐘,JVM的垃圾回收占用1分鐘,那么吞吐量就是99%。Parallel Scavenge GC由于可以提供比較不錯的吞吐量,所以被作為了server模式JVM的默認配置。

4.ParallelOld是老生代并行收集器的一種,使用了標記整理算法,是JDK1.6中引進的,在之前老生代只能使用串行回收收集器。

5.Serial Old是老生代client模式下的默認收集器,單線程執行,同時也作為CMS收集器失敗后的備用收集器。

6.CMS又稱響應時間優先回收器,使用標記清除算法。他的回收線程數為(CPU核心數+3)/4,所以當CPU核心數為2時比較高效些。CMS分為4個過程:初始標記、并發標記、重新標記、并發清除。

7.GarbageFirst(G1)。比較特殊的是G1回收器既可以回收Young Generation,也可以回收Tenured Generation。它是在JDK6的某個版本中才引入的,性能比較高,同時注意了吞吐量和響應時間。

對于垃圾收集器的組合使用可以通過下表中的參數指定:

?

默認的GC種類可以通過jvm.cfg或者通過jmap dump出heap來查看,一般我們通過jstat -gcutil [pid] 1000可以查看每秒gc的大體情況,或者可以在啟動參數中加入:-verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:./gc.log來記錄GC日志。

GC中有一種情況叫做Full GC,以下幾種情況會觸發Full GC:

1.Tenured Space空間不足以創建打的對象或者數組,會執行FullGC,并且當FullGC之后空間如果還不夠,那么會OOM:java heap space。

2.Permanet Generation的大小不足,存放了太多的類信息,在非CMS情況下回觸發FullGC。如果之后空間還不夠,會OOM:PermGen space。

3.CMS GC時出現promotion failed和concurrent mode failure時,也會觸發FullGC。promotion failed是在進行Minor GC時,survivor space放不下、對象只能放入舊生代,而此時舊生代也放不下造成的;concurrent mode failure是在執行CMS GC的過程中同時有對象要放入舊生代,而此時舊生代空間不足造成的。

4.判斷MinorGC后,要晉升到TenuredSpace的對象大小大于TenuredSpace的大小,也會觸發FullGC。

可以看出,當FullGC頻繁發生時,一定是內存出問題了。

三、JVM的數據格式規范和Class文件

1.數據類型規范

依據馮諾依曼的計算機理論,計算機最后處理的都是二進制的數,而JVM是怎么把java文件最后轉化成了各個平臺都可以識別的二進制呢?JVM自己定義了一個抽象的存儲數據單位,叫做Word。一個字足夠大以持有byte、char、short、int、float、reference或者returnAdress的一個值,兩個字則足夠持有更大的類型long、double。它通常是主機平臺一個指針的大小,如32位的平臺上,字是32位。

同時JVM中定義了它所支持的基本數據類型,包括兩部分:數值類型和returnAddress類型。數值類型分為整形和浮點型。

整形:

byte值是8位的有符號二進制補碼整數
short值是16位的有符號二進制補碼整數?
int值是32位的有符號二進制補碼整數?
long值是64位的有符號二進制補碼整數?
char值是表示Unicode字符的16位無符號整數 ,注意Java中
是Unicode字符,占兩個字節 ?,ASCii占8位但是他沒有中文字符

浮點:

float值是32位IEEE754浮點數
double值是64位IEEE754浮點數?

?

?

returnAddress類型的值是Java虛擬機指令的操作碼的指針。

對比java的基本數據類型,jvm的規范中沒有boolean類型。這是因為jvm中對boolean的操作是通過int類型來進行處理的,而boolean數組則是通過byte數組來進行處理。

至于String,我們知道它存儲在常量池中,但他不是基本數據類型,之所以可以存在常量池中,是因為這是JVM的一種規定。如果查看String源碼,我們就會發現,String其實就是一個基于基本數據類型char的數組。如圖:

?

?

2.字節碼文件

通過字節碼文件的格式我們可以看出jvm是如何規范數據類型的。下面是ClassFile的結構:

關于各個字段的定義(參考自JVM Specification 和 博文:http://www.cnblogs.com/zhuYears/archive/2012/02/07/2340347.html),

magic:

魔數,魔數的唯一作用是確定這個文件是否為一個能被虛擬機所接受的Class文件。魔數值固定為0xCAFEBABE,不會改變。

minor_version、major_version:

分別為Class文件的副版本和主版本。它們共同構成了Class文件的格式版本號。不同版本的虛擬機實現支持的Class文件版本號也相應不同,高版本號的虛擬機可以支持低版本的Class文件,反之則不成立。

constant_pool_count:

常量池計數器,constant_pool_count的值等于constant_pool表中的成員數加1。

constant_pool[]:

常量池,constant_pool是一種表結構,它包含Class文件結構及其子結構中引用的所有字符串常量、類或接口名、字段名和其它常量。常量池不同于其他,索引從1開始到constant_pool_count -1。

access_flags:

訪問標志,access_flags是一種掩碼標志,用于表示某個類或者接口的訪問權限及基礎屬性。access_flags的取值范圍和相應含義見下表:

?

this_class:

類索引,this_class的值必須是對constant_pool表中項目的一個有效索引值。constant_pool表在這個索引處的項必須為CONSTANT_Class_info類型常量,表示這個Class文件所定義的類或接口。

super_class:

父類索引,對于類來說,super_class的值必須為0或者是對constant_pool表中項目的一個有效索引值。如果它的值不為0,那constant_pool表在這個索引處的項必須為CONSTANT_Class_info類型常量,表示這個Class文件所定義的類的直接父類。當然,如果某個類super_class的值是0,那么它必定是java.lang.Object類,因為只有它是沒有父類的。

interfaces_count:

接口計數器,interfaces_count的值表示當前類或接口的直接父接口數量。

interfaces[]:

接口表,interfaces[]數組中的每個成員的值必須是一個對constant_pool表中項目的一個有效索引值,它的長度為interfaces_count。每個成員interfaces[i] 必須為CONSTANT_Class_info類型常量。

fields_count:

字段計數器,fields_count的值表示當前Class文件fields[]數組的成員個數。

fields[]:

字段表,fields[]數組中的每個成員都必須是一個fields_info結構的數據項,用于表示當前類或接口中某個字段的完整描述。

methods_count:

方法計數器,methods_count的值表示當前Class文件methods[]數組的成員個數。

methods[]:

方法表,methods[]數組中的每個成員都必須是一個method_info結構的數據項,用于表示當前類或接口中某個方法的完整描述。

attributes_count:

屬性計數器,attributes_count的值表示當前Class文件attributes表的成員個數。

attributes[]:

屬性表,attributes表的每個項的值必須是attribute_info結構。

四、一個java類的實例分析

為了了解JVM的數據類型規范和內存分配的大體情況,我新建了MemeryTest.java:

編譯為MemeryTest.class后,通過WinHex查看該文件,對應字節碼文件各個部分不同的定義,我了解了下面16進制數值的具體含義,盡管不清楚ClassLoader的具體實現邏輯,但是可以想象這樣一個嚴謹格式的文件給JVM對于內存管理和執行程序提供了多大的幫助。

運行程序后,我在windows資源管理器中找到對應的進程ID.

并且在控制臺通過jmap -heap 10016查看堆內存的使用情況:

?

輸出結果中表示當前java進程啟動的JVM是通過4個線程進行Parallel GC,堆的最小FreeRatio是40%,堆的最大FreeRatio是70%,堆的大小是4090M,新對象占用1.5M,Young Generation可以擴展到最大是1363M, Tenured Generation的大小是254.5M,以及NewRadio和SurvivorRadio中,下面更是具體給出了目前Young Generation中1.5M的劃分情況,Eden占用1.0M,使用了5.4%,Space占了0.5M,使用了93%,To Space占了0.5M,使用了0%。

下面我們通過jmap dump把heap的內容打印打文件中:

使用Eclipse的MAT插件打開對應的文件:

選擇第一項內存泄露分析報告打開test.bin文件,展示出來的是MAT關于內存可能泄露的分析。

從結果來看,有3個地方可能存在內存泄露,他們占據了Heap的22.10%,13.78%,14.69%,如果內存泄露,這里一般會有一個比值非常高的對象。打開第一個Probem Suspect,結果如下:

?

ShallowHeap是對象本身占用的堆大小,不包含引用,RetainedHeap是對象所持有的Shallowheap的大小,包括自己ShallowHeap和可以引用的對象的ShallowHeap。垃圾回收的時候,如果一個對象不再引用后被回收,那么他的RetainedHeap是能回收的內存總和。通過上圖可以看出程序中并沒有什么內存泄露,可以放心了。如果還有什么不太確定的對象,則可以通過多個時間點的HeapDumpFile來研究某個對象的變化情況。

五、小結

以上便是我最近幾天對JVM相關資料的整理,主要圍繞他的基本組成和運行原理等,內存管理,節本數據類型和字節碼文件。JVM是一個非常優秀的JAVA程序,也是個不錯的規范,這次整理學習讓我對他有了更加清晰的認知,對Java語言的理解也更加加深。

這里補充一點 :java的重載與多態其實是與虛擬機相關的,重載是靜態分派(編譯時決定運行哪個方法),多態是動態分派(運行時決定運行哪個方法)。

下面給出重載代碼:

?

?
  • public class JVM {

  • static abstract class A{

  • ?
  • }

  • static class B extends A{

  • ?
  • }

  • static class C extends A{

  • ?
  • }//去掉此方法 會編譯出錯

  • public void say(A a){

  • System.out.println("a");

  • }

  • public void say(B b){

  • System.out.println("b");

  • }

  • public void say(C c){

  • System.out.println("c");

  • }

  • public static void main(String args[]){

  • JVM jvm = new JVM();

  • A b = new B();

  • A c = new C();

  • jvm.say(b);

  • jvm.say(c);

  • }

  • 輸出:

    ?

    ?

    a a

    當上面修改為:

    ?

    ?

    jvm.say((B)b);時 則輸出結果為b,

    調用哪個方法是在編譯時就確定的。
    對于基本類型的重載級別:

    ?

    char->int->long->float->double char和byte short是同一級別,類型轉換不安全。

    比如char的重載 會先看1.char的參數 2.int 3.long 4.float 5.double 6.包裝器類型(character) 7.Serializable或者Comparable接口,他倆優先級一樣,當同時存在時會提示類型模糊,拒絕編譯。8.Object 9. char.. 可變參數類型

    總結

    以上是生活随笔為你收集整理的全面解读java虚拟机的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    日韩精品免费在线 | 怡红院成人在线 | 欧美一级特黄高清视频 | 国产精品不卡在线观看 | 午夜视频一区二区三区 | 黄色av电影免费观看 | 亚洲精品系列 | 久久久精品免费观看 | 国产综合在线观看视频 | 99精品国产在热久久 | 国产黄在线 | 91.精品高清在线观看 | 草草草影院 | 97成人精品视频在线播放 | 超碰在线人人97 | 视频二区在线 | 9999激情| 伊人国产女 | 久草在线一免费新视频 | 97夜夜澡人人爽人人免费 | 亚洲国产影院 | 91九色国产在线 | 中文字幕在线看视频国产 | 免费网站看v片在线a | 在线观看视频福利 | 亚洲japanese制服美女 | 国产爽妇网 | 亚洲综合成人av | 在线观看中文字幕2021 | 久久精品国产免费看久久精品 | 免费亚洲黄色 | 免费黄色在线网址 | 丝袜美女在线 | 色插综合| 99999精品 | 成年人av在线播放 | 国产精品久久久久久久久久妇女 | 九九精品在线观看 | 九九亚洲精品 | 在线 视频 亚洲 | 日日干夜夜干 | 欧美日韩不卡在线观看 | 国产一区在线免费观看 | 国产美女精品在线 | 在线免费观看黄网站 | 国产在线999| 中文字幕第一页av | 精品国模一区二区 | 日本视频高清 | 日本久久综合网 | 97色在线| 久久久免费网站 | 99综合电影在线视频 | 在线免费观看国产 | 欧亚久久| 激情五月六月婷婷 | 国产精品久久久久久久久久了 | 天天天在线综合网 | 激情丁香5月 | 亚洲成人精品影院 | 免费网站黄色 | 99久久精品免费看国产四区 | 国产专区视频在线观看 | 久久久久久久久久伊人 | 亚洲免费观看视频 | 欧美日韩不卡在线观看 | 成人小视频在线观看免费 | 91麻豆免费版 | 成人免费看片网址 | 国产精品亚州 | 91在线影视 | 久草在线手机观看 | 国产精品18videosex性欧美 | 91欧美日韩国产 | 超碰97公开| 中字幕视频在线永久在线观看免费 | 999久久久免费精品国产 | 91视频免费观看 | 国语久久 | 国产精品日韩高清 | 亚洲成av人片一区二区梦乃 | 高清av中文字幕 | 亚洲伊人婷婷 | 99视频在线精品 | 伊人久久精品久久亚洲一区 | 又大又硬又黄又爽视频在线观看 | 久久最新网址 | av线上看 | 国产一级不卡毛片 | 亚洲成人网在线 | 国产精品高清免费在线观看 | 久久中文精品视频 | 国产vs久久| 亚洲综合国产精品 | 91精品国产91p65| 欧美午夜剧场 | 欧美久久久久久久久久久久久 | 97日日碰人人模人人澡分享吧 | 人人爽久久久噜噜噜电影 | 又紧又大又爽精品一区二区 | 久久 亚洲视频 | 亚洲综合黄色 | 中文字幕日韩在线播放 | 成人不用播放器 | 天天操天天舔天天干 | 伊人小视频 | 国产小视频在线观看 | 在线免费视频你懂的 | 草久久影院 | 婷五月天激情 | 天天天在线综合网 | 久久国产精品第一页 | 啪嗒啪嗒免费观看完整版 | 97精品国自产拍在线观看 | 国产精品一区在线观看 | 色夜视频 | 欧美精品一二 | 激情综合网五月婷婷 | 天天综合91 | 91久久电影| 中文字幕91 | 91亚洲视频在线观看 | 国产亚洲一区二区三区 | 日韩精品久久一区二区 | 字幕网av | 国产精品久久一区二区三区不卡 | 五月天激情综合网 | 亚洲日本韩国一区二区 | 97在线观看视频免费 | 国产亚洲精品成人av久久影院 | 国产精品视频区 | 国产一级性生活 | 激情av五月婷婷 | 久久久久久美女 | 日韩免费在线观看网站 | 天天干夜夜夜 | 亚洲黄色一级电影 | 成年人视频免费在线播放 | 成人av一二三区 | 丁香六月久久综合狠狠色 | 综合色天天 | 夜夜操天天操 | 2017狠狠干 | 色av男人的天堂免费在线 | 亚洲男男gaygayxxxgv | 国产精品毛片一区视频播 | 亚洲天天综合网 | 美女视频黄是免费的 | 91黄色免费看 | 久久人人精 | 亚洲欧美日韩中文在线 | 黄色三级免费网址 | 国产品久精国精产拍 | 久久综合九色欧美综合狠狠 | 中文在线www | 蜜臀精品久久久久久蜜臀 | 国产黄色片免费 | 午夜在线国产 | 国产一区二区三区四区在线 | 日本电影久久 | a黄色片在线观看 | 天天操天天干天天 | 国产精品久久久久久高潮 | 亚洲国产中文字幕在线观看 | 午夜在线看 | 久久久免费观看 | 午夜精品久久久久久久久久久久 | 91精品免费在线 | 国产福利av | 日韩一区二区三区高清在线观看 | 尤物九九久久国产精品的分类 | 精品一区 在线 | 亚洲精品高清视频 | 国产黄色在线网站 | 伊人干综合 | 狠狠色丁香久久综合网 | 国产第一二区 | 91视频在线播放视频 | 五月开心六月伊人色婷婷 | 国产精品久久久久永久免费看 | 久久国产麻豆 | 五月婷婷欧美 | 日本不卡一区二区 | 亚洲日韩中文字幕在线播放 | 97在线观看免费高清完整版在线观看 | 日韩伦理片一区二区三区 | 久久理论电影 | av在线电影网站 | 91精品在线播放 | h动漫中文字幕 | 久久久久久毛片 | av一区二区三区在线播放 | 亚洲国产中文字幕在线观看 | 国产精品视频地址 | 免费麻豆 | 日韩欧美国产精品 | 最新中文字幕视频 | 91精品国产91热久久久做人人 | 欧美老人xxxx18| 欧美日本国产在线观看 | 97超碰资源网| 国产伦精品一区二区三区高清 | 五月开心色| 国产精品乱码久久 | 国产高清在线免费视频 | 韩日精品中文字幕 | 成人黄色电影在线播放 | 亚洲精品乱码久久久久久写真 | 麻花豆传媒一二三产区 | 国产日韩视频在线观看 | 毛片随便看 | 日本精品久久久久中文字幕 | 免费高清在线一区 | 免费视频久久久久 | 日韩理论片 | 国产黄色av网站 | 欧美日韩一区二区三区在线免费观看 | 最新av免费在线 | 99视频在线看 | 狠狠色丁香九九婷婷综合五月 | 欧美日韩一区二区视频在线观看 | 麻豆精品国产传媒 | 国产一区二区三区午夜 | 色五月激情五月 | 在线观看免费成人 | 欧美日韩在线视频观看 | 久久久久久久久久久久亚洲 | 91麻豆国产福利在线观看 | 99爱视频在线观看 | 樱空桃av | 国产精品高 | 久久草草影视免费网 | 91av免费看 | 午夜精品一区二区三区在线视频 | 亚洲在线不卡 | 亚洲免费观看视频 | 国产精品一区二区久久精品爱微奶 | 99综合视频 | 96久久| 丁香五月缴情综合网 | av网站在线观看播放 | 久久97久久97精品免视看 | 免费在线国产黄色 | 国产黄色片免费看 | 久久高清免费视频 | 久热只有精品 | 国内视频在线 | 亚洲国内精品 | 一色屋精品视频在线观看 | 国产精品日韩欧美一区二区 | 国产一二三四在线观看视频 | 亚洲欧洲精品久久 | 精品久久一区二区三区 | 欧美精品久久久久久久久久白贞 | 成人黄色中文字幕 | 免费在线一区二区 | 国产96精品 | 人人超碰在线 | 国产亚洲在线视频 | 国产视频一区二区在线播放 | 久久久久亚洲精品中文字幕 | 91亚洲精品国偷拍自产在线观看 | 久久99久久99精品中文字幕 | 免费三级黄色 | 婷婷激情av| 91福利专区 | 国产精品成人a免费观看 | 在线久草视频 | 国产第一二区 | 国产精品美女免费看 | 国产亚洲精品久久久久久大师 | 色婷婷久久一区二区 | 国产高清99| 中文字幕在线观看视频一区 | 国产一级a毛片视频爆浆 | 手机成人在线电影 | 国产亚洲精品久久久网站好莱 | 国产看片网站 | 深夜免费福利视频 | 亚洲精品在线视频 | 久久久午夜视频 | www.亚洲激情.com | 精品国产一区二区在线 | 天天玩夜夜操 | 91自拍视频在线 | 亚洲精品综合在线观看 | 亚洲国产一区av | 中文字幕精品www乱入免费视频 | 欧美综合在线观看 | 五月天综合婷婷 | 欧美日韩高清在线 | 亚洲精品在线免费观看视频 | 亚洲国产成人精品在线 | 婷婷在线色 | 色吊丝在线永久观看最新版本 | 久久久久久高潮国产精品视 | 久久精品成人热国产成 | 黄色小说在线观看视频 | 伊人官网| 丰满少妇一级 | 69国产盗摄一区二区三区五区 | 欧美男女爱爱视频 | 精品不卡视频 | 99视频精品免费视频 | 激情五月av| 精品国产片 | 中文字幕国内精品 | 九九免费在线看完整版 | 亚洲综合色丁香婷婷六月图片 | 狠狠操狠狠干2017 | 精品国产99国产精品 | 色老板在线视频 | 国产视频在线观看一区二区 | 91在线免费视频观看 | 亚洲综合色激情五月 | 日韩精品久久一区二区三区 | 中文区中文字幕免费看 | 一性一交视频 | 在线免费国产视频 | 在线免费中文字幕 | 久久精品美女视频网站 | 免费福利在线视频 | 国产成人精品av久久 | 四虎欧美| 少妇视频在线播放 | 免费久久网 | 久久深夜 | 人人澡人人模 | 五月婷婷在线观看视频 | 中文字幕一区二区三区在线观看 | 996久久国产精品线观看 | 国产精品久久久久久久免费观看 | 国产一二区在线观看 | 人人爽人人舔 | 日韩在线精品一区 | 成人黄色免费在线观看 | 在线观看国产日韩 | 超碰免费av | 99视频在线免费 | 成人午夜电影网 | 91国内在线 | 欧洲精品视频一区二区 | a v在线观看 | 99色免费| 99视频精品在线 | 色97在线 | 中文字幕一区二区三区在线观看 | 99热99re6国产在线播放 | 91精品亚洲影视在线观看 | 国产伦理久久精品久久久久_ | 国产精品一区二区精品视频免费看 | 日韩精品亚洲专区在线观看 | 免费电影一区二区三区 | 亚洲精品中文在线资源 | 欧美日韩观看 | 中文字幕日韩一区二区三区不卡 | sm免费xx网站 | 国产在线观看a | 国产成人无码AⅤ片在线观 日韩av不卡在线 | 美女免费视频一区 | 九九久久久| 日韩精品久久久久久 | 91精品一区二区三区蜜桃 | 亚洲mv大片欧洲mv大片免费 | 国产美女精彩久久 | 国产精品都在这里 | av福利在线播放 | 久久久天堂 | 亚洲v欧美v国产v在线观看 | 99久久婷婷国产一区二区三区 | 久久精品亚洲精品国产欧美 | 成人黄色av免费在线观看 | 又黄又爽又刺激视频 | 久久久资源网 | 精品久久一 | 日韩免费播放 | 成人在线视频免费 | 日韩在线观看你懂得 | 日韩一级片网址 | 成人一级片免费看 | 国内三级在线观看 | 日韩免费观看一区二区三区 | 色婷婷在线播放 | 国产精品综合在线 | 99国产在线| 亚洲成av人影片在线观看 | 久久avav | 日韩视频在线一区 | 黄色成品视频 | 中国一区二区视频 | 99在线精品视频 | 91精品在线免费观看视频 | 天堂av在线 | 久久精品看 | 成人动漫一区二区 | 精品美女久久久久久免费 | 久久国产精品精品国产色婷婷 | 久久国产精品99久久久久久老狼 | 国产大陆亚洲精品国产 | 国产福利专区 | 探花在线观看 | 91亚·色 | 国产剧情在线一区 | 久久综合九色综合欧美狠狠 | 亚洲影院天堂 | 日韩色一区二区三区 | 国产精品一区二区无线 | 草久在线播放 | 外国av网 | 日韩欧美xxxx | 91成人精品观看 | 日本精品视频网站 | 一本一道久久a久久综合蜜桃 | 欧美在线视频日韩 | 99在线视频精品 | 欧美日韩在线观看视频 | 九九九在线观看视频 | av综合av | 亚洲国产精品va在线看黑人动漫 | 国产精品一区二区三区在线 | 亚洲理论电影 | 超碰人人超 | 日韩在线视频在线观看 | 91亚洲精品乱码久久久久久蜜桃 | 国产精品第一页在线观看 | 天天操天天干天天爱 | 99中文视频在线 | 日本护士三级少妇三级999 | 亚洲视频久久 | 午夜精品剧场 | 久久99久久精品 | 亚洲最新视频在线播放 | 午夜精品久久久久久久久久久 | 免费的国产精品 | 91福利在线导航 | 午夜私人影院久久久久 | 手机在线看片日韩 | 在线视频亚洲 | 一本一本久久a久久精品综合妖精 | 精品久久久久久久久久久久久久久久久久 | 在线看岛国av | 国产香蕉久久 | 99久久精品免费看国产免费软件 | 日韩中文字幕免费 | 日韩精品一二三 | 国产精品久久久久一区 | 91精品电影 | 国产成人精品一区二三区 | 久久99久久99精品免观看粉嫩 | 日韩av电影网站在线观看 | 欧美日韩国产在线观看 | 日韩av电影中文字幕 | 99在线精品视频在线观看 | 久久人人爽视频 | 欧美日韩视频精品 | 激情久久婷婷 | 亚洲国产福利视频 | 国产成人亚洲在线观看 | 免费日韩一区二区三区 | 中文字幕一区二区三区视频 | 色五婷婷| 91成人午夜 | 亚洲闷骚少妇在线观看网站 | 91精品免费| 欧美在线free | 免费高清在线一区 | 2019中文最近的2019中文在线 | 久久综合操 | 日韩91av| 日韩精品在线一区 | 亚洲国产日韩欧美在线 | 91在线精品一区二区 | 久久精品高清视频 | 99久久精品国产亚洲 | 亚洲欧美日韩精品一区二区 | 97色婷婷成人综合在线观看 | 日韩网站一区二区 | 天天激情综合 | 波多野结衣在线观看一区二区三区 | 日本精品va在线观看 | 黄色免费视频在线观看 | 在线国产黄色 | 国产精品麻豆一区二区三区 | 久久在草| 99精品免费在线观看 | 国产精品永久免费 | 中文字幕一区二区在线播放 | 在线免费观看羞羞视频 | 日韩高清一二区 | 91入口在线观看 | 国产一二三区av | av女优中文字幕在线观看 | 色综合 久久精品 | 丁香婷婷综合激情五月色 | 日韩欧美xxxx | 区一区二区三在线观看 | 在线国产小视频 | 久久狠狠亚洲综合 | 日本精油按摩3 | 精品一区二区三区香蕉蜜桃 | 欧美性直播| 国产亚洲人 | 久久婷婷综合激情 | 国产又粗又猛又色又黄视频 | 精品视频www | 97在线视频网站 | 992tv在线 | 97人人人人| 人人爽人人爽av | 久久伊人精品一区二区三区 | 久久精品久久久久 | 91av福利视频 | 国产不卡在线观看 | 日韩色av色资源 | 久久国产精品99国产 | 色婷婷国产精品 | 精品国产aⅴ麻豆 | 日日爱视频 | 国产精品都在这里 | 亚洲精品女人久久久 | 黄色软件在线观看视频 | 激情影音 | 亚洲欧美国产精品 | 欧美激情精品久久久久久免费印度 | 中文字幕在线播出 | av网址aaa| 国产尤物一区二区三区 | 蜜臀av夜夜澡人人爽人人 | 婷婷伊人五月 | 国产精品视频免费看 | 日韩欧美aaa| 精品国产视频在线 | www.久久爱.cn| 国产精品男女视频 | 在线免费黄色 | 99久久www免费 | 黄色小网站在线 | 精品国产不卡 | 日韩精品中文字幕在线播放 | 日韩在线观看你懂的 | 91最新网址在线观看 | 国产中文在线观看 | 国产精品资源在线观看 | 日韩精品一区二区在线 | 日本天天操 | 欧美性生活小视频 | 看毛片网站 | 中日韩三级视频 | 日韩专区 在线 | www亚洲精品 | 午夜精品一区二区三区在线视频 | 日韩精品视频第一页 | 国产精品专区在线观看 | 欧美在线视频免费 | 久久国产一区二区 | 91av社区| 月丁香婷婷 | 国产精品永久久久久久久www | 91超在线 | 欧美日韩裸体免费视频 | 丁香 久久 综合 | 97精品超碰一区二区三区 | 91九色蝌蚪在线 | 天天搞天天干 | 国产精品第7页 | 日批视频 | 欧美污网站 | 亚洲国产视频a | 天天做天天爱天天爽综合网 | 99热精品在线 | 亚洲精品一区二区三区在线观看 | 色视频在线观看免费 | 99在线视频播放 | 亚洲精品国产精品99久久 | 狠狠狠干狠狠 | 一区精品久久 | 91综合久久一区二区 | 色综合天天做天天爱 | 日韩精品视频在线免费观看 | 成人性生交视频 | 美女网站在线看 | 天天干天天干 | h视频在线看 | 日韩精品一区在线观看 | 国产精品18久久久久久久久久久久 | 国产精品ⅴa有声小说 | 免费观看www7722午夜电影 | 婷婷久久五月 | 国产玖玖在线 | 亚洲一区二区三区精品在线观看 | 六月婷操 | 日韩动漫免费观看高清完整版在线观看 | 久久午夜羞羞影院 | 精品久久九九 | 久草在线手机视频 | 日韩免| 91视频下载| 国产 中文 日韩 欧美 | 这里只有精彩视频 | 亚洲精品国产日韩 | 日韩av成人| 日日干天夜夜 | 97超碰人人澡| 亚洲欧美综合精品久久成人 | 久久国产系列 | a电影在线观看 | 玖玖玖国产精品 | 日韩精品一区二区在线观看视频 | 天天插天天干天天操 | 97品白浆高清久久久久久 | 国产成人精品aaa | 亚洲综合在线观看视频 | 91麻豆精品国产自产在线 | 日日干精品 | 国产精品一区二区在线免费观看 | 337p日本欧洲亚洲大胆裸体艺术 | 高清在线观看av | 中文av在线播放 | 国产女教师精品久久av | 91精品婷婷国产综合久久蝌蚪 | 999久久久免费精品国产 | 人人擦 | 中文字幕在线观看免费 | 九九视频精品免费 | 国产一级黄色av | 九精品| 亚洲另类久久 | 中文字幕免费看 | 国产永久免费高清在线观看视频 | 亚洲成av人电影 | 日韩高清在线一区二区三区 | 精品国产久 | 美女网站久久 | 亚洲综合在线视频 | 久久99在线| 中文字幕最新精品 | 亚洲在线高清 | 国产精品免费观看网站 | 国产又粗又猛又黄又爽 | 久久久午夜精品福利内容 | 国产无套一区二区三区久久 | 午夜美女wwww | 日韩高清黄色 | 欧美成人精品欧美一级乱黄 | 欧美日韩在线网站 | 免费看成人av | 亚洲乱码一区 | 亚洲精品在线视频网站 | 免费视频国产 | 91在线免费播放视频 | 日韩精品视频免费在线观看 | 丁香六月天 | 91看片淫黄大片一级在线观看 | 亚洲精品国产精品国自产在线 | 国产亚州精品视频 | 成人久久久久久久久久 | 91麻豆精品91久久久久同性 | 美女网站在线观看 | 香蕉久草在线 | 91女子私密保健养生少妇 | 免费a网址| 91在线免费视频观看 | 欧美日韩免费在线视频 | 97超碰在线久草超碰在线观看 | 又粗又长又大又爽又黄少妇毛片 | 久久这里只有精品9 | 中文字幕不卡在线88 | 欧美日韩视频网站 | 亚洲人成影院在线 | 操久 | 最近中文字幕视频完整版 | 中国一级片在线 | 成人在线电影观看 | 中文字幕欧美日韩va免费视频 | 欧美日韩一区二区三区在线免费观看 | 亚洲成人中文在线 | 日韩免费在线视频观看 | 日日夜夜av| 亚洲欧洲精品久久 | 日韩电影久久久 | 欧美伦理电影一区二区 | 日韩不卡高清视频 | 亚洲欧美激情精品一区二区 | 国产一级免费在线观看 | 最新不卡av| 国产黄色片免费在线观看 | 3d黄动漫免费看 | 欧美成人999 | 久久久久久久久久久免费 | 日韩欧美一区二区在线 | 国产在线一区二区三区播放 | 91人网站| 国产亚洲激情视频在线 | 91视频免费看网站 | 国产五月婷婷 | 国产伦理剧 | 99视频这里有精品 | 美女av在线免费 | 久久96国产精品久久99漫画 | 6080yy精品一区二区三区 | 亚洲资源视频 | 国产九色在线播放九色 | 亚洲乱码国产乱码精品天美传媒 | 狠狠色综合网站久久久久久久 | 97av视频在线观看 | 91丨九色丨丝袜 | 一区二区三区四区精品视频 | 99人久久精品视频最新地址 | 五月婷婷丁香六月 | 国产美女视频网站 | 亚洲一级影院 | 国产精品久久久久aaaa九色 | 精品久久一区二区三区 | 五月婷婷视频在线 | 天天操夜夜做 | 91一区啪爱嗯打偷拍欧美 | 黄色av电影免费观看 | 久久久国产精华液 | 欧美成年黄网站色视频 | 超碰人人干人人 | 91亚洲精品在线观看 | 久久视频精品 | 久久久精品国产一区二区 | 中文字幕第一页在线播放 | 日本aaa在线观看 | aaa毛片视频 | 色婷婷综合激情 | 欧美日韩在线视频一区 | 色插综合 | 成年人免费av | 欧美日本在线视频 | 久草在线最新免费 | 久久久国产精品一区二区三区 | 免费a v网站| 91精品国产高清自在线观看 | 国产69精品久久久久99 | 免费男女羞羞的视频网站中文字幕 | 亚洲特级片 | 国产精品国产三级国产不产一地 | 久久久久综合网 | 精品乱码一区二区三四区 | 日本黄色免费在线观看 | 粉嫩av一区二区三区入口 | 国产麻豆果冻传媒在线观看 | 日韩av一区二区在线影视 | 国产自产高清不卡 | 日本在线观看中文字幕 | 色欧美日韩 | 亚洲第一区在线播放 | 天天干,天天操,天天射 | 黄色一级大片免费看 | 国产剧情一区二区在线观看 | 美女网站色 | 久草视频2 | 96视频免费在线观看 | av在线一 | 九九视频精品免费 | 久草视频国产 | 中文字幕中文字幕在线一区 | 免费久久网 | 欧美日韩中文在线视频 | 黄色a在线观看 | 精品在线视频播放 | 九九九免费视频 | 美女视频a美女大全免费下载蜜臀 | 激情丁香5月 | 人人添人人澡 | 成人久久18免费网站图片 | 亚州视频在线 | 日韩电影在线观看一区二区 | 欧美精品在线一区 | 啪啪免费视频网站 | 91精品一区二区三区蜜臀 | 国产精品99久久久精品 | 欧美精品九九99久久 | 成年免费在线视频 | 狠狠色狠狠色合久久伊人 | 国产日产欧美在线观看 | av网站播放 | 国产在线一区观看 | 亚洲综合色站 | 欧美做受高潮 | 久草视频在线资源 | 狂野欧美激情性xxxx欧美 | 欧美成人一区二区 | 久久tv视频 | 亚洲精品国产精品国 | 国产精品24小时在线观看 | 国产二区免费视频 | 天天操比 | 精品在线观看一区二区 | 九九久久成人 | 亚洲aⅴ乱码精品成人区 | 国产亚洲无 | 国产日韩在线一区 | 日日干综合 | 爱爱av网| 国产91精品在线播放 | 久亚洲精品 | 亚洲成av人片一区二区梦乃 | 色婷婷av一区二 | 97超碰人人 | 五月天丁香视频 | 在线成人短视频 | 国内精品久久久久影院优 | 俺要去色综合狠狠 | 四虎在线影视 | 亚洲天堂网站 | 91在线精品一区二区 | 亚洲特级毛片 | 激情丁香综合五月 | 高潮久久久久久久久 | 五月天久久婷 | 国产欧美日韩精品一区二区免费 | 成人精品在线 | 玖玖爱在线观看 | 丁香电影小说免费视频观看 | 三级小视频在线观看 | 日本韩国欧美在线观看 | 亚洲国产高清在线观看视频 | 国产免费黄视频在线观看 | 91| 久久免费看a级毛毛片 | 久久99国产综合精品免费 | 99精品免费久久久久久久久 | 欧美日韩国产一区二区三区在线观看 | 丰满少妇在线观看 | 黄色精品久久 | 日韩高清在线一区二区三区 | 天天性天天草 | 91视频一8mav | 国产精品综合久久 | 中文字幕免 | 久久久国产精品一区二区中文 | 一区二区三区四区精品视频 | 国产伦理久久精品久久久久_ | 亚洲天堂精品视频在线观看 | av看片网 | 欧美中文字幕久久 | 美女视频免费一区二区 | 久久久久女人精品毛片九一 | 国产录像在线观看 | 超碰电影在线观看 | 亚洲激情一区二区三区 | 狠狠狠狠狠干 | av7777777| 51久久成人国产精品麻豆 | 日韩毛片在线免费观看 | 亚洲欧美精品一区二区 | 在线影院av | 日韩一级成人av | 视频一区在线免费观看 | 久久国产区 | 日韩在线一区二区免费 | 国产黄色精品在线 | 超碰97在线看 | 狠狠干在线 | 国产小视频在线观看免费 | 亚洲精品午夜视频 | 国产 日韩 在线 亚洲 字幕 中文 | 日日夜夜亚洲 | 99久久精品无码一区二区毛片 | 亚洲精区二区三区四区麻豆 | 怡红院久久 | 91大神电影 | 亚洲成人精品国产 | 伊人久久在线观看 | 天天插综合 | 伊人av综合 | 日本在线观看黄色 | 日韩资源视频 | 操碰av| 高清中文字幕av | 亚洲情感电影大片 | 亚洲精品视频一二三 | 久久久国产精品久久久 | avove黑丝 | 亚洲精品在 | 激情五月开心 | 中文字幕中文字幕在线中文字幕三区 | 国产一级在线免费观看 | 一区二区三区 亚洲 | 日韩av一卡二卡三卡 | 日韩在线观看视频一区二区三区 | 最新免费中文字幕 | 久久久久久高潮国产精品视 | 天天色综合久久 | 免费在线电影网址大全 | 深爱激情婷婷网 | 精品国产91亚洲一区二区三区www | 亚洲人片在线观看 | 久久高清片 | 久久免视频 | 天天色天天操天天爽 | 免费看短 | 成人免费xxx在线观看 | www.亚洲视频 | 在线一区观看 | 久久久免费看视频 | 香蕉影视app| 国产亚洲精品精品精品 | 操操日 | 黄色a视频免费 | 天天做夜夜做 | 爱爱一区 | 免费看黄色小说的网站 | 日韩欧美在线视频一区二区三区 | 婷婷亚洲五月色综合 | 日韩理论片中文字幕 | 天天做夜夜做 | 国产一区二区在线免费 | 中日韩欧美精彩视频 | 国产精品免费观看网站 | 91黄色影视 | 久久系列 | 一本一道久久a久久精品 | a电影在线观看 | 91色蜜桃| 国产精品理论片 | 四虎在线视频 | 国产精品免费看久久久8精臀av | 日本黄色免费观看 | 在线精品观看国产 | 欧美日韩不卡在线 | 五月婷婷综合网 | 国产自在线 | 久久免费在线观看 | 日韩二区在线 | 国产精品免费大片视频 | 69中文字幕 | 婷婷av色综合 | 日日夜夜操操操操 | 久久福利| 国产精品自产拍在线观看 | 天天色天天上天天操 | 色射爱| 国产免费叼嘿网站免费 | 国内精品久久久久久久 | 日韩免费区 | 欧美片网站yy | 国产自产在线视频 | www.777奇米| 亚洲综合色丁香婷婷六月图片 | 中文有码在线视频 | 在线中文字幕视频 | 99久久精品费精品 | 一区二区毛片 | 欧美aaa视频 | 伊人色**天天综合婷婷 | 麻豆一区在线观看 | 一区二区精品在线视频 | 不卡电影免费在线播放一区 | 天天躁天天操 | 中文字幕专区高清在线观看 | 97精品国产97久久久久久粉红 | 亚洲黄色成人网 | 国产成人777777 | 日日干网 | 一区二区三区不卡在线 | 午夜在线观看影院 | 97香蕉久久国产在线观看 | 日操操| 西西www4444大胆在线 | 亚洲午夜在线视频 | 午夜婷婷在线播放 | 97免费公开视频 | 久久久久免费精品 | 天天操天天摸天天爽 | 欧洲精品码一区二区三区免费看 | 亚洲专区在线 | 国产日本高清 | 五月天六月色 | 成人黄色大片在线免费观看 | 成年人在线免费看视频 | 国产淫片免费看 | 亚洲有 在线 | 亚洲国产精品一区二区尤物区 | 丁香久久| www黄色com| 69视频国产 | 亚洲另类在线视频 | 国产日韩在线播放 | 国产伦精品一区二区三区免费 | 成人欧美亚洲 | 国产一级片一区二区三区 | 免费看网站在线 | 激情五月五月婷婷 | 在线观看国产一区 | 精品国产人成亚洲区 | 夜夜澡人模人人添人人看 | 美女精品久久久 | 国产精品嫩草影院99网站 | 亚洲欧美视频一区二区三区 | 久久久免费在线观看 | 亚洲精品免费观看视频 | 久久久久久久久久国产精品 | 亚洲国产精品va在线看黑人 | 天天综合久久综合 |