亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入理解java虛擬機的故障處理工具

 更新時間:2016年11月24日 08:43:40   投稿:daisy  
大家都知道在給系統(tǒng)定位問題的時候,知識、經驗是關鍵基礎,數(shù)據(jù)是依據(jù),工具是運用知識處理數(shù)據(jù)的手段。Java開發(fā)人員可以在jdk安裝的bin目錄下找到除了java,javac以外的其他命令。這些命令主要是一些用于監(jiān)視虛擬機和故障處理的工具,下面來看看詳細的介紹。

前言

本文主要給大家介紹的是java虛擬機的故障處理工具,文中提到這些工具包括:

名稱 主要作用
jps JVM process Status Tool, 顯示指定系統(tǒng)內所有的HotSpot虛擬機進程。通常是本地主機
jstat JVM Statistics Monitoring Tool,用于收集HotSpot虛擬機各方面的運行數(shù)據(jù)
jinfo Configuration Info for java, 顯示虛擬機配置信息
jmap Memory Map for Java, 生成虛擬機的內存存儲快照(heapdump文件)
jhat JVM Heap Dump Browser, 用于分析heapdump文件,它建立一個HTTP/HTML服務器,讓用戶可以在瀏覽器上查看分析結果
jstack Stack Trace for Java, 顯示虛擬機的線程快照

jps:虛擬機進程狀況工具

jps的功能和unix/liunx中的ps命令是類似。只不過它是打印出正在運行的虛擬機進程,并顯示虛擬機執(zhí)行主類的名稱以及這些進程的本地虛擬機唯一ID(Local Virtual Machine Identifier, LVMID,通常是系統(tǒng)進程ID)。

jps命令格式:

jps [options] [hostId]

jps可以通過RMI協(xié)議查詢開啟了RMI服務的遠程虛擬機進程狀態(tài),hostId為RMI注冊表中注冊的主機名稱。

jps其他常用選項:

     -q 只輸出LVMID, 省略主類的名稱;

     -m 輸出虛擬機進程啟動時候傳遞給主類main()函數(shù)的參數(shù);

     -l 輸出主類的全稱,如果進程執(zhí)行的是jar包,輸出jar路徑;

     -v 輸出虛擬機進程啟動時候JVM參數(shù)。

jps命令樣例:

[root@localhost ~]# jps -l
3914 org.zhangyoubao.payservice.App
12180 sun.tools.jps.Jps
6913 org.zhangyoubao.userprofiler.App

jstat:虛擬機統(tǒng)計信息監(jiān)視工具

jstat是用于監(jiān)視虛擬機各種運行狀態(tài)信息的工具。它可以顯示本地或遠程虛擬機進程中類load,內存gc.jit等運行參數(shù)。

jstat命令格式:

jstat [option vmid [interval [s|ms] [count]]]

interval和count代表查詢間隔和次數(shù)。如果省略這兩個參數(shù),說明只查詢一次。

jstat其他常用選項:

     -class            監(jiān)視類load/unload數(shù)量、總空間已經裝載時間;

     -compiler         輸出JIT編譯器編譯過的方法、耗時等信息;

     -printcompilation 輸出已經被JIT編譯的方法;

     -gc               監(jiān)視java堆狀況;

     -gccapacity       監(jiān)視內容與-gc基本相同,但輸出關注java各個區(qū)域的最大/最小空間;

     -gcutil           監(jiān)視內容與-gc基本相同,但輸出關注已使用空間占用百分百比;

     -gccause          與-gcutil功能一樣,額外輸出導致上一次GC產生原因;

     -gcnew            監(jiān)視新生代GC狀況;

     -gcnewcapacity    監(jiān)視新生代,輸出同-gccapacity;

     -gcold            監(jiān)視老年代GC狀況;

     -gcoldcapacity    監(jiān)視老年代,輸出同-gccapacity;

     -gcpermcapactiy   監(jiān)視永久代(代碼區(qū)),輸出同-gccapacity;

jstat命令樣例:

[root@localhost ~]# jstat -gc 6913
 S0C S1C S0U S1U  EC  EU  OC   OU  PC  PU YGC  YGCT FGC FGCT  GCT 
34048.0 34048.0 0.0 3217.8 272640.0 171092.7 683264.0 168910.7 46872.0 28031.2 37857 380.644 69  3.447 384.091

