• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

无信不立

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

【java虚拟机】jdk命令行工具

一、jps

作用:显示指定系统内所有的HotSpot虚拟机进程

命令格式:jps  [options]  [hostid]

1、hostid  服务器开启RMI协议时使用,为RMI注册表中注册的主机名。

2、options的含义

选项 含义 备注
-q 只输出java进程的pid  
-m 输出虚拟机进程启动时传递给主类main()函数的参数  
-l 输出进程主类的全名。如果进程执行的是jar包,输出jar包的路径  
-v 输出虚拟机进程启动时JVM的参数列表  

 

 

二、jstat

作用:监视虚拟机各种运行状态信息的命令行工具,(本地或远程机器的类装载,内存,垃圾收集,JIT编译等运行数据),没有GUI图形界面,它将是运行期定位虚拟机性能问题的首选工具。

命令格式:jstat [options  vmid  [interval  [s|ms ]  [count] ]

1、interval 表示查询间隔(如果省略掉interval和count两个参数,代表只查询一次)

2、count  表示查询次数

3、vmid如果不是本地虚拟机的pid,为远程机器,则该格式为:[protocol:][//]lvmid[@hostname[:port]/servername]

4、一个案例:每250毫秒查询一次进程2746的垃圾收集情况,一共查询2次

命令:

jstat -gc 2746 250 2
View Code

显示结果

S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
209664.0 209664.0 6284.9  0.0   1677824.0 265109.7 3145728.0   628135.5    �      �      7478  142.433   7      3.286  145.719
209664.0 209664.0 6284.9  0.0   1677824.0 265987.1 3145728.0   628135.5    �      �      7478  142.433   7      3.286  145.719
View Code

5、options的含义

选项 含义 备注
-class 监视类转载,卸载数量,总空间以及类装载所耗费的时间
Loaded  Bytes  Unloaded  Bytes     Time   
 19045 35917.3      309   362.4    3107.40
 19045 35917.3      309   362.4    3107.40
View Code
-gc 监视java堆状况,包括eden区,两个survivor区,老年代,永久代等的容量,已用空间,GC时间合计等信息
S0C    S1C    S0U    S1U      EC       EU        OC         OU       PC     PU    YGC     YGCT    FGC    FGCT     GCT   
209664.0 209664.0 6284.9  0.0   1677824.0 265109.7 3145728.0   628135.5    �      �      7478  142.433   7      3.286  145.719
209664.0 209664.0 6284.9  0.0   1677824.0 265987.1 3145728.0   628135.5    �      �      7478  142.433   7      3.286  145.719
View Code
-gccapacity 监视内容与-gc基本相同,但输出主要关注java堆各个区域使用到的最大,最小空间
NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC      PGCMN    PGCMX     PGC       PC     YGC    FGC 
2097152.0 2097152.0 2097152.0 209664.0 209664.0 1677824.0  3145728.0  3145728.0  3145728.0  3145728.0        �        �        �        �   7479     7
2097152.0 2097152.0 2097152.0 209664.0 209664.0 1677824.0  3145728.0  3145728.0  3145728.0  3145728.0        �        �        �        �   7479     7
View Code
-gcutil 监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
 S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT   
  2.97   0.00  34.77  19.98      �   7480  142.465     7    3.286  145.751
  2.97   0.00  34.78  19.98      �   7480  142.465     7    3.286  145.751
View Code
-gccause 监视内容与-gc基本相同,但输出主要关注导致上一次gc产生的原因
S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT    LGCC                 GCC                 
  2.97   0.00  60.00  19.98      �   7480  142.465     7    3.286  145.751 Allocation Failure   No GC               
  2.97   0.00  60.00  19.98      �   7480  142.465     7    3.286  145.751 Allocation Failure   No GC  
View Code
-gcnew 监视新生代gc状况
S0C    S1C    S0U    S1U   TT MTT  DSS      EC       EU     YGC     YGCT  
209664.0 209664.0 6229.8    0.0  6   6 104832.0 1677824.0 1202288.5   7480  142.465
209664.0 209664.0 6229.8    0.0  6   6 104832.0 1677824.0 1202288.5   7480  142.465
View Code
-gcnewcapacity -gcnew与其一致,但主要关注使用到的最大,最小空间
 NGCMN      NGCMX       NGC      S0CMX     S0C     S1CMX     S1C       ECMX        EC      YGC   FGC 
 2097152.0  2097152.0  2097152.0 209664.0 209664.0 209664.0 209664.0  1677824.0  1677824.0  7481     7
 2097152.0  2097152.0  2097152.0 209664.0 209664.0 209664.0 209664.0  1677824.0  1677824.0  7481     7
View Code
-gcold 监视老年代gc状况
 PC       PU        OC          OU       YGC    FGC    FGCT     GCT   
       �        �   3145728.0    628811.2   7481     7    3.286  145.766
       �        �   3145728.0    628811.2   7481     7    3.286  145.766
View Code
-gcoldcapacity -gcold与其一致,但主要关注老年代使用到的最大,最小空间
 OGCMN       OGCMX        OGC         OC       YGC   FGC    FGCT     GCT   
  3145728.0   3145728.0   3145728.0   3145728.0  7481     7    3.286  145.766
  3145728.0   3145728.0   3145728.0   3145728.0  7481     7    3.286  145.766
View Code
-gcpermcapacity 输出永久代使用到的最大,最小空间
PGCMN      PGCMX       PGC         PC      YGC   FGC    FGCT     GCT   
         �          �          �          �  7481     7    3.286  145.766
         �          �          �          �  7481     7    3.286  145.766
View Code
-compiler 输出JIT编译器编译过的方法,耗时等信息
Compiled Failed Invalid   Time   FailedType FailedMethod
   29272      3       0   220.37          1 com/mysql/jdbc/AbandonedConnectionCleanupThread run
   29272      3       0   220.37          1 com/mysql/jdbc/AbandonedConnectionCleanupThread run
View Code
-printcompilation 输出已经被JIT编译的方法
Compiled  Size  Type Method
   29272     11    1 java/security/SignatureSpi <init>
   29272     11    1 java/security/SignatureSpi <init>
View Code

 

6、显示结果的翻译

E:表示Eden区

S0:表示survivor0区

S1:表示survivor1区

O:表示老年代

P:表示永久代

YGC:表示Minor GC或者Yong GC的次数

YGCT:表示发生YGC的总耗时,单位为秒。

FGC:表示FULL GC的次数

FGCT:表示发生FULL GC的总耗时,单位为秒。

GCT:表示所有GC的总耗时

**C:表示那个内存区的总大小,单位为KB(推测)

**U: 表示那个内存区已经使用的大小,单位为KB(推测)

**MN:表示最小

**MX:表示最大

N:代表年轻代(包含1个eden,和2个survivor)

O:代表老年代

P:代表永久代

LGCC:表示上一次GC发生的原因

TT:?

MTT:?

 

 

三、jinfo

作用:实时查看和调整虚拟机各项参数

命令格式:jinfo [options] [vmid]

1、案例

命令行:
jinfo -flag CMSInitiatingOccupancyFraction 99394

输出结果:
-XX:CMSInitiatingOccupancyFraction=80
View Code

 

四、jmap

作用:用于生成堆转储快照(一般称为heapdump或dump文件),查询finalize执行队列,java堆和永久代详细信息(如空间使用率,当前用的是哪种收集器)

命令格式:jmap [options] vmid

1、options的含义

选项 含义 备注
-dump 生成java堆转储快照。格式为:-dump:[live,] format=b,file=<filename>,其中live子参数说明是否只dump出存活的对象  
-finalizerinfo 显示在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Liunx/solaris平台下有效  
-heap 显示java堆详细信息,如使用哪种回收期,参数配置,分代状况等,只在Liunx/solaris平台下有效  
-histo 显示堆中对象统计信息,包括类,实例数量,合计容量  
-permstat 以classloader为统计口径显示永久代内存状态。只在Liunx/solaris平台下有效  
-F 当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在Liunx/solaris平台下有效  

 

2、案例,生成一个快照文件

jmap -dump:format=b,file=sxf.bin 706
View Code

命令窗输出的结果

Dumping heap to /home/sxf.bin ...
Heap dump file created
View Code

 

五、jhat

作用:该命令是与jmap命令搭配使用,来分析jmap堆转储的快照文件。一般不常用,因为有更强大的工具。比如:Eclipse Memory Analyzer,IBM HeapAnalyzer,VisualVM工具。

命令格式:jhat [堆转储文件]

1、使用案例(分析该文件,会在服务器启动一个http服务,用于展示分析结果)

(1)执行命令

#sxf.bin文件就是借助jmap命令,从服务器上dump的堆转储快照
jhat sxf.bin  
View Code

(2)控制台显示

Reading from sxf.bin...
Dump file created Wed Jan 29 16:49:03 CST 2020
Snapshot read, resolving...
Resolving 11800220 objects...
Chasing references, expect 2360 dots........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Eliminating duplicate references........................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.
View Code

(3)浏览器输入

在浏览器输入:http://localhost:7000/

 

 可以查看类的实例个数,类型,内容,用于分析程序

 

 

六、jstack

作用:java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。

线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因。如线程间死锁,死循环,请求外部资源导致的长时间等待等,都是导致线程长时间停顿的常见原因。线程出现停顿的时候通过jstack来查看各个线程的调用堆栈,就可以知道没有响应的线程到底在后台做什么事情,或者等待什么资源。

命令格式:jstack [options] vmid

1、options选项的含义

选项 含义 备注
 -F  当正常输出的请求不被响应时,强制输出线程堆栈  
 -l 除堆栈外,显示关于锁的附加信息   
-m   如果调用到本地方法的话,可以显示C/C++的堆栈  

2、一个案例:打印线程堆栈至文件

jstack -l 706 > sxf.thread
View Code

 

posted on 2020-01-29 15:14  无信不立  阅读(157)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3