成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

強(qiáng)大的JVM監(jiān)控工具!

開(kāi)發(fā) 開(kāi)發(fā)工具
在生產(chǎn)環(huán)境中,經(jīng)常會(huì)遇到各種各樣奇葩的性能問(wèn)題,所以掌握最基本的JVM命令行監(jiān)控工具還是很有必要的。

[[410042]]

介紹

在生產(chǎn)環(huán)境中,經(jīng)常會(huì)遇到各種各樣奇葩的性能問(wèn)題,所以掌握最基本的JVM命令行監(jiān)控工具還是很有必要的

名稱(chēng) 主要作用
jps 查看正在運(yùn)行的Java進(jìn)程
jstack 打印線程快照
jmap 導(dǎo)出堆內(nèi)存映像文件
jstat 查看jvm統(tǒng)計(jì)信息
jinfo 實(shí)時(shí)查看和修改jvm配置參數(shù)
jhat 用于分析heapdump文件

jps:查看正在運(yùn)行的Java進(jìn)程

jps可以列出正在運(yùn)行的Java進(jìn)程,并顯示虛擬機(jī)執(zhí)行主類(lèi)(Main Class,main()函數(shù)所在的類(lèi))名稱(chēng)以及進(jìn)程id

「如果想看一個(gè)命令的后面加 -help參數(shù)即可」

  1. [root@VM-0-14-centos ~]# jps -help 
  2. usage: jps [-help] 
  3.        jps [-q] [-mlvV] [<hostid>] 
  4.  
  5. Definitions: 
  6.     <hostid>:      <hostname>[:<port>] 

「可以看到可以監(jiān)控遠(yuǎn)程服務(wù),但是基于安全考慮,一般不使用」

常見(jiàn)的選項(xiàng)如下

選項(xiàng) 作用
-q 只輸出進(jìn)程id
-m 輸出傳遞給主類(lèi)main函數(shù)的參數(shù)
-l 輸出主類(lèi)全類(lèi)名,如果進(jìn)程執(zhí)行的是Jar包,輸出jar包名字
-v 程序啟動(dòng)時(shí)指定的jvm參數(shù)
  1. cis@mt002:~$ jps 
  2. 70208 KmpService 
  3. 183525 LinkAnalysisServer 
  4. 25160 MipSerachServer 
  1. cis@mt002:~$ jps -l 
  2. 70208 com.st.kmp.main.KmpService 
  3. 183525 com.st.cis.main.LinkAnalysisServer 
  4. 25160 com.st.cis.main.MipSerachServer 

jstack:打印線程快照