jinfo:Java配置信息工具

jinfo的作用是實時的查看和調整虛擬機各項參數(shù)。

jinfo命令格式:

jinfo [option] pid

jinfo其他常用選項:

     -flag name=value 修改參數(shù)

     -flag name 參數(shù)參數(shù)

jinfo命令樣例:

[root@localhost ~]# jinfo 6913
Attaching to process ID 6913, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 24.91-b01
Java System Properties:
...

VM Flags:

-Xms1000m -Xmx1000m -Dconf=/usr/local/user_profiler/conf -Dserver.root=/usr/local/user_profiler -Dcom.sun.management.jmxremote.port=7003 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseConcMarkSweepGC

jmap:java內存映射工具

jmap命令可以用于生產堆存儲快照(dump文件)。它還可以查下finalize隊列(自我拯救隊列)、java堆和代碼區(qū)的詳細信息。

jmap命令格式:

jmap [option] vmid

jmap其他常用選項:

     -dump          生成java堆存儲快照。格式:-dump:[live,]format=b,file=<filename>;

     -finalizerinfo 顯示F-Queue中等待Finalizer現(xiàn)象執(zhí)行finalize方法的對象;

     -heap          顯示java堆詳細信息,如使用哪種回收器、參數(shù)配置、分代狀況等待;

     -histo         顯示堆中對象統(tǒng)計信息,包括類、實例書、合計容量;

     -permstat      以ClassLoader為統(tǒng)計入口顯示永久代內存信息;

     -F             當虛擬機進程堆-dump選項沒有響應時候,可以使用這個選項強制生成dump快照。

jmap命令樣例:

[root@localhost ~]# jmap -histo 6913|head -20

 num  #instances   #bytes class name
----------------------------------------------
 1:  1864966  113459432 [C
 2:  201846  49201192 [B
 3:  1597065  38329560 java.lang.String
 4:  117477  15037056 org.zhangyoubao.thriftdef.UserUsefulInfo
 5:   47104  11072048 [I
 6:  268631  8596192 java.util.HashMap$Entry
 7:   48812  7451760 <constMethodKlass>
 8:  100683  6443712 com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty
 9:   48812  6257856 <methodKlass>
 10:   4230  5271640 <constantPoolKlass>
 11:  159491  5103712 java.util.Hashtable$Entry
 12:  120226  4809040 org.zhangyoubao.common.cache.adv.Node
 13:  127027  4064864 java.util.concurrent.ConcurrentHashMap$HashEntry
 14:  230433  3686928 java.lang.Integer
 15:   3765  3049824 <constantPoolCacheKlass>
 16:   20917  3012048 com.mysql.jdbc.Field
 17:   4230  2943840 <instanceKlassKlass>

其中[C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][]

jhat: 虛擬機堆轉存快照分析工具

jhat 命令用于與jmap搭配使用,用來分析jmap生成的dump文件。jhat內置了一個微型的HTTP/HTML服務器,生成的dump文件的分析結果后,可以在瀏覽器查看。

jhat命令格式:

jmap filename

jhat命令樣例:

[root@localhost ~]# jhat html_intercept_server.dump 
Reading from html_intercept_server.dump...
Dump file created Wed Nov 23 13:05:33 CST 2016
Snapshot read, resolving...
Resolving 203681 objects...
Chasing references, expect 40 dots........................................
Eliminating duplicate references........................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

jstack:java線程堆棧跟蹤工具

jstack用于生成虛擬機當前時刻的線程快照。線程快照就是當前虛擬機每一條線程正在執(zhí)行的方法堆棧計劃,生成線程快照的主要目的是定位線程長時間停頓的原因。在線程停頓的時候,通過jstack來查看沒有響應的線程在后臺做些什么事情,或者等待著什么資源。

jstack命令格式:

jstack [option] vmid

jstack其他選項:

     -F 當正常輸出的請求不被響應的時候,強制輸出線程堆棧;

     -l 除了顯示堆棧外,顯示關于鎖的附加信息;

     -m 如果調用本地方法,可以顯示C/C++的堆棧。

jstack命令樣例:

[root@localhost ~]# jstack 29577|head -20
2016-11-23 12:58:23
Full thread dump OpenJDK Server VM (24.91-b01 mixed mode):

"pool-1-thread-7261" prio=10 tid=0x0893a400 nid=0x6b0d waiting on condition [0x652ad000]
 java.lang.Thread.State: TIMED_WAITING (parking)
  at sun.misc.Unsafe.park(Native Method)
  - parking to wait for <0x75b5b400> (a java.util.concurrent.SynchronousQueue$TransferStack)
  at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
  at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
  at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:359)
  at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:942)
  at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1068)
  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
  at java.lang.Thread.run(Thread.java:745)

"service_hot_lscs-0" daemon prio=10 tid=0x6982dc00 nid=0x6aeb waiting on condition [0x64ce1000]
 java.lang.Thread.State: TIMED_WAITING (sleeping)
  at java.lang.Thread.sleep(Native Method)
  at org.zhangyoubao.video.client.runner.SimpleVideoRunner.doWork(SimpleVideoRunner.java:150)

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

相關文章

  • Java工具類實現(xiàn)高效編寫報表

    Java工具類實現(xiàn)高效編寫報表

    對于報表數(shù)據(jù)大部分情況下使用寫sql的方式為大屏/報表提供數(shù)據(jù)來源,但是對于某些復雜情況下僅僅使用sql無法實現(xiàn),這篇文章主要介紹了Java工具類實現(xiàn)高效編寫報表
    2022-11-11
  • Java并發(fā)編程示例(四):可控的線程中斷

    Java并發(fā)編程示例(四):可控的線程中斷

    這篇文章主要介紹了Java并發(fā)編程示例(四):可控的線程中斷,在本節(jié),我們將使用一個線程查找指定目錄及其子目錄下文件來演示通過使用InterruptedException異常控制線程中斷,需要的朋友可以參考下
    2014-12-12
  • java 線程公平鎖與非公平鎖詳解及實例代碼

    java 線程公平鎖與非公平鎖詳解及實例代碼

    這篇文章主要介紹了java 線程公平鎖與非公平鎖詳解及實例代碼的相關資料,需要的朋友可以參考下
    2017-02-02
  • Java 運算符詳情

    Java 運算符詳情

    這篇文章主要介紹了Java 運算符,Java 中的運算符與 C 語言基本一致。下面文章就圍繞Java 中的運算符的相關資料展開內容,需要的朋友可以參考一下
    2021-11-11
  • 關于Java8的foreach中使用return/break/continue產生的問題

    關于Java8的foreach中使用return/break/continue產生的問題

    這篇文章主要介紹了關于Java8的foreach()中使用return/break/continue產生的問題,在使用foreach()處理集合時不能使用break和continue這兩個方法,也就是說不能按照普通的for循環(huán)遍歷集合時那樣根據(jù)條件來中止遍歷,需要的朋友可以參考下
    2023-10-10
  • java實現(xiàn)的根據(jù)概率隨機中獎測試類

    java實現(xiàn)的根據(jù)概率隨機中獎測試類

    這篇文章主要介紹了java實現(xiàn)的根據(jù)概率隨機中獎測試類,結合完整實例形式詳細分析了java隨機數(shù)實現(xiàn)概率運算相關操作技巧,需要的朋友可以參考下
    2019-09-09
  • Java中對象都是分配在堆上嗎?你錯了!

    Java中對象都是分配在堆上嗎?你錯了!

    這篇文章主要介紹了Java中對象都是分配在堆上嗎?你錯了!文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • SpringBoot中RabbitMQ集群的搭建詳解

    SpringBoot中RabbitMQ集群的搭建詳解

    單個的?RabbitMQ?肯定無法實現(xiàn)高可用,要想高可用,還得上集群。這篇文章主要介紹了SpringBoot中RabbitMQ集群的兩種模式的搭建:普通集群搭建和鏡像集群搭建,需要的朋友可以參考一下
    2021-12-12
  • Mybatis中#{}和${}傳參的區(qū)別及#和$的區(qū)別小結

    Mybatis中#{}和${}傳參的區(qū)別及#和$的區(qū)別小結

    這篇文章主要介紹了Mybatis中#{}和${}傳參的區(qū)別及#和$的區(qū)別小結 的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-07-07
  • JAVA防止重復提交Web表單的方法

    JAVA防止重復提交Web表單的方法

    這篇文章主要介紹了JAVA防止重復提交Web表單的方法,涉及Java針對表單的相關處理技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10

最新評論