Day8-JDK性能监控工具:jstat(上)

jstat介绍

jstat全名:Java Virtual Machine Statistics Monitoring Tool,用於检视HotSpot虚拟机相关性能的统计讯息。可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。

在没有GUI的状况下,这将会是查看虚拟机性能问题的首选工具!!

指令介绍

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

可以先下jstatjstat --help查看一些资讯
参数位置尽量照着上面放置喔!
https://ithelp.ithome.com.tw/upload/images/20210922/20140481kAWqr9U8G4.png

jstat的option有很多,所以我会先选一个固定的option(-class)进行其他参数的说明。


以下为示范内容

Step1.准备一个JstatTest.java档案,程序码如下:

package Controller;

public class JstatTest{

  public static void main(String[] args) throws InterruptedException{
    System.out.println("Start");
    Thread.sleep(1000000);
    System.out.println("The End");
  }
}

我写了一段程序码,输出"Start",接着让执行绪暂停一段时间,最後输出"The End"

Step.2 将程序码进行编译并且执行

编译与执行的指令说明,请参考Day4-java语言编译器:javac & 运行工具:java (上)

Step3.要进行查看jstat前,须先知道要查看哪个HotSpot进程

故得先透过jps查看,请参考Day7-JDK查看正在运行的Java进程工具:jps
https://ithelp.ithome.com.tw/upload/images/20210923/20140481DXpFR6YKQu.png

我查到我这次的进程是1198,以下示范的指令记得将1198改为欲查看的进程id喔!

  • 不带其他参数

不带其他参数,只带-class时显示得资讯如下

jstat -class 1198

https://ithelp.ithome.com.tw/upload/images/20210923/20140481JPdJppxAav.png

  • -t

於第一栏显示时间戳记,是从JVM启动後开始计算的时间。

jstat -class -t 1198

https://ithelp.ithome.com.tw/upload/images/20210923/20140481McZTjVPu49.png

  • -h<lines>

每隔几行显示一次标题,此参数必须搭配interval一起才看得出效果。
可以不用搭配count,只不过我个人习惯的关系,所以范例照片的指令有加上20次

jstat -class -h5 1198 1000

https://ithelp.ithome.com.tw/upload/images/20210923/20140481ENHM96qJgC.png

  • interval

每隔多久显示一次纪录。

  1. interval单位为毫秒。我输入1000,相当於每隔1秒显示一笔纪录直到HotSpot终止的那一刻,所以最後我用control+c退出
  2. 可以不用带上-t参数,范例照片的指令纯粹是个人习惯
jstat -class 1198 1000

https://ithelp.ithome.com.tw/upload/images/20210923/20140481jsinmhuSYj.png

  • count

要显示几次纪录。
可以不用带上-t参数,范例照片的指令纯粹是个人习惯

jstat -class 1198 1000 20

https://ithelp.ithome.com.tw/upload/images/20210923/201404819vu1Lv5IFs.png
由於interval count参数都直接是数字,故若只带一个数字,命令会辨认为interval

心得

这些还只是较简单的应用,下篇会说明有哪些option可以使用,内容会稍微复杂一点。


<<:  Day9:今天来聊一下Parrot Security的Nmap

>>:  [Day08] Let's Build!

Day 22- Google Apps Script 线上文件更新

咦?To-Do-List 怎麽突然结束了!? 恩…主要是最近接到了不少新的任务,而我想,To Do ...

【Day 3】Git与Github入门

Git与Github关系? 说明 : Github是Git进行版本控制软件的服务平台供应商之一。 G...

强型闯入DenoLand[32] - 使用 Deno 串接 MongoDB

强型闯入DenoLand[32] - 使用 Deno 串接 MongoDB 在安装 MongoDB...

【左京淳的JAVA学习笔记】第六章 继承与多型

在创造各式各样的物件时,有很多时候会发现怎麽重复的代码很多。 为了解决这个问题,可以采用继承与介面的...

【Day21】[演算法]-排序Sort & 气泡排序法Bubble Sort

排序(Sorting) 排序(Sorting)在电脑领域中是非常普遍且重要工作,即是将一群不规格的资...