日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

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

生活随笔

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

编程问答

java虚拟机出现问题解决,java虚拟机故障处理工具

發(fā)布時(shí)間:2024/3/24 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java虚拟机出现问题解决,java虚拟机故障处理工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

概述

給系統(tǒng)定位問(wèn)題的時(shí)候,知識(shí)、經(jīng)驗(yàn)是關(guān)鍵基礎(chǔ),數(shù)據(jù)是依據(jù),工具是運(yùn)用知識(shí)處理數(shù)據(jù)的手段。

java開(kāi)發(fā)人員可以在jdk安裝的bin目錄下找到除了java,javac以外的其他命令。這些命令主要是一些用于監(jiān)視虛擬機(jī)和故障處理的工具。這些工具包括:

名稱(chēng)

主要作用

jps

JVM process Status Tool, 顯示指定系統(tǒng)內(nèi)所有的HotSpot虛擬機(jī)進(jìn)程。通常是本地主機(jī)

jstat

JVM Statistics Monitoring Tool,用于收集HotSpot虛擬機(jī)各方面的運(yùn)行數(shù)據(jù)

jinfo

Configuration Info for java, 顯示虛擬機(jī)配置信息

jmap

Memory Map for Java, 生成虛擬機(jī)的內(nèi)存存儲(chǔ)快照(heapdump文件)

jhat

JVM Heap Dump Browser, 用于分析heapdump文件,它建立一個(gè)HTTP/HTML服務(wù)器,讓用戶可以在瀏覽器上查看分析結(jié)果

jstack

Stack Trace for Java, 顯示虛擬機(jī)的線程快照

jps:虛擬機(jī)進(jìn)程狀況工具

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

jps命令格式:

jps [options] [hostId]

jps可以通過(guò)RMI協(xié)議查詢開(kāi)啟了RMI服務(wù)的遠(yuǎn)程虛擬機(jī)進(jìn)程狀態(tài),hostId為RMI注冊(cè)表中注冊(cè)的主機(jī)名稱(chēng)。

jps其他常用選項(xiàng):

-q 只輸出LVMID, 省略主類(lèi)的名稱(chēng);

-m 輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)候傳遞給主類(lèi)main()函數(shù)的參數(shù);

-l 輸出主類(lèi)的全稱(chēng),如果進(jìn)程執(zhí)行的是jar包,輸出jar路徑;

-v 輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)候JVM參數(shù)。

jps命令樣例:

[root@localhost ~]# jps -l

3914 org.zhangyoubao.payservice.App

12180 sun.tools.jps.Jps

6913 org.zhangyoubao.userprofiler.App

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

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

jstat命令格式:

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

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

jstat其他常用選項(xiàng):

-class 監(jiān)視類(lèi)load/unload數(shù)量、總空間已經(jīng)裝載時(shí)間;

-compiler 輸出JIT編譯器編譯過(guò)的方法、耗時(shí)等信息;

-printcompilation 輸出已經(jīng)被JIT編譯的方法;

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

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

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

-gccause 與-gcutil功能一樣,額外輸出導(dǎo)致上一次GC產(chǎn)生原因;

-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í)時(shí)的查看和調(diào)整虛擬機(jī)各項(xiàng)參數(shù)。

jinfo命令格式:

jinfo [option] pid

jinfo其他常用選項(xiàng):

-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內(nèi)存映射工具

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

jmap命令格式:

jmap [option] vmid

jmap其他常用選項(xiàng):

-dump 生成java堆存儲(chǔ)快照。格式:-dump:[live,]format=b,file=;

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

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

-histo 顯示堆中對(duì)象統(tǒng)計(jì)信息,包括類(lèi)、實(shí)例書(shū)、合計(jì)容量;

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

-F 當(dāng)虛擬機(jī)進(jìn)程堆-dump選項(xiàng)沒(méi)有響應(yīng)時(shí)候,可以使用這個(gè)選項(xiàng)強(qiáng)制生成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

8: 100683 6443712 com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty

9: 48812 6257856

10: 4230 5271640

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

16: 20917 3012048 com.mysql.jdbc.Field

17: 4230 2943840

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

jhat: 虛擬機(jī)堆轉(zhuǎn)存快照分析工具

jhat 命令用于與jmap搭配使用,用來(lái)分析jmap生成的dump文件。jhat內(nèi)置了一個(gè)微型的HTTP/HTML服務(wù)器,生成的dump文件的分析結(jié)果后,可以在瀏覽器查看。

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用于生成虛擬機(jī)當(dāng)前時(shí)刻的線程快照。線程快照就是當(dāng)前虛擬機(jī)每一條線程正在執(zhí)行的方法堆棧計(jì)劃,生成線程快照的主要目的是定位線程長(zhǎng)時(shí)間停頓的原因。在線程停頓的時(shí)候,通過(guò)jstack來(lái)查看沒(méi)有響應(yīng)的線程在后臺(tái)做些什么事情,或者等待著什么資源。

jstack命令格式:

jstack [option] vmid

jstack其他選項(xiàng):

-F 當(dāng)正常輸出的請(qǐng)求不被響應(yīng)的時(shí)候,強(qiáng)制輸出線程堆棧;

-l 除了顯示堆棧外,顯示關(guān)于鎖的附加信息;

-m 如果調(diào)用本地方法,可以顯示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)

總結(jié)

以上是生活随笔為你收集整理的java虚拟机出现问题解决,java虚拟机故障处理工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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