JVM常用命令

1、jps命令

jps:虚拟机进程状态工具,该命令在Java环境部署和服务启动查看时经常用到,首先在本地启动一个facade门面微服务,然后在命令行中执行查询;

  • jps:命令默认输出的是进程ID和应用主类的名称;

  • -l:输出进程ID和应用主类的完整路径;

  • -v:输出向jvm传递的参数,此处展示为idea中显式配置的VM-options参数,其他内容自行查看即可;

  • -m:输出向main方法传递的参数,服务启动前可以在idea的Program-arguments配置;

$ jps
1281 FacadeApp

$ jps -l
1281 com.explore.facade.FacadeApp

$ jps -v
1281 FacadeApp -Xms128m -Xmx256m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

$ jps -m
1281 FacadeApp hello,main-meth

查看pid命令

 jps -q

查看堆的使用情况

一. jmap -heap pid

8477b74-dmn5k/logs]# jmap -heap 9
Attaching to process ID 9, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08

using thread-local object allocation.
Garbage-First (G1) GC with 1 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 40
   MaxHeapFreeRatio         = 70
   MaxHeapSize              = 1073741824 (1024.0MB)
   NewSize                  = 1363144 (1.2999954223632812MB)
   MaxNewSize               = 643825664 (614.0MB)
   OldSize                  = 5452592 (5.1999969482421875MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 1048576 (1.0MB)

Heap Usage:
G1 Heap:
   regions  = 1024
   capacity = 1073741824 (1024.0MB)
   used     = 654233080 (623.9252853393555MB)
   free     = 419508744 (400.07471466064453MB)
   60.93020364642143% used
G1 Young Generation:
Eden Space:
   regions  = 557
   capacity = 673185792 (642.0MB)
   used     = 584056832 (557.0MB)
   free     = 89128960 (85.0MB)
   86.7601246105919% used
Survivor Space:
   regions  = 3
   capacity = 3145728 (3.0MB)
   used     = 3145728 (3.0MB)
   free     = 0 (0.0MB)
   100.0% used
G1 Old Generation:
   regions  = 65
   capacity = 397410304 (379.0MB)
   used     = 67030520 (63.92528533935547MB)
   free     = 330379784 (315.07471466064453MB)
   16.866829904843133% used

也可以将也可以将堆内存信息导出到文件中

jmap ‐dump:format=b,file=eureka.hprof 进程id

jmap -dump:format=b,file=D:\data\heapdump.hprof 9704

报错:

jmap 存取堆信息到指定路径

jmap -histo 进程Id > ./log.txt 

如:jmap -histo 10880 > D:\data\ps.txt

输出内容如:

 num     #instances         #bytes  class name
----------------------------------------------
   1:        403251       53605360  [C
   2:        222799       51401520  [B
   3:         35266       23580072  [I
   4:        176461        4235064  java.lang.String
   5:         66401        4040168  [Ljava.lang.Object;
   6:        191950        3765632  [Ljava.lang.Class;
   7:         41315        3635720  java.lang.reflect.Method
   8:         28438        2282552  [Ljava.util.HashMap$Node;
   9:         66033        2113056  java.util.HashMap$Node
  10:         23733        1895888  [S

  .......

 .......

 4218:             1             16  sun.util.locale.provider.SPILocaleProviderAdapter
 4219:             1             16  sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter
 4220:             1             16  sun.util.resources.LocaleData
 4221:             1             16  sun.util.resources.LocaleData$LocaleDataResourceBundleControl
 Total       2251225      183870720

二. jdk自带jvm检查工具

        jvisualvm

     

Visual GC 插件使用如下

Visual GC 插件使用 - 简书 (jianshu.com)icon-default.png?t=N7T8https://www.jianshu.com/p/9e4ccd705709

修改visula gc插件的jdk安装位置,否则会报找不到jdk

visualvm_jdkhome="C:\developTool\JDK\jdk8\jdk1.8.0_65\jdk1.8.0_65"

三. jhat命令

分析dump文件,我们可以用jdk里面提供的jhat工具,执行

jhat xxx.dump

jhat加载解析xxx.dump文件,并开启一个简易的web服务,默认端口为7000,可以通过浏览器查看内存中的一些统计信息,会出现无法找到main函数等

四. jinfo -flag name PID 查看某个java进程的name属性的值

jinfo -flag MaxHeapSize PID 
jinfo -flag UseG1GC PID

五. jstat查看垃圾回收:

jstat -class PID 1000 10   查看某个java进程的类装载信息,每1000毫秒输出一次,共输出10次

查看垃圾收集信息

linux如何查看垃圾回收GC的情况,包括fullGC次数和耗时

解决方法:

jstat -gc PID 毫秒数 刷新次数

例如:

假如我的tomcat启动后的PID是12880,5秒刷新一次,只刷新20次

jstat -gc 12880 5000 20

补充:

S0  — Heap上的 Survivor space 0 区已使用空间的百分比
S1  — Heap上的 Survivor space 1 区已使用空间的百分比
E   — Heap上的 Eden space 区已使用空间的百分比
O   — Heap上的 Old space 区已使用空间的百分比
P   — Perm space 区已使用空间的百分比
YGC — 从应用程序启动到采样时发生 Young GC 的次数
YGCT– 从应用程序启动到采样时 Young GC 所用的时间(单位秒)
FGC — 从应用程序启动到采样时发生 Full GC 的次数
FGCT– 从应用程序启动到采样时 Full GC 所用的时间(单位秒)
GCT — 从应用程序启动到采样时用于垃圾回收的总时间(单位秒)

 查看线程堆栈信息

jstack PID
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值