「查看某個(gè)Java進(jìn)程中所有線程的狀態(tài)。一般用來(lái)定位線程出現(xiàn)長(zhǎng)時(shí)間停頓的原因,如發(fā)生死循環(huán),死鎖,請(qǐng)求外部資源長(zhǎng)時(shí)間等待等!」

  1. public class DeadLockDemo { 
  2.  
  3.     private static Object lockA = new Object(); 
  4.     private static Object lockB = new Object(); 
  5.  
  6.  
  7.     public static void main(String[] args) { 
  8.  
  9.         Thread threadA = new Thread(() -> { 
  10.             synchronized (lockA) { 
  11.                 try { 
  12.                     TimeUnit.SECONDS.sleep(1); 
  13.                 } catch (InterruptedException e) { 
  14.                     e.printStackTrace(); 
  15.                 } 
  16.                 System.out.println("get lockA"); 
  17.                 synchronized (lockB) { 
  18.                     System.out.println("threadA run finish"); 
  19.                 } 
  20.             } 
  21.         }); 
  22.  
  23.         Thread threadB = new Thread(() -> { 
  24.             synchronized (lockB) { 
  25.                 try { 
  26.                     TimeUnit.SECONDS.sleep(1); 
  27.                 } catch (InterruptedException e) { 
  28.                     e.printStackTrace(); 
  29.                 } 
  30.                 System.out.println("get lockB"); 
  31.                 synchronized (lockA) { 
  32.                     System.out.println("threadB run finish"); 
  33.                 } 
  34.             } 
  35.         }); 
  36.  
  37.         threadA.setName("myThreadA"); 
  38.         threadB.setName("myThreadB"); 
  39.         threadA.start(); 
  40.         threadB.start(); 
  41.     } 

「我寫(xiě)了一個(gè)死鎖的例子,啟動(dòng)后執(zhí)行jps找到進(jìn)程id為19457」

  1. peng@pengdeMacBook-Pro ~ % jps 
  2. 19457 DeadLockDemo 
  3. 19458 Launcher 
  4. 2658  
  5. 19459 Jps 

接著執(zhí)行如下命令,列出了這個(gè)進(jìn)程每個(gè)線程的執(zhí)行狀態(tài)

  1. jstack 19457 

「從圖中可以看到有很多線程,GC線程,myThreadA,myThreadB等,其中myThreadA和myThreadB的線程狀態(tài)為BLOCKED,并且在最后提示出了死鎖發(fā)生的位置」

jmap:導(dǎo)出堆內(nèi)存映像文件

「jmap主要用來(lái)用來(lái)導(dǎo)出堆內(nèi)存映像文件,看是否發(fā)生內(nèi)存泄露等?!?/p>

生產(chǎn)環(huán)境我們一般會(huì)配置如下參數(shù),讓虛擬機(jī)在OOM異常出現(xiàn)之后自動(dòng)生成dump文件

  1. -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/Users/peng 

執(zhí)行如下命令即可手動(dòng)獲得dump文件

  1. jmap -dump:file=文件名.dump 進(jìn)程id 

「分析堆內(nèi)存的工具有很多,如Java VisualVM,jhat等。但個(gè)人覺(jué)得最好用的就是Eclipse Memory Analyzer,沒(méi)有之一」

jstat:查看jvm統(tǒng)計(jì)信息

「jstat可以顯示本地或者遠(yuǎn)程虛擬機(jī)進(jìn)程中的類(lèi)裝載、 內(nèi)存、 垃圾收集、 JIT編譯等運(yùn)行數(shù)據(jù)」

用jstat查看一下類(lèi)裝載的信息。我個(gè)人很少使用這個(gè)命令,命令行看垃圾收集信息真不如看圖形界面方便,就不多做介紹了。

  1. [root@VM-0-14-centos ~]# jstat -class 19402 
  2. Loaded  Bytes  Unloaded  Bytes     Time    
  3.  10229 19679.1       52    76.0       5.33 

含義如下

Loaded 解釋
Loaded 加載類(lèi)的個(gè)數(shù)
Bytes 加載類(lèi)的字節(jié)數(shù)
Unloaded 卸載類(lèi)的個(gè)數(shù)
Bytes 卸載類(lèi)的字節(jié)數(shù)
Time 花費(fèi)的時(shí)間

jinfo:實(shí)時(shí)查看和修改jvm配置參數(shù)

jinfo的作用是實(shí)時(shí)地查看和修改虛擬機(jī)各項(xiàng)參數(shù)。

「使用jps命令的-v參數(shù)可以查看虛擬機(jī)啟動(dòng)時(shí)顯式指定的參數(shù)列表」,但如果想知道未被顯式指定的參數(shù)的系統(tǒng)默認(rèn)值,除了去找資料外,就只能使用jinfo的-flag選項(xiàng)進(jìn)行查詢(xún)了(如果只限于JDK 1.6或以上版本的話(huà),使用java -XX:+PrintFlagsFinal查看參數(shù)默認(rèn)值也是一個(gè)很好的選擇)

「jinfo flags pid在高版本才能正常使用,我在jdk1.8這個(gè)版本不能正常使用」

應(yīng)用程序設(shè)置如下參數(shù)

  1. -Xmx10m -Xms10m 

查看最大堆內(nèi)存和是否打印GC日志,可以看到不打印GC日志 接著設(shè)置打印GC日志,再次查看,打印GC日志

  1. peng@pengdeMacBook-Pro ~ % jinfo -flag MaxHeapSize 20253          
  2. -XX:MaxHeapSize=10485760 
  3. peng@pengdeMacBook-Pro ~ % jinfo -flag PrintGCDetails 20253 
  4. -XX:-PrintGCDetails 
  5. peng@pengdeMacBook-Pro ~ % jinfo -flag +PrintGCDetails 20253 
  6. peng@pengdeMacBook-Pro ~ % jinfo -flag PrintGCDetails 20253  
  7. -XX:+PrintGCDetails 

「Xmx是MaxHeapSize的別名」

本文轉(zhuǎn)載自微信公眾號(hào)「Java識(shí)堂」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java識(shí)堂公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: Java識(shí)堂
相關(guān)推薦

2012-03-02 14:20:46

JavaJVM

2010-09-27 15:39:37

JVM監(jiān)控工具

2010-09-27 15:54:19

JVM監(jiān)控工具

2010-09-26 09:16:16

JVM監(jiān)控工具

2014-02-09 10:20:44

監(jiān)控工具Linux服務(wù)器

2017-02-27 17:42:26

LinuxCPU工具

2010-09-26 14:44:31

JVM內(nèi)存監(jiān)控工具

2019-11-01 08:49:07

JVM監(jiān)控性能

2022-01-24 16:17:26

htop工具Linux

2020-07-17 08:36:16

JVM性能監(jiān)控

2012-01-11 13:04:40

JavaJVM

2012-08-06 15:59:17

MongoDB

2012-06-15 14:38:29

Hadoop分布式文件系統(tǒng)

2010-02-24 14:53:33

Python開(kāi)發(fā)工具

2018-01-23 15:02:42

負(fù)載測(cè)試工具Gatling

2009-12-24 11:13:21

2019-11-06 16:40:31

awkLinux文本分析工具

2023-10-27 07:23:29

WarehouseFlatpak工具

2014-12-04 10:07:03

工具

2022-04-13 09:43:50

VoltaJavaScript開(kāi)發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 不用播放器看的av | 国产午夜高清 | 欧美片网站免费 | 亚洲一区二区综合 | 欧美精品二区三区 | 中文字幕蜜臀av | 成人在线精品 | 国产激情偷乱视频一区二区三区 | 精品一区二区三区四区五区 | 亚洲三区视频 | 欧洲亚洲一区二区三区 | 国产中文 | av免费入口 | 国产成人精品久久二区二区 | 盗摄精品av一区二区三区 | 91高清免费观看 | 欧美在线国产精品 | 日韩av资源站 | 黑人精品欧美一区二区蜜桃 | 亚洲人成一区二区三区性色 | 久久午夜视频 | 久久精品亚洲精品国产欧美 | 天天亚洲 | 国产999精品久久久久久 | 天天干成人网 | 日日天天 | 在线中文字幕av | 午夜性视频 | 性一交一乱一透一a级 | 婷婷色网 | 亚洲男人天堂 | 91免费在线视频 | 精品一区二区三区在线视频 | 精品日韩在线 | 国产精品九九九 | 国产欧美精品一区二区三区 | 一区二区三区四区在线免费观看 | 亚洲国产午夜 | 久久久久成人精品免费播放动漫 | 天天躁人人躁人人躁狂躁 | 视频一区二区在线观看 |