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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java内存溢出分析工具:jmap使用实战

發布時間:2023/11/30 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java内存溢出分析工具:jmap使用实战 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java內存溢出分析工具:jmap使用實戰??

?

在一次解決系統tomcat老是內存撐到頭,然后崩潰的問題時,使用到了jmap。?
1 使用命令?
在環境是linux+jdk1.5以上,這個工具是自帶的,路徑在JDK_HOME/bin/下?
jmap -histo pid>a.log?

2 輸出結果摘要?
Size????Count???Class description?
-------------------------------------------------------?
353371288???????9652324 char[]?
230711112???????9612963 java.lang.String?
139347160???????114865??byte[]?
76128096????????3172004 java.util.Hashtable$Entry?
75782280????????3157595 com.test.util.IPSeeker$IPLocation?
25724272????????9115????java.util.Hashtable$Entry[]?
9319968 166428??org.apache.tomcat.util.buf.MessageBytes?
8533856 32889???int[]?

發現有大量的String和自定義對象com.test.util.IPSeeker$IPLocation存在,檢查程序發現此處果然存在內存溢出。修改程序上線后再次用jmap抓取內存數據:?

146881712???207163??byte[]?
98976352????354285??char[]?
42595272????53558???int[]?
11515632????479818??java.util.HashMap$Entry?
9521896 59808???java.util.HashMap$Entry[]?
8887392 370308??com.test.bean.UnionIPEntry?
8704808 155443??org.apache.tomcat.util.buf.MessageBytes?
8066880 336120??java.lang.String?

內存溢出問題消除。?
注意:這個jmap使用的時候jvm是處在假死狀態的,只能在服務癱瘓的時候為了解決問題來使用,否則會造成服務中斷。
Java 內存泄露監控工具(一) -- JVM監控工具介紹jstack, jconsole, jinfo, jmap, jdb, jsta

jstack?-- 如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發生問題。另外,jstack工具還可以附屬到正在運行的java程序中,看到 當時運行的java程序的java stack和native stack的信息, 如果現在運行的java程序呈現hung的狀態,jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。

jconsole?– jconsole是基于Java?Management Extensions (JMX)的實時圖形化監測工具,這個工具利用了內建到JVM里面的JMX指令來提供實時的性能和資源的監控,包括了Java程序的內存使用,Heap size, 線程的狀態,類的分配狀態和空間使用等等。

jinfo?– jinfo可以從core文件里面知道崩潰的Java應用程序的配置信息,目前只有在Solaris和Linux的JDK版本里面才有。

jmap?– jmap 可以從core文件或進程中獲得內存的具體匹配情況,包括Heap size, Perm size等等,目前只有在Solaris和Linux的JDK版本里面才有。

jdb?– jdb 用來對core文件和正在運行的Java進程進行實時地調試,里面包含了豐富的命令幫助您進行調試,它的功能和Sun studio里面所帶的dbx非常相似,但 jdb是專門用來針對Java應用程序的。

jstat?– jstat利用了JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控等等。

jps?– jps是用來查看JVM里面所有進程的具體狀態, 包括進程ID,進程啟動的路徑等等。?

jstatd
啟動jvm監控服務。它是一個基于rmi的應用,向遠程機器提供本機jvm應用程序的信息。默認端口1099。
實例:jstatd -J-Djava.security.policy=my.policy

my.policy文件需要自己建立,內如如下:
grant codebase "file:$JAVA_HOME/lib/tools.jar" {
permission java.security.AllPermission;
};
這是安全策略文件,因為jdk對jvm做了jaas的安全檢測,所以我們必須設置一些策略,使得jstatd被允許作網絡操作

上面的操作沒有通過,出現:

Could not create remote object
access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
java.security.AccessControlException: access denied (java.util.PropertyPermission java.rmi.server.ignoreSubClasses write)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.lang.System.setProperty(System.java:727)
at sun.tools.jstatd.Jstatd.main(Jstatd.java:122)

create in your usr/java/bin the jstatd.all.policy file, with the content must be

  • grant?codebase?"file:${java.home}/../lib/tools.jar"?{ ?
  • permission?java.security.AllPermission; ?
  • };?

  • jps
    列出所有的jvm實例
    實例:
    jps
    列出本機所有的jvm實例

    jps 192.168.0.77
    列出遠程服務器192.168.0.77機器所有的jvm實例,采用rmi協議,默認連接端口為1099
    (前提是遠程服務器提供jstatd服務)

    輸出內容如下:
    jones@jones:~/data/ebook/java/j2se/jdk_gc$ jps
    6286 Jps
    6174? Jstat

    jconsole
    一個圖形化界面,可以觀察到java進程的gc,class,內存等信息。雖然比較直觀,但是個人還是比較傾向于使用jstat命令(在最后一部分會對jstat作詳細的介紹)。

    jinfo(linux下特有)
    觀察運行中的java程序的運行環境參數:參數包括Java System屬性和JVM命令行參數
    實例:jinfo 2083
    其中2083就是java進程id號,可以用jps得到這個id號。
    輸出內容太多了,不在這里一一列舉,大家可以自己嘗試這個命令。

    jstack(linux下特有)
    可以觀察到jvm中當前所有線程的運行情況和線程當前狀態
    jstack 2083
    輸出內容如下:


    jmap(linux下特有,也是很常用的一個命令)
    觀察運行中的jvm物理內存的占用情況。
    參數如下:
    -heap
    :打印jvm heap的情況
    -histo:打印jvm heap的直方圖。其輸出信息包括類名,對象數量,對象占用大小。
    -histo:live :同上,但是只答應存活對象的情況
    -permstat:打印permanent generation heap情況

    命令使用:
    jmap -heap 2083
    可以觀察到New Generation(Eden Space,From Space,To Space),tenured generation,Perm Generation的內存使用情況
    輸出內容:


    jmap -histo 2083 | jmap -histo:live 2083
    可以觀察heap中所有對象的情況(heap中所有生存的對象的情況)。包括對象數量和所占空間大小。
    輸出內容:

    寫個腳本,可以很快把占用heap最大的對象找出來,對付內存泄漏特別有效。

    jstat
    最后要重點介紹下這個命令。
    這是jdk命令中比較重要,也是相當實用的一個命令,可以觀察到classloader,compiler,gc相關信息
    具體參數如下:
    -class:統計class loader行為信息
    -compile:統計編譯行為信息
    -gc:統計jdk gc時heap信息
    -gccapacity:統計不同的generations(不知道怎么翻譯好,包括新生區,老年區,permanent區)相應的heap容量情況
    -gccause:統計gc的情況,(同-gcutil)和引起gc的事件
    -gcnew:統計gc時,新生代的情況
    -gcnewcapacity:統計gc時,新生代heap容量
    -gcold:統計gc時,老年區的情況
    -gcoldcapacity:統計gc時,老年區heap容量
    -gcpermcapacity:統計gc時,permanent區heap容量
    -gcutil:統計gc時,heap情況
    -printcompilation:不知道干什么的,一直沒用過。

    一般比較常用的幾個參數是:
    jstat -class 2083 1000 10 (每隔1秒監控一次,一共做10次)
    輸出內容含義如下:

    Loaded Number of classes loaded.
    Bytes Number of Kbytes loaded.
    Unloaded Number of classes unloaded.
    Bytes Number of Kbytes unloaded.
    Time Time spent performing class load and unload operations.








    jstat -gc 2083 2000 20(每隔2秒監控一次,共做10)
    輸出內容含義如下:
    S0C Current survivor space 0 capacity (KB).
    EC Current eden space capacity (KB).
    EU Eden space utilization (KB).
    OC Current old space capacity (KB).
    OU Old space utilization (KB).
    PC Current permanent space capacity (KB).
    PU Permanent space utilization (KB).
    YGC Number of young generation GC Events.
    YGCT Young generation garbage collection time.
    FGC Number of full GC events.
    FGCT Full garbage collection time.
    GCT Total garbage collection time.




















    輸出內容:


    如果能熟練運用這些命令,尤其是在linux下,那么完全可以代替jprofile等監控工具了,誰讓它收費呢。呵呵。
    用命令的好處就是速度快,并且輔助于其他命令,比如grep gawk sed等,可以組裝多種符合自己需求的工具。

    u??????????????jps的用法

    用來查看JVM里面所有進程的具體狀態,?包括進程ID,進程啟動的路徑等等。與unix上的ps類似,用來顯示本地的java進程,可以查看本地運行著幾個java程序,并顯示他們的進程號。

    ?

    [root@localhost ~]# jps

    25517 Jps

    25444 Bootstrap


    ??jstack的用法

    如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發生問題。另外,jstack工具還可以附屬到正在運行的java程序中,看到當時運行的java程序的java stack和native stack的信息,?如果現在運行的java程序呈現hung的狀態,jstack是非常有用的。目前只有在Solaris和Linux的JDK版本里面才有。

    ?

    [root@localhost bin]# jstack?25444

    Attaching to process ID 25917, please wait...

    Debugger attached successfully.

    Client compiler detected.

    JVM version is 1.5.0_08-b03

    Thread 25964: (state = BLOCKED)

    Error occurred during stack walking:

    sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: get_thread_regs failed for a lwp

    ????????at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:134)

    ????????at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.getThreadIntegerRegisterSet(LinuxDebuggerLocal.java:437)

    ????????at sun.jvm.hotspot.debugger.linux.LinuxThread.getContext(LinuxThread.java:48)

    ????????at

    jstat的用法

    用以判斷JVM是否存在內存問題呢?如何判斷JVM垃圾回收是否正常?一般的top指令基本上滿足不了這樣的需求,因為它主要監控的是總體的系統資源,很難定位到java應用程序。

    Jstat是JDK自帶的一個輕量級小工具。全稱“Java Virtual Machine statistics monitoring tool”,它位于java的bin目錄下,主要利用JVM內建的指令對Java應用程序的資源和性能進行實時的命令行的監控,包括了對Heap size和垃圾回收狀況的監控。可見,Jstat是輕量級的、專門針對JVM的工具,非常適用。由于JVM內存設置較大,圖中百分比變化不太明顯

    一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。

    jstat工具特別強大,有眾多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id,和所選參數。

    ?

    ?

    語法結構:

    Usage: jstat -help|-options

    ???????jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]

    ?

    參數解釋:

    Options —?選項,我們一般使用?-gcutil?查看gc情況

    vmid??? — VM的進程號,即當前運行的java進程號

    interval–?間隔時間,單位為秒或者毫秒

    count?? —?打印次數,如果缺省則打印無數次

    ?

    S0? — Heap上的?Survivor space 0?區已使用空間的百分比
    S1? — Heap上的?Survivor space 1?區已使用空間的百分比
    E?? — Heap上的?Eden space?區已使用空間的百分比
    O?? — Heap上的?Old space?區已使用空間的百分比
    P?? — Perm space?區已使用空間的百分比
    YGC —?從應用程序啟動到采樣時發生?Young GC?的次數
    YGCT–?從應用程序啟動到采樣時?Young GC?所用的時間(單位秒)
    FGC —?從應用程序啟動到采樣時發生?Full GC?的次數

    FGCT–?從應用程序啟動到采樣時?Full GC?所用的時間(單位秒)
    GCT —?從應用程序啟動到采樣時用于垃圾回收的總時間(單位秒)

    ?

    實例使用1:

    [root@localhost bin]# jstat -gcutil 25444

    ??S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT

    ?11.63???0.00???56.46??66.92??98.49 162????0.248????6??????0.331????0.579

    ?

    實例使用2:

    [root@localhost bin]# jstat -gcutil 25444 1000 5

    ??S0?????S1?????E??????O??????P?????YGC?????YGCT????FGC????FGCT?????GCT

    ?73.54???0.00??99.04??67.52??98.49????166????0.252?????6????0.331????0.583

    ?73.54???0.00??99.04??67.52??98.49????166????0.252?????6????0.331????0.583

    ?73.54???0.00??99.04??67.52??98.49????166????0.252?????6????0.331????0.583

    ?73.54???0.00??99.04??67.52??98.49????166????0.252?????6????0.331????0.583

    ?73.54???0.00??99.04??67.52??98.49????166????0.252?????6????0.331????0.583

    ?

    我們可以看到,5次young gc之后,垃圾內存被從Eden space區(E)放入了Old space區(O),并引起了百分比的變化,導致Survivor space使用的百分比從73.54%(S0)降到0%(S1)。有效釋放了內存空間。綠框中,我們可以看到,一次full gc之后,Old space區(O)的內存被回收,從99.05%降到67.52%。

    圖中同時打印了young gc和full gc的總次數、總耗時。而,每次young gc消耗的時間,可以用相間隔的兩行YGCT相減得到。每次full gc消耗的時間,可以用相隔的兩行FGCT相減得到。例如紅框中表示的第一行、第二行之間發生了1次young gc,消耗的時間為0.252-0.252=0.0秒。

    常駐內存區(P)的使用率,始終停留在98.49%左右,說明常駐內存沒有突變,比較正常。

    如果young gc和full gc能夠正常發生,而且都能有效回收內存,常駐內存區變化不明顯,則說明java內存釋放情況正常,垃圾回收及時,java內存泄露的幾率就會大大降低。但也不能說明一定沒有內存泄露。

    GCT?是YGCT?和FGCT的時間總和。

    以上,介紹了Jstat按百分比查看gc情況的功能。其實,它還有功能,例如加載類信息統計功能、內存池信息統計功能等,那些是以絕對值的形式打印出來的,比較少用,在此就不做介紹。

    ?

    [root@localhost bin]# ps -ef | grep java

    root?????25917?????1??2 23:23?pts/2????00:00:05 /usr/local/jdk1.5/bin/java -Djava.endorsed.dirs=/usr/local/jakarta-tomcat-5.0.30/common/endorsed -classpath /usr/local/jdk1.5/lib/tools.jar:/usr/local/jakarta-tomcat-5.0.30/bin/bootstrap.jar:/usr/local/jakarta-tomcat-5.0.30/bin/commons-logging-api.jar -Dcatalina.base=/usr/local/jakarta-tomcat-5.0.30 -Dcatalina.home=/usr/local/jakarta-tomcat-5.0.30 -Djava.io.tmpdir=/usr/local/jakarta-tomcat-5.0.30/temp org.apache.catalina.startup.Bootstrap start

    ?

    jstat -class pid:顯示加載class的數量,及所占空間等信息。

    實例使用3:

    [root@localhost bin]# jstat -class 25917

    Loaded??Bytes??Unloaded??Bytes?????Time

    2629????2916.8???????29???24.6?????0.90

    ?

    jstat -compiler pid:顯示VM實時編譯的數量等信息。

    實例使用4:

    [root@localhost bin]# jstat -compiler 25917

    Compiled Failed Invalid???Time???FailedType FailedMethod

    ?????768??????0???????0???0.70????????????0

    ?

    jstat –gccapacity :可以顯示,VM內存中三代(young,old,perm)對象的使用和占用大小,如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存占用量,PC是但前perm內存占用量。其他的可以根據這個類推,?OC是old內純的占用量。

    ?

    [root@localhost bin]# jstat -gccapacity 25917

    NGCMN???????640.0

    NGCMX???????4992.0

    NGC?????????832.0

    S0C?????????64.0

    S1C?????????64.0

    EC??????????704.0

    OGCMN???????1408.0

    OGCMX???????60544.0

    OGC?????????9504.0

    OC??????????9504.0??????????????????OC是old內純的占用量

    PGCMN???????8192.0??????????????????PGCMN顯示的是最小perm的內存使用量

    PGCMX???????65536.0?????????????????PGCMX顯示的是perm的內存最大使用量

    PGC?????????12800.0?????????????????PGC是當前新生成的perm內存占用量

    PC??????????12800.0?????????????????PC是但前perm內存占用量

    YGC?????????164

    FGC?????????6

    ?

    jstat -gcnew pid: new對象的信息

    [root@localhost bin]# jstat -gcnew 25917

    ?S0C????S1C????S0U????S1U???TT MTT??DSS??????EC???????EU?????YGC?????YGCT

    ?64.0???64.0???47.4???0.0???2??15???32.0????704.0????145.7????168????0.254

    ?

    jstat -gcnewcapacity pid: new對象的信息及其占用量

    [root@localhost bin]# jstat -gcnewcapacity 25917

    ?NGCMN??NGCMX???NGC???S0CMX??S0C???S1CMX??S1C???ECMX????EC??????YGC???FGC

    640.0??4992.0??832.0 64.0???448.0 448.0??64.0???4096.0??704.0??168?????6

    ?

    jstat -gcold pid: old對象的信息。

    [root@localhost bin]# jstat -gcold 25917

    ???PC???????PU????????OC??????????OU???????YGC????FGC????FGCT?????GCT

    ?12800.0??12617.6?????9504.0??????6561.3???169?????6????0.335????0.591

    ?

    jstat -gcoldcapacity pid:old對象的信息及其占用量。

    [root@localhost bin]# jstat -gcoldcapacity 25917

    OGCMN??????OGCMX????????OGC?????????OC???????YGC???FGC????FGCT?????GCT

    1408.0?????60544.0??????9504.0??????9504.0???169?????6????0.335????0.591

    ?

    jstat -gcpermcapacity pid: perm對象的信息及其占用量。

    [root@localhost bin]# jstat -gcpermcapacity 25917

    PGCMN??????PGCMX???????PGC?????????PC??????YGC???FGC????FGCT?????GCT

    8192.0????65536.0????12800.0????12800.0???169?????6????0.335????0.591

    ?

    jstat -printcompilation pid:當前VM執行的信息。

    [root@localhost bin]# jstat -printcompilation -h3??25917 1000 5

    每1000毫秒打印一次,一共打印5次,還可以加上-h3每三行顯示一下標題。

    Compiled??Size??Type Method

    ?????788?????73????1 java/io/File <init>

    ?????788?????73????1 java/io/File <init>

    ?????788?????73????1 java/io/File <init>

    Compiled??Size??Type Method

    ?????788?????73????1 java/io/File <init>

    ?????788?????73????1 java/io/File <init>


    ???jmap的用法

    打印出某個java進程(使用pid)內存內的,所有‘對象’的情況(如:產生那些對象,及其數量)。

    可以輸出所有內存中對象的工具,甚至可以將VM?中的heap,以二進制輸出成文本。使用方法?jmap -histo pid。如果連用SHELL jmap -histo pid>a.log可以將其保存到文本中去,在一段時間后,使用文本對比工具,可以對比出GC回收了哪些對象。jmap -dump:format=b,file=String 3024可以將3024進程的內存heap輸出出來到String文件里。

    ?

    [root@localhost bin]# jmap -histo??25917

    Attaching to process ID 26221, please wait...

    Debugger attached successfully.

    Client compiler detected.

    JVM version is 1.5.0_08-b03

    Iterating over heap. This may take a while...

    Unknown oop at 0xaa6e42d0

    Oop's klass is null

    ?

    Object Histogram:

    ?

    Size????Count???Class description

    -------------------------------------------------------

    3722768 30467???* ConstMethodKlass

    1976480 25334???char[]

    1907880 46994???* SymbolKlass

    1762088 2947????byte[]

    1709536 30467???* MethodKlass

    1487816 2600????* ConstantPoolKlass

    1009576 2600????* InstanceKlassKlass

    904880??2199????* ConstantPoolCacheKlass

    741432??30893???java.lang.String

    653576??4785????int[]

    351760??4397????java.lang.reflect.Method

    277824??2894????java.lang.Class

    248704??3401????short[]

    200888??4411????java.lang.Object[]

    193656??4045????java.lang.Object[]

    179744??5617????java.util.TreeMap$Entry

    175688??1800????java.util.HashMap$Entry[]

    165288??6887????java.util.HashMap$Entry

    104736??3273????java.lang.ref.SoftReference

    104136??4339????java.lang.ref.WeakReference

    96096???3521????java.lang.String[]

    86160???3590????java.util.Hashtable$Entry

    85584???3566????java.util.ArrayList

    83472???1206????java.util.Hashtable$Entry[]

    82944???1728????java.beans.MethodDescriptor

    80560???265?????* ObjArrayKlassKlass

    69120???1728????java.util.HashMap

    52464???3055????java.lang.Class[]

    43040???1076????java.util.Hashtable

    42496???664?????org.apache.commons.modeler.AttributeInfo

    37880???947?????java.util.TreeMap

    33896???557?????javax.management.modelmbean.ModelMBeanAttributeInfo[]

    33152???518?????java.beans.PropertyDescriptor

    616?????11??????org.springframework.aop.framework.ProxyFactory

    608?????19??????java.util.PropertyPermission

    608?????38??????org.springframework.beans.MutablePropertyValues

    608?????38??????org.springframework.beans.factory.support.MethodOverrides

    608?????2???????* ArrayKlassKlass

    608?????38??????org.springframework.beans.factory.config.ConstructorArgumentValues

    608?????4???????org.apache.xerces.impl.XMLDTDScannerImpl

    576?????24??????java.util.Stack

    576?????36??????java.util.regex.Pattern$Category

    576?????24??????org.apache.naming.NamingEntry

    560?????7???????java.net.URL[]

    552?????23??????sun.management.MappedMXBeanType$BasicMXBeanType

    552?????1???????java.util.Locale[]

    552?????22??????java.io.ObjectStreamField[]

    544?????17??????java.util.Collections$SynchronizedMap

    176?????11??????java.util.regex.Pattern$Ctype

    8???????1???????sun.reflect.GeneratedMethodAccessor49

    8???????1???????sun.reflect.GeneratedMethodAccessor6

    8???????1???????sun.reflect.GeneratedConstructorAccessor10

    Heap traversal took 12.003 seconds.

    ?

    u??????????????jinfo的用法

    可以輸出并修改運行時的java?進程的opts。用處比較簡單,就是能輸出并修改運行時的java進程的運行參數。用法是jinfo?-opt? pid?如:查看2788的MaxPerm大小可以用??jinfo?-flag MaxPermSize 2788。

    ?

    ?

    u??????????????jconsole的用法

    jconsole:一個java GUI監視工具,可以以圖表化的形式顯示各種數據。并可通過遠程連接監視遠程的服務器VM。

    用java寫的GUI程序,用來監控VM,并可監控遠程的VM,非常易用,而且功能非常強。命令行里打?jconsole,選則進程就可以了

    不過我沒有運行起來,老是報下面的錯。會的朋友,幫忙看看。

    ?[root@localhost bin]# jconsole

    Exception in thread "AWT-EventQueue-0" java.awt.HeadlessException:

    No X11 DISPLAY variable was set, but this program performed an operation which requires it.????????at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)

    ????????at java.awt.Window.<init>(Window.java:317)

    ????????at java.awt.Frame.<init>(Frame.java:419)

    ????????at javax.swing.JFrame.<init>(JFrame.java:194)

    ????????at sun.tools.jconsole.JConsole.<init>(JConsole.java:65)

    ????????at sun.tools.jconsole.JConsole$4.run(JConsole.java:666)

    ????????at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

    ????????at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)

    ????????at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

    ????????at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

    ????????at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

    ????????at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

    ????????at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

    u??????????????jdb的用法

    用來對core文件和正在運行的Java進程進行實時地調試,里面包含了豐富的命令幫助您進行調試,它的功能和Sun studio里面所帶的dbx非常相似,但?jdb是專門用來針對Java應用程序的。



    工具名稱:IBM HeapAnalyzer

    JProfiler在java程序性能調試方便表現優越,推薦使用。也可使用下面jdk自己的一些工具。

    所有工具都在JDK/bin目錄下, jconsole和jvisualvm為GUI圖形化工具,其他為命令行。

    jvisualvm: GUI工具,可監控、性能評估、故障診斷主機上所有java進程的cpu,內存,線程使用情況,類似于JProfiler,嚴重推薦。

    jinfo:可以輸出并修改運行時的java 進程的opts。

    jps:與unix上的ps類似,用來顯示本地的java進程,可以查看本地運行著幾個java程序,并顯示他們的進程號。

    jstat:一個極強的監視VM內存工具。可以用來監視VM內存內的各種堆和非堆的大小及其內存使用量。

    jmap:打印出某個java進程(使用pid)內存內的,所有‘對象’的情況(如:產生那些對象,及其數量)。

    jconsole:一個java GUI監視工具,可以以圖表化的形式顯示各種數據。并可通過遠程連接監視遠程的服務器VM。

    jstat工具特別強大,有眾多的可選項,詳細查看堆內各個部分的使用量,以及加載類的數量。使用時,需加上查看進程的進程id,和所選參數。以下詳細介紹各個參數的意義。

    jstat -class pid:顯示加載class的數量,及所占空間等信息。
    jstat -compiler pid:顯示VM實時編譯的數量等信息。
    jstat -gc pid:可以顯示gc的信息,查看gc的次數,及時間。其中最后五項,分別是young gc的次數,young gc的時間,full gc的次數,full gc的時間,gc的總時間。
    jstat -gccapacity:可以顯示,VM內存中三代(young,old,perm)對象的使用和占用大小,如:PGCMN顯示的是最小perm的內存使用量,PGCMX顯示的是perm的內存最大使用量,PGC是當前新生成的perm內存占用量,PC是但前perm內存占用量。其他的可以根據這個類推, OC是old內純的占用量。
    jstat -gcnew pid:new對象的信息。
    jstat -gcnewcapacity pid:new對象的信息及其占用量。
    jstat -gcold pid:old對象的信息。
    jstat -gcoldcapacity pid:old對象的信息及其占用量。
    jstat -gcpermcapacity pid: perm對象的信息及其占用量。
    jstat -util pid:統計gc信息統計。
    jstat -printcompilation pid:當前VM執行的信息。
    除了以上一個參數外,還可以同時加上 兩個數字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,還可以加上-h3每三行顯示一下標題。

    jmap是一個可以輸出所有內存中對象的工具,甚至可以將VM 中的heap,以二進制輸出成文本。使用方法 jmap -histo pid。如果連用SHELL jmap -histo pid>a.log可以將其保存到文本中去,在一段時間后,使用文本對比工具,可以對比出GC回收了哪些對象。jmap -dump:format=b,file=String 3024可以將3024進程的內存heap輸出出來到String文件里。

    jinfo:的用處比較簡單,就是能輸出并修改運行時的java進程的運行參數。用法是jinfo -opt? pid 如:查看2788的MaxPerm大小可以用? jinfo -flag MaxPermSize 2788。

    jconsole是一個用java寫的GUI程序,用來監控VM,并可監控遠程的VM,非常易用,而且功能非常強。由于是GUI程序,這里就不詳細介紹了,不會的地方可以參考SUN的官方文檔。
    使用方法:命令行里打 jconsole,選則進程就可以了。

    SUN官方說明:

    jvisualvm:?http://java.sun.com/javase/6/docs/technotes/tools/share/jvisualvm.html

    jps:http://java.sun.com/javase/6/docs/technotes/tools/share/jps.html
    jstat:http://java.sun.com/javase/6/docs/technotes/tools/share/jstat.html
    jmap:http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html
    jconsole:http://java.sun.com/javase/6/docs/technotes/tools/share/jconsole.html




    在一次解決系統tomcat老是內存撐到頭,然后崩潰的問題時,使用到了jmap。?
    1 使用命令?
    在環境是linux+jdk1.5以上,這個工具是自帶的,路徑在JDK_HOME/bin/下?
    jmap -histo pid>a.log?

    2 輸出結果摘要?
    Size??? Count?? Class description?
    -------------------------------------------------------?
    353371288?????? 9652324 char[]?
    230711112?????? 9612963 java.lang.String?
    139347160?????? 114865? byte[]?
    76128096??????? 3172004 java.util.Hashtable$Entry?
    75782280??????? 3157595 com.test.util.IPSeeker$IPLocation?
    25724272??????? 9115??? java.util.Hashtable$Entry[]?
    9319968 166428? org.apache.tomcat.util.buf.MessageBytes?
    8533856 32889?? int[]?

    發現有大量的String和自定義對象com.test.util.IPSeeker$IPLocation存在,檢查程序發現此處果然存在內存溢出。修改程序上線后再次用jmap抓取內存數據:

    146881712?? 207163? byte[]?
    98976352??? 354285? char[]?
    42595272??? 53558?? int[]?
    11515632??? 479818? java.util.HashMap$Entry?
    9521896 59808?? java.util.HashMap$Entry[]?
    8887392 370308? com.test.bean.UnionIPEntry?
    8704808 155443? org.apache.tomcat.util.buf.MessageBytes?
    8066880 336120? java.lang.String?

    內存溢出問題消除。?
    注意:這個jmap使用的時候jvm是處在假死狀態的,只能在服務癱瘓的時候為了解決問題來使用,否則會造成服務中斷。



    jvisualvm

    一.Java VisualVM 概述


    ? 對于使用命令行遠程監控jvm?太麻煩??在jdk1.6?中?Oracle?提供了一個新的可視化的。?JVM?監控工具?Java?VisualVM?jvisualvm.exe?JDK?的?bin?目錄下。

    ?

    ???雙擊啟動?Java?VisualVM?后可以看到窗口左側?“應用程序?”欄中有“?本地?”、“遠程?”?、“快照?”三個項目。

    ?

    ??“本地?”下顯示的是在?localhost?運行的?Java?程序的資源占用情況,如果本地有?Java?程序在運行的話啟動?Java?VisualVM?即可看到相應的程序名,點擊程序名打開相應的資源監控菜單,以圖形的形式列出程序所占用的?CPU?、?Heap?、?PermGen?、類、線程的?統計信息。


    ??“遠程”?項下列出的遠程主機上的?Java?程序的資源占用情況,但需要在遠程主機上運行?jstatd?守護程序

    ?

    ?


    VisualVM分為?3?類,?本地?它會自動偵測到,并顯示出來

    雙擊Local?下的任一節點,看到右邊的變化?,你可以監控?CPU?,內存,類,線程等運行狀況,實時監控服務器性能。

    ?

    ?


    ?右鍵?VisualVM我們可以看到?Thread?Dump,?Heap?Dump

    ?做?Thread?Dump?很快,馬上就可以看到結果

    ?

    ?

    ?

    Heap?Dump要稍花費一些時間(可以看到當前?heap?里對象的數量及占用的比例,做?OOM?很好用)

    ?

    ?

    ?

    ?

    對其功能不再做描述,可以查閱網上相關質量,我們主要講的是如何使用?VisualVM?遠程監控。


    二.使用visualvm 遠程監控 JVM??

    1.?測試環境

    Ubuntu?Server?10.01

    ?

    2.??在服務器上安裝?jstatd?組件

    使用apt-get?命令安裝?openjdk?即可?:

    ?

    Java代碼??
  • sudo?apt-get?install?openjdk-6-jdk??
  • ?

    3.?在服務器上配置?jstatd?的?security?policy?文件

    ?? jstatd是一個監控?JVM?從創建到銷毀過程中資源占用情況并提供遠程監控接口的?RMI?(?Remote?Method?Invocation?,遠程方法調用)服務器程序,它是一個?Daemon?程序,要保證遠程監控軟件連接到本地的話需要?jstatd?始終保持運行。?

    ?? jstatd運行需要通過?-J-Djava.security.policy=***?指定安全策略,因此我們需要在服務器上建立一個指定安全策略的文件jstatd.all.policy?,文件內容如下:

    ?

    Java代碼??
  • grant?codebase?"file:${java.home}/../lib/tools.jar"?{??
  • ???permission?java.security.AllPermission;??
  • };??
  • ?

    ?

    ?

    4.?修改服務器?hosts?文件中的?IP?地址

    ?

    ?? 要使Java?VisualVM?成功連接到遠程服務器上,服務器端應該在?/etc/hosts?文件中把本機地址設為本機的?IP?地址。使用?hostname?-i?命令查看,如果顯示的是?127.0.0.1?或者與本機實際?IP?不一致的話,需要把?/etc/hosts?文件中相應的地址改為本機實際?IP?。

    ?

    5.?運行?jstatd?守護程序

    ?

    ? 由于?jstatd?需要保持一直運行,所以建議使用?screen?命令執行?jstatd?程序,命令如下:

    Java代碼??
  • screen?jstatd?-J-Djava.security.policy=jstatd.all.policy??
  • ?

    如果需要RMI?日志功能的話,還可以在啟動參數中加入?-J-Djava.rmi.server.logCalls=true?。

    Java代碼??
  • screen?jstatd?-J-Djava.security.policy=jstatd.all.policy?-J-Djava.rmi.server.logCalls=true??
  • ?

    ?

    ?

    jstatd開始運行后,使用?CTRL+A+D?斷開?screen?界面,回到?shell?界面。如果想切換回?jstatd?運行界面的話,使用?screen?-r?-d?命令即可。

    ?

    6.?通過Java?VisualVM?連接到服務器監控?Java?程序

    ?? 在Java?VisualVM?程序窗口左側?“?遠程?”?項目右鍵選擇?“?添加遠程主機?”?,在彈出的對話框中輸入遠程主機的?IP?地址,確認提交后即可看到相應的遠程主機和在上面運行的?Java?程序,連接成功后應該會顯示?Jstatd?及其?PID?。

    ?

    ?

    ?

    ?

    ? 通過以上方式連接服務器發現一個問題,不能監控CPU?。提示我們建立?JMX?,建立?JMX?提示要求端口號。(?JMX:Java?Management?Extensions?,即?Java?管理擴展?,?是一個為應用程序、設備、系統等植入管理功能的框架。?JMX?可以跨越一系列異構操作系統平臺、系統體系結構和?網絡傳輸協議,靈活的開發無縫集成的系統、網絡和服務管理應用?。而?Visual?VM是通過?JMX?來和遠程?Java?應用聯系的?)。

    ?

    ?

    ?

    7.?T?omcat中配置

    ? 下面我們為54?服務器的?tomcat?配置?jvm?啟動參數。??tomcat?的?catalina.sh?中添加如下參數:

    Java代碼??
  • JAVA_OPTS='-Dcom.sun.management.jmxremote.port=8999?-Dcom.sun.management.jmxremote.ssl=false?-Dcom.sun.management.jmxremote.authenticate=false'???
  • ?

    或:

    Java代碼??
  • JAVA_OPTS=’-Dcom.sun.management.jmxremote.port=1099?-Dcom.sun.management.jmxremote.ssl=false?-Dcom.sun.management.jmxremote.authenticate=false?-Djava.rmi.server.hostname=192.168.1.54??其他配置’??
  • ?

    ??

    ?

    注:1.?-Dcom.sun.management.jmxremote.port?:這個是配置遠程?connection?的端口號的,要確定這個端口沒有被占用

    2.?-Dcom.sun.management.jmxremote.ssl=false?指定了?JMX?是否啟用?ssl

    3.?-Dcom.sun.management.jmxremote.authenticate=false???指定了JMX?是否啟用鑒權(需要用戶名,密碼鑒權)

    ?? 2,3兩個是固定配置,是?JMX?的遠程服務權限的

    4.?-Djava.rmi.server.hostname?:這個是配置?server??IP?

    ?

    ?

    ?

    連接成功,現在我們可以遠程監控服務器性能,可以配合?jmeter?進行了一個長時間的加壓,在加壓過程中重點關注了系統資源的使用情況。

    ?

    三.參考博客

    http://mahuihuang.blog.163.com/blog/static/745292520113202321494/

    ?

    http://wolfdream.iteye.com/blog/1032712

    ?

    http://sjsky.iteye.com/blog/705323

    總結

    以上是生活随笔為你收集整理的java内存溢出分析工具:jmap使用实战的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    99国内精品久久久久久久 | 亚洲一区动漫 | 能在线观看的日韩av | 狠狠网亚洲精品 | 91天天操 | 成人xxxx | 狠狠狠色丁香婷婷综合久久88 | 99久久99久久精品免费 | 在线日韩| 亚洲精品美女在线 | 国产99久久久精品 | 色网av | 久久99精品视频 | 国产99在线 | 亚洲欧美日韩一二三区 | 天天操 夜夜操 | 在线免费观看欧美日韩 | 精品久久久国产 | 国产91精品一区二区麻豆网站 | 日韩精品久久久久久久电影竹菊 | 日韩免费专区 | 99电影| 国产在线精品一区二区三区 | 国产一级电影 | 国产一区免费看 | 黄色小说免费在线观看 | 玖玖在线看 | 亚洲美女免费精品视频在线观看 | 欧美精品久久久久久久久久久 | 亚洲欧洲国产精品 | 久久中文欧美 | 久久综合给合久久狠狠色 | 麻豆国产精品va在线观看不卡 | a视频在线播放 | 亚洲成人av影片 | a视频在线观看免费 | 五月天婷婷在线观看视频 | 色欧美日韩 | 亚洲欧美日本一区二区三区 | 一本之道乱码区 | 四虎成人精品永久免费av九九 | 超碰国产人人 | 成人av在线直播 | 欧美a级成人淫片免费看 | 日韩精品不卡在线观看 | 人人干人人草 | 毛片在线网 | av线上免费观看 | 欧美午夜理伦三级在线观看 | 日韩精品亚洲专区在线观看 | 麻豆传媒视频在线播放 | 男女视频91 | 婷婷日韩 | 久久精品123 | 国产精品久久久久9999 | 色综合天天狠天天透天天伊人 | 欧美一区二区在线免费观看 | 国产91精品一区二区麻豆网站 | 免费美女av| 亚洲精品国产自产拍在线观看 | 亚洲 综合 国产 精品 | 毛片1000部免费看 | 免费在线观看污网站 | 中文字幕在线观看1 | 色婷婷免费 | 四虎影视精品成人 | 国产精品丝袜久久久久久久不卡 | 欧美激情视频一区二区三区免费 | 激情狠狠干 | 狠狠色丁香婷婷综合欧美 | 国产剧在线观看片 | 九九欧美| 国产精品一区二区av麻豆 | 日韩在线第一 | 在线小视频国产 | 亚洲欧美在线观看视频 | 一二三区av | 五月婷婷另类国产 | 成年人免费在线观看网站 | 人人舔人人舔 | 99国产精品久久久久老师 | 91九色成人蝌蚪首页 | 韩国av免费看 | 91 中文字幕| 国产一级电影 | 色婷婷狠狠五月综合天色拍 | 亚洲电影成人 | 精品高清美女精品国产区 | 97视频在线看| 黄色av影视 | 亚洲精品视频中文字幕 | 国产一区欧美日韩 | 久久男人免费视频 | 久草新在线 | 91视频在线 | 中文字幕在线色 | 欧美精品久久久久久久久久丰满 | 久久综合狠狠 | 狠狠色狠狠色综合系列 | 91自拍视频在线 | 国产一级精品视频 | 国产在线小视频 | 伊人婷婷 | 亚洲视频网站在线观看 | 粉嫩av一区二区三区四区 | sesese图片| 欧美性黄网官网 | 人人澡人人爽欧一区 | av在线永久免费观看 | 亚洲综合欧美日韩狠狠色 | 麻豆小视频在线观看 | 天天操天天色天天 | 日日夜夜免费精品 | 天天色天天爱天天射综合 | 日韩精品不卡在线观看 | 91精品视频导航 | 成人av网站在线观看 | 日本特黄特色aaa大片免费 | 亚洲高清av| 91在线视频免费播放 | 精品国产成人在线影院 | 日本最新中文字幕 | 精品久久99 | 日韩| 天天色天天干天天 | 国产一区二区不卡视频 | 亚洲综合色播 | 日韩高清国产精品 | 久久精品亚洲精品国产欧美 | 九色在线| 日日干天天插 | 九九久久久久99精品 | 欧美性生活免费 | av福利超碰网站 | 久草视频在线免费播放 | 99精品视频在线播放观看 | 欧美va天堂va视频va在线 | 天天天天天天天操 | 97色资源 | 亚洲成人精品在线观看 | 久久草网站 | 国产69熟| 国产又粗又猛又爽又黄的视频先 | 久久美女精品 | 青青草久草在线 | 最新91在线视频 | 色婷婷综合久久久 | 日韩 在线| 国产成人免费在线 | 国产精品久久久久永久免费 | 午夜精品一区二区三区在线视频 | 黄色av网站在线观看免费 | 国产专区免费 | 欧美日韩免费在线视频 | 久久久久久久久久伊人 | 中文字幕 婷婷 | 亚洲综合视频在线播放 | 人人澡人人干 | av中文在线影视 | 欧洲激情综合 | 国产午夜精品一区二区三区嫩草 | 天无日天天操天天干 | 成人在线视频一区 | 久久新视频 | 一区二区三区电影大全 | 亚洲激情网站免费观看 | 91爱爱视频 | 国产偷v国产偷∨精品视频 在线草 | 精品国产欧美一区二区三区不卡 | 9ⅰ精品久久久久久久久中文字幕 | 色婷婷电影 | 欧美日韩高清国产 | 亚洲在线高清 | 91高清不卡 | 国产高清网站 | 天天操天天干天天操天天干 | 久久99操 | 国产成人精品免高潮在线观看 | 欧美日韩精品在线播放 | 欧美色888 | 在线日韩视频 | 97超碰人| 国产精品区在线观看 | 天堂网一区二区 | 国产一级免费在线 | 国产精品11| 亚洲精品久久久久久久不卡四虎 | 最新日韩视频在线观看 | 国产高清av| 亚洲精品欧美视频 | 91精选在线观看 | 欧美日本啪啪无遮挡网站 | 成人精品电影 | 在线视频app | 国产精品视频观看 | av免费在线网站 | 国产淫片免费看 | 久久无码av一区二区三区电影网 | 国产精品电影在线 | 久久久久久久久久久精 | 韩日在线一区 | 免费的黄色的网站 | 毛片网站免费 | 亚洲欧美视频一区二区三区 | 超级碰碰碰碰 | 香蕉成人在线视频 | 丁香视频五月 | 1000部18岁以下禁看视频 | 国产一区二区成人 | 久久国产精品免费一区二区三区 | 在线播放精品一区二区三区 | 911国产精品 | 国产精品99久久久久久久久 | 国产精品色 | 99久久精品久久亚洲精品 | 在线一区电影 | 国产精品久久久久久五月尺 | 婷婷丁香国产 | 日韩激情第一页 | 91麻豆高清视频 | www.狠狠插.com | 久久无码av一区二区三区电影网 | 人人爽人人爽av | 日韩精品久久一区二区三区 | 亚洲色图27p | 丁香婷婷色综合亚洲电影 | 久久看免费视频 | 69视频在线| 国产高清在线免费 | 888av| 成人在线免费观看视视频 | 久久理伦片 | 久久久久久久18 | 日韩欧美综合视频 | 在线免费av电影 | 国产精品色在线 | 国产精品igao视频网网址 | 久久精视频 | 免费看成人a | av官网在线 | 一区二区三区在线影院 | 国产精品女人久久久 | 日韩成人邪恶影片 | 久久精品免费播放 | 网站在线观看日韩 | 免费网站观看www在线观看 | 免费在线电影网址大全 | 午夜av在线 | 黄在线免费看 | 97超碰人人爱 | 国产四虎影院 | 日韩欧美在线综合网 | 免费av黄色 | a成人在线 | 狠狠色丁香婷婷综合最新地址 | 国产又粗又硬又长又爽的视频 | 亚洲精品乱码久久久久久蜜桃动漫 | 亚洲精品免费在线观看视频 | 狠狠狠狠干 | 久久精品一二区 | 欧美永久视频 | 日韩中文在线电影 | 99热9| 右手影院亚洲欧美 | 在线欧美中文字幕 | 日日草av| 一区二区丝袜 | 国产一二三区av | av天天干| 97超碰人人网 | 久久久精品二区 | 亚洲精品在线网站 | 九九热中文字幕 | 久草综合在线观看 | 久久久免费播放 | 亚洲精品大片www | 国产这里只有精品 | 1000部国产精品成人观看 | 日日摸日日碰 | 久久精品国产精品亚洲精品 | 五月天丁香视频 | 国产日本在线播放 | 精品国产理论片 | 正在播放国产精品 | 玖玖视频国产 | 手机在线视频福利 | 在线观看黄色 | 黄色软件网站在线观看 | 国产999在线 | 久久手机视频 | 成人免费网站视频 | 国产日韩精品视频 | 亚洲乱码在线观看 | 九九久久久 | 欧美成人中文字幕 | 国产亚洲成人网 | 亚洲成 人精品 | 激情五月六月婷婷 | 久久99亚洲热视 | 超碰人人舔 | 色88久久| 日韩在线 一区二区 | 岛国大片免费视频 | 国产韩国精品一区二区三区 | 不卡av免费在线观看 | www.婷婷com| aaa亚洲精品一二三区 | 日韩高清激情 | 久久久国产99久久国产一 | 黄色aaa毛片 | 99国产成+人+综合+亚洲 欧美 | 在线观看www. | 日本黄色免费网站 | 超碰97网站 | 国产又粗又猛又爽又黄的视频免费 | 午夜精品福利在线 | 国产精品视频专区 | 欧美日韩一区二区三区在线免费观看 | 超碰人人草 | 国产精品免费久久久久影院仙踪林 | 国产精品国产三级国产不产一地 | av中文字幕网站 | 免费又黄又爽的视频 | 国产精品久久三 | 视频三区在线 | 精品国产精品国产偷麻豆 | 96亚洲精品久久久蜜桃 | 久久国语露脸国产精品电影 | 9久久精品| 天天天干夜夜夜操 | 国产伦精品一区二区三区在线 | 国产欧美精品一区二区三区四区 | 国产黄色一级大片 | 最新一区二区三区 | 高清av免费看 | 视频一区二区三区视频 | 亚洲韩国一区二区三区 | 中文视频在线播放 | 婷婷开心久久网 | 久久一二区 | 久久人人爽爽人人爽人人片av | 欧美大荫蒂xxx | 97韩国电影 | 日韩不卡高清视频 | 亚洲精品高清在线 | 久久久久国产精品一区 | 久久99精品久久只有精品 | 欧美精品九九99久久 | 欧美精品在线观看免费 | 天天色综合久久 | 亚洲视频www | 国产黄色片一级 | 日韩美在线 | 日本久久久久久久久久 | av解说在线 | 99热播精品| 男女视频91| 日韩黄色在线 | 四虎精品成人免费网站 | 伊人成人久久 | www.天天操| 永久精品视频 | adn—256中文在线观看 | 激情婷婷欧美 | 婷婷久操 | 亚洲精品视频 | 蜜臀av性久久久久av蜜臀三区 | 亚洲性少妇性猛交wwww乱大交 | 日本中文字幕视频 | 亚洲精品视频偷拍 | 天天干天天摸 | 国产原厂视频在线观看 | 黄色h在线观看 | 人人爽人人爽人人爽人人爽 | 精品一区久久 | 特级西西444www高清大视频 | www.99热精品| 热热热热热色 | 免费看一级一片 | 天天插伊人 | 国产成年免费视频 | 日韩婷婷| 波多野结衣在线播放一区 | 国产成人区 | 香蕉视频4aa | 久久专区 | 日韩欧美高清一区二区 | 粉嫩av一区二区三区四区 | 欧美日韩在线视频一区 | 国产精品不卡在线播放 | 香蕉视频91| 色天天综合久久久久综合片 | 中文av在线免费观看 | 欧美 日韩 视频 | 国产黄免费在线观看 | 亚洲精品视频在线免费 | 99精品在线视频播放 | 中文字幕在线观看日本 | 日韩精品久久一区二区三区 | 九九免费视频 | 久久在现| 亚洲 欧美 国产 va在线影院 | 久久久久看片 | 日韩中出在线 | 国内精品99 | 国产精品综合av一区二区国产馆 | 99久久精品免费看国产四区 | 91在线视频免费91 | 亚洲国产成人久久 | 天天射天天添 | 一级黄色大片 | 欧美日韩成人 | 日本激情视频中文字幕 | 国产一级精品绿帽视频 | 国产精品久久久久久久久久三级 | 国产亚洲精品久久久久久久久久 | 日韩精选在线 | 99热最新在线 | 精品国产伦一区二区三区免费 | 亚洲一级电影视频 | 91色影院 | 国产一级做a | 精品久久精品久久 | 国产精品永久免费在线 | 黄色av播放| 久久久久夜色 | 国产精品都在这里 | 国产在线精品一区二区 | 天天操夜夜叫 | 色婷婷亚洲精品 | 成年人免费在线观看网站 | 欧美激情精品久久久久 | 国产色资源 | 久久久久久久久艹 | 国内精品久久久 | 久草在线免费看视频 | 日日摸日日碰 | 成人免费观看网站 | 精品视频在线免费观看 | 欧美成人999 | 国产午夜影院 | 久久99久久99免费视频 | 久久久午夜精品理论片中文字幕 | 欧美日韩国语 | 欧美精品v国产精品 | 91理论电影| 天堂麻豆| 五月天丁香视频 | 主播av在线| 欧美成人中文字幕 | 欧美日韩一区二区在线观看 | 国产999 | 日韩精品一区二区三区在线视频 | 在线免费中文字幕 | 成人免费电影 | 天天射天天爱天天干 | 中文字幕a在线 | 亚洲极色 | 国产视频久 | 视频国产在线 | 伊人官网| 亚洲草视频 | 天天插狠狠干 | 亚洲综合情 | 国产亚洲精品综合一区91 | 色综合小说 | 奇米影视777四色米奇影院 | 天天爽天天搞 | 国产高清在线视频 | 色综合天天视频在线观看 | 国产小视频你懂的 | 俺要去色综合狠狠 | 久久国产视屏 | www.99久久.com| 99视频这里有精品 | 欧美日韩另类在线 | 久久艹国产视频 | av免费在线观 | 欧美色图一区 | 日本在线观看一区二区 | 久久免费视频8 | 国产伦精品一区二区三区四区视频 | 91欧美精品 | 麻豆91在线播放 | 免费在线激情电影 | 热久久视久久精品18亚洲精品 | 欧美资源 | 在线观看免费av网站 | 国产精品久久久久久久久久99 | 欧美成人va| 日韩免费 | 超碰九九 | 亚洲欧美激情精品一区二区 | 亚洲色图美腿丝袜 | 亚洲人人精品 | 日韩在线视频网 | 不卡的av电影在线观看 | 91豆花在线观看 | 日韩网站在线看片你懂的 | 国产一级三级 | 欧美成a人片在线观看久 | 国产精品嫩草69影院 | 日批视频国产 | 成年人在线免费看片 | 麻豆国产视频 | 久久久久免费网 | 欧美日韩在线视频一区 | 97操操操 | 精品国产乱码久久 | 在线一二三四区 | 婷婷久久亚洲 | 欧美精品一区二区在线观看 | 精品中文字幕视频 | 亚洲精品自拍 | 992tv在线观看网站 | 安徽妇搡bbbb搡bbbb | 国产一级免费在线 | 色资源在线观看 | 精品99免费视频 | 日本中文在线 | 9999在线视频 | 成人黄色电影在线播放 | 免费视频一二三区 | 久久午夜免费视频 | zzijzzij亚洲成熟少妇 | 欧美日韩精品免费观看 | 精品久久久成人 | .国产精品成人自产拍在线观看6 | 99视频一区二区 | 在线日本看片免费人成视久网 | 成人黄色电影在线观看 | 欧美 日韩 性 | 美女精品在线 | 麻豆久久久久 | 亚洲免费av在线播放 | 久久国产电影院 | 免费看国产曰批40分钟 | 国产九色视频在线观看 | 国产很黄很色的视频 | 伊人亚洲综合网 | 国产系列 在线观看 | 五月激情电影 | 国内成人av | 中文字幕在线乱 | 日韩电影中文字幕在线观看 | 日本丶国产丶欧美色综合 | 久久综合九色综合97_ 久久久 | 国产成人在线免费观看 | 中文字幕在线观看网站 | 99在线热播精品免费 | 欧美精品久久久久久 | 亚洲高清在线精品 | 在线观看理论 | 中文字幕亚洲精品在线观看 | 日韩四虎| 五月婷在线观看 | 免费在线观看午夜视频 | 日韩免费视频一区二区 | 日日干天天爽 | 国产破处在线播放 | 最近高清中文在线字幕在线观看 | 中文字幕a∨在线乱码免费看 | www.夜夜干.com | 久久久久欧美精品 | 欧美成年性 | 色婷婷av国产精品 | 成人在线视频免费观看 | 日韩免费一级a毛片在线播放一级 | 超碰在线最新地址 | 色吊丝在线永久观看最新版本 | 1024手机在线看| 国产精品毛片一区二区三区 | 免费久久99精品国产婷婷六月 | 最近中文字幕在线中文高清版 | 日韩在线网址 | 91色九色 | 国产精品 美女 | 国产在线久草 | 久久视频一区二区 | 狠狠色丁香久久婷婷综合五月 | 亚洲综合黄色 | 9999精品免费视频 | 91亚洲欧美激情 | 九九久久久久久久久激情 | 爱色av.com| 国产精品麻豆欧美日韩ww | 91精品无人成人www | 九九色在线观看 | 99这里精品 | av千婊在线免费观看 | 九九精品毛片 | 丝袜制服综合网 | 亚洲美女精品 | 免费成人黄色av | www·22com天天操| 久久视频在线免费观看 | 99精品偷拍视频一区二区三区 | 亚洲污视频 | 亚洲h视频在线 | 精品亚洲网 | 中文在线√天堂 | 黄色的网站在线 | 在线观看免费av网站 | 在线观看日本韩国电影 | 久久久久国产免费免费 | 中文字幕在线免费观看视频 | 97中文字幕| av中文字幕在线观看网站 | 黄在线免费观看 | 天天·日日日干 | 中文字幕在线字幕中文 | 欧美三级在线播放 | 五月婷婷综 | 黄色1级毛片 | 国产成人av免费在线观看 | 在线观看视频福利 | 亚洲欧美日韩国产一区二区 | 国产又黄又猛又粗 | 久久亚洲专区 | 久久国产精品一区二区 | 天天色天天色 | 国产精品久久久久久久久岛 | 热久久免费视频精品 | 一区二区精品在线视频 | 日韩大陆欧美高清视频区 | 日韩精品一区二区三区视频播放 | 日韩电影久久久 | 视频一区二区在线观看 | 91看片淫黄大片在线播放 | 国产精品18久久久久vr手机版特色 | 欧美日韩高清国产 | 伊人春色电影网 | 久草视频在线资源 | 国产在线精品福利 | 中文字幕黄色av | 日韩精品一区二区三区高清免费 | 在线观看 国产 | 亚洲三级黄 | 亚洲精品视频免费在线观看 | 最新极品jizzhd欧美 | 婷婷久草 | 久久视频免费在线 | www久草 | 成人羞羞视频在线观看免费 | 久久公开视频 | 香蕉视频久久 | 四虎国产精品永久在线国在线 | 日韩久久久久久久久久久久 | 亚洲日韩精品欧美一区二区 | 日韩欧美高清一区二区 | 在线视频1卡二卡三卡 | 久久久久久久久久久久久影院 | 亚洲午夜av电影 | 成人黄色大片 | 国产一区在线视频观看 | 综合久久久久 | 久草热久草视频 | 午夜国产在线 | 日韩欧美成| 99精品视频一区 | 国产不卡在线观看 | 国产精品一区二区三区免费视频 | 久久丁香| 99视频在线观看免费 | 91麻豆传媒| 久久国产精品99久久久久久进口 | 丁香六月综合网 | 一本一本久久a久久精品牛牛影视 | 99精品视频在线免费观看 | 中文字幕在线观看不卡 | 精品一区 在线 | 久要激情网| 久久视频在线观看免费 | 香蕉视频最新网址 | 国产午夜免费视频 | 特级xxxxx欧美 | 蜜臀av一区二区 | 久久区二区 | 成人av电影免费在线播放 | 美女视频a美女大全免费下载蜜臀 | 一区二区三区播放 | 992tv又爽又黄的免费视频 | 人人爽久久涩噜噜噜网站 | 午夜久久| 日韩精品中文字幕在线不卡尤物 | 久久久久国 | 国产精成人品免费观看 | 色爽网站| 日韩中文字幕国产 | 国产视频一二区 | 久久精品99久久久久久 | 亚洲精品视频在线观看网站 | 天天干夜夜擦 | 91系列在线 | 久久国产精品成人免费浪潮 | 91污在线观看 | 91精品国产欧美一区二区成人 | 久草精品视频在线看网站免费 | 国产夫妻av在线 | 香蕉色综合 | 成人午夜黄色影院 | 在线观看免费高清视频大全追剧 | 一区中文字幕在线观看 | 国产在线播放一区二区三区 | 天干啦夜天干天干在线线 | 懂色av一区二区在线播放 | 亚洲午夜精品久久久久久久久久久久 | 天天天天综合 | 欧美精品免费在线观看 | 久久99国产精品久久99 | 国产日韩一区在线 | 99精品毛片 | 亚洲精品在线资源 | 黄色免费国产 | 五月天婷亚洲天综合网鲁鲁鲁 | 久久午夜鲁丝片 | 国产高清绿奴videos | 在线欧美小视频 | 亚洲免费精品一区二区 | 操操日| 最近日韩免费视频 | 欧美日韩1区 | 九九久久精品 | 欧美视频18| 亚洲第一区在线播放 | 五月亚洲婷婷 | 超碰97人人射妻 | 国产精品99久久久 | 色吊丝在线永久观看最新版本 | 九九九视频在线 | 亚洲精品综合久久 | 激情五月综合 | 国产精品久久久久aaaa九色 | 91精品视频免费观看 | 日韩aⅴ视频 | 中文字幕一区二区三区视频 | 91福利社区在线观看 | 一区二区中文字幕在线 | 国产精品99久久99久久久二8 | 国产成人免费在线观看 | 久久精品理论 | 蜜臀久久99精品久久久无需会员 | 在线观看视频91 | 国产精品 中文在线 | 久草青青在线观看 | 欧美亚洲成人xxx | 最近中文字幕完整视频高清1 | 婷婷丁香国产 | 亚洲va欧美va人人爽春色影视 | 在线成人一区 | 午夜美女wwww| 人人舔人人干 | 日日夜夜国产 | 91av在线精品| 一区二区三区免费在线播放 | 美女久久久久久久久久久 | 亚洲国产成人精品在线观看 | 狠狠久久伊人 | 欧美日韩国产亚洲乱码字幕 | 久久草草热国产精品直播 | 99久久婷婷国产综合亚洲 | 国产精品igao视频网入口 | 片黄色毛片黄色毛片 | 国产精品入口麻豆 | 4438全国亚洲精品在线观看视频 | 国产成人一区二区三区电影 | 国产成人精品免高潮在线观看 | 亚洲伊人婷婷 | 夜夜操天天摸 | 在线日韩视频 | 久久看看| 久久精品国产美女 | 射射色 | 美女国内精品自产拍在线播放 | 国产一区二区久久精品 | 久久国产精品99久久久久久进口 | 午夜久久网 | 97超碰精品| 欧美在线18 | 精品在线观看一区二区 | 97精品超碰一区二区三区 | 欧美日韩国产精品一区二区亚洲 | 欧美国产亚洲精品久久久8v | 欧美疯狂性受xxxxx另类 | 999一区二区三区 | 高清av中文字幕 | 国产精品久久久久久久久久久不卡 | 成人影视免费看 | 成人91视频| 亚洲视频一 | 久久久久久久久久久高潮一区二区 | 国产一级a毛片视频爆浆 | 亚洲欧美日韩精品一区二区 | 欧美一区二区三区免费观看 | 97超在线 | 久久久国产精品一区二区中文 | 91久久久久久久一区二区 | 69av在线播放 | 免费看日韩片 | 日韩高清一区在线 | 日韩在线免费小视频 | 久久资源总站 | 精品免费观看视频 | 韩国精品在线观看 | 成人h视频在线播放 | 久久久免费高清视频 | 免费69视频 | 色婷婷免费视频 | 国产不卡在线观看视频 | 欧美激情另类 | 欧美人交a欧美精品 | 国产亚洲免费的视频看 | 黄污在线看 | 香蕉91视频 | 国产91精品一区二区麻豆网站 | 婷婷六月综合亚洲 | 91精品夜夜 | 久久久精品免费看 | 久久久久久黄 | 中文字幕九九 | 欧美日韩视频在线观看一区二区 | 国产一区成人在线 | 91九色在线观看视频 | 国产成人精品a | 在线观看小视频 | 国产又粗又猛又黄又爽视频 | 欧美激情va永久在线播放 | 日日干av| 丁香婷婷激情啪啪 | 国产日韩欧美自拍 | 一区二区三区高清 | 精品一区电影 | 国产精品成人免费 | 国产一级二级av | 国产乱码精品一区二区三区介绍 | 91九色在线播放 | 波多野结衣在线中文字幕 | 一本一本久久a久久精品综合 | 国产精品欧美久久 | 久热久草在线 | 亚洲涩涩网站 | 天天草综合网 | 日本精品视频免费 | 中国一级片免费看 | 青青河边草观看完整版高清 | 国产麻豆精品久久一二三 | 色资源中文字幕 | 毛片www| 国产一级性生活视频 | 国产成人不卡 | 成人午夜黄色 | 国偷自产中文字幕亚洲手机在线 | 五月天综合网站 | 久久8| 免费国产在线精品 | 一二三区高清 | 超碰个人在线 | 亚洲好视频 | 国产女做a爱免费视频 | 伊人狠狠色 | 久久999精品 | 91大神精品视频 | 久草电影在线观看 | 成人av中文字幕在线观看 | 伊人影院在线观看 | 国产一级免费片 | 999国产精品视频 | 亚洲每日更新 | 一 级 黄 色 片免费看的 | 在线免费看片 | 成人免费在线电影 | 国产精品成人一区 | 免费a v网站 | 久久久精品国产一区二区电影四季 | 91亚洲精品在线观看 | 婷婷丁香av | 久久久国产影院 | 中文字幕中文中文字幕 | 九九热只有精品 | 视频在线观看入口黄最新永久免费国产 | 久久精品这里热有精品 | 99久久精品国产亚洲 | 久9在线| av手机在线播放 | 韩日精品中文字幕 | 精品亚洲va在线va天堂资源站 | 在线a亚洲视频播放在线观看 | 麻豆传媒视频在线免费观看 | 亚洲日本va午夜在线影院 | 国产精品专区在线观看 | 人人插人人舔 | 99国产一区二区三精品乱码 | 精品国偷自产国产一区 | 日韩精品一区不卡 | 国产精品一区二区免费 | 日韩经典一区二区三区 | 久久久久国产视频 | 天天干天天干天天干天天干天天干天天干 | av观看久久久 | 天天射综合网视频 | 午夜日b视频 | 国产69精品久久久久久久久久 | 欧美一级激情 | 欧美另类重口 | 亚洲一级特黄 | 国产福利91精品 | 国产黄网站在线观看 | 国产在线观看污片 | 日韩免费视频一区二区 | 久久国产精品电影 | 91麻豆精品国产自产在线游戏 | 欧美激情第28页 | 91精品中文字幕 | 99精品久久99久久久久 | 五月激情天 | 亚洲狠狠丁香婷婷综合久久久 | 亚洲人片在线观看 | 日韩在线视频播放 | 99精品视频免费全部在线 | 久久久久在线观看 | 三级av在线| 亚洲一区二区三区miaa149 | 日本韩国精品在线 | 久久久国产影院 | 亚洲国产精品va在线看 | 麻豆av电影 | 免费人成在线观看网站 | 午夜精品久久久久久久99婷婷 | 久久夜色电影 | 久久精品男人的天堂 | 欧美一级视频免费看 | 最新不卡av | 日韩精品一卡 | 狠狠干在线 | 精品久久一级片 | 日韩免费三级 | 久久精品日产第一区二区三区乱码 | 久久五月婷婷综合 | 成人av影院在线观看 | 伊人欧美 | 97在线精品国自产拍中文 | 亚洲精品91天天久久人人 | 欧美日韩视频观看 | 亚洲日韩中文字幕 | 黄色小说网站在线 | 欧美色图另类 | 亚洲网站在线 | 四虎国产免费 | 97热视频| 精品在线播放视频 | 在线观看日韩免费视频 | 亚洲一区二区三区四区精品 | 免费网站黄 | 日韩精品欧美专区 | 四虎影视8848dvd | 日韩欧美一级二级 | 国产日产精品一区二区三区四区的观看方式 | 国产一区二区三区免费视频 | av直接看 | 婷婷在线综合 | 中文字幕在线色 | 国产69精品久久99的直播节目 | 五月天天在线 | 日本韩国精品一区二区在线观看 | 亚洲在线免费视频 | 97精品视频在线播放 | 久久综合久久久 | 全黄网站| 91成人免费电影 | av福利在线免费观看 | 久久国产精品色婷婷 | 99热这里只有精品在线观看 | 天天久久综合 | 99麻豆久久久国产精品免费 | 精品在线观看国产 | 亚洲视频电影在线 | 国产精品99久久免费观看 | 在线观看黄a | 99热这里有 | 国产亚洲精品久久久久久电影 | 免费精品久久久 | 欧女人精69xxxxxx | 国产主播大尺度精品福利免费 | 国产福利91精品一区二区三区 | 国产视频一区在线播放 | 国产一区二区在线免费视频 | 欧美国产一区在线 | 日日夜夜草 | 人人爽人人搞 | 99tvdz@gmail.com | 久久综合综合久久综合 | 亚洲韩国一区二区三区 | 欧亚日韩精品一区二区在线 | 日韩精品一区二 | 国产亚洲精品综合一区91 | 色91av | 伊人影院在线观看 | 精品不卡视频 |