JVM常用指令与可视化工具

常用指令

jps :查看java进程号
jinfo :查询/修改 虚拟机配置信息
常用配置参数
配置含义
-Xms初始堆大小
-Xmx最大堆大小
-Xmn新生代内存空间大小
-XX:SurvivorRation新生代中eden区域与Survivor区域的比值
-Xss每个线程的堆栈大小
-XX:PermSize永久代初始大小
-XX:MaxPerSize永久代最大值
jstat:查询jvm运行时的状态信息,包括:内存状态,垃圾回收等

jstat [option] VMID [interval] [count]

VMID:进程id
interval:打印时间间隔
count:打印条数

option 参数

参数含义
-classclass loader的行行为统计
-compilerHotSpt JIT编译器行为统计
-gc垃圾回收堆的行为统计
-gccapacity各个垃圾回收代容量以及他们的行为统计
-gccause垃圾回收统计概述及最近两次回收原因
-gcmetacapacity显示metaspace的大小
-gcnew新生代行为统计
-gcnewcapacity新生代及其相应的内存空间统计
-gcold老年代及永生代行为统计
-gcoldcapacity老年代行为统计
-gcutil垃圾回收统计概述
-printcompilationHotSpot编译方法统计
jstack jvm线程快照命令

jstack [options] pid

options 参数

参数含义
-F当使用jstack命令无响应时强制输出内存堆栈
-m同时输出java堆栈和c/c++堆栈信息
-l除了堆栈信息外,还有关于锁的信息
-h帮助命令
jmap 生成java程序的dump文件,查看堆内对象实例统计信息和finalizer队列

jmap [option] pid

options 参数

参数含义
-heap打印java堆摘要信息
-histo[:live]打印堆中java对象统计信息
-clstats打印类加载器统计信息
-finalizerinfof-queue队列中等待执行finalizer方法的对象
-dump:生成java堆的dump文件

dump-options参数

dump-options含义
live转存存活的对象,没指定就是所有
format=b二进制格式
file=转存文件到

jmap -dump:live,format=b,file=heap.bin 2551
在这里插入图片描述

把存活的对象信息按二进制格式转存到heap.bin文件中

示例

jmap -heap 2634

attaching to process ID 2634, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.231-b11

using thread-local object allocation.
Garbage-First (G1) GC with 8 thread(s)  //垃圾回收算法

Heap Configuration:
   MinHeapFreeRatio         = 40  //最小堆使用比例
   MaxHeapFreeRatio         = 70 //最大堆可用比例
   MaxHeapSize              = 3221225472 (3072.0MB) //最大堆空间
   NewSize                  = 1363144 (1.2999954223632812MB) //新生代配置大小
   MaxNewSize               = 1929379840 (1840.0MB) //最大新生代大小
   OldSize                  = 5452592 (5.1999969482421875MB) //老年代大小
   NewRatio                 = 2 //新生代比例
   SurvivorRatio            = 8 //新生代与survivor的比例
   MetaspaceSize            = 268435456 (256.0MB) //元空间大小
   CompressedClassSpaceSize = 528482304 (504.0MB)
   MaxMetaspaceSize         = 536870912 (512.0MB)//最大元空间大小, 调整元空间的大小需要Full GC,一般将MetaspaceSize  MaxMetaspaceSize两个值都设置为256M,防止FGC
   G1HeapRegionSize         = 16777216 (16.0MB) //设置的 G1 区域的大小

Heap Usage: //堆内存实际使用情况
G1 Heap: //G1堆
   regions  = 192
   capacity = 3221225472 (3072.0MB)
   used     = 1139662488 (1086.866844177246MB)
   free     = 2081562984 (1985.133155822754MB)
   35.37978008389473% used
G1 Young Generation:
Eden Space:
   regions  = 21
   capacity = 1912602624 (1824.0MB) //总的
   used     = 352321536 (336.0MB) //已使用的
   free     = 1560281088 (1488.0MB)//剩余的
   18.42105263157895% used
Survivor Space: //survivor 区
   regions  = 7
   capacity = 117440512 (112.0MB)
   used     = 117440512 (112.0MB)
   free     = 0 (0.0MB)
   100.0% used
G1 Old Generation: //永久代使用情况
   regions  = 42
   capacity = 1191182336 (1136.0MB)
   used     = 669900440 (638.8668441772461MB)
   free     = 521281896 (497.1331558227539MB)
   56.23827853672941% used

jmap -histo:live 2634

 num     #instances         #bytes  class name
----------------------------------------------
   1:         28845      401619976  [B
   2:        816646       58538104  [C
   3:        815158       19563792  java.lang.String
   4:         77514       19335928  [Ljava.lang.Object;
   5:        387698       15507920  java.util.LinkedHashMap$Entry
   6:        195145        6244640  java.util.HashMap$Node
   7:         32930        6201336  [Ljava.util.HashMap$Node;
   8:        273488        4375808  java.lang.Integer
   9:         75153        4208568  com.bj58.spat.cmc.entity.DispCategoryEntity
  10:        115129        3684128  java.util.concurrent.ConcurrentHashMap$Node
  11:         26513        2978616  java.lang.Class
  12:         55923        2684304  java.util.HashMap
  13:         82127        1971048  java.lang.Long
  14:         14137        1844608  [I
  15:         76490        1835760  java.util.ArrayList
  16:         28610        1602160  java.util.LinkedHashMap
  17:         26965        1510040  com.bj58.spat.cmc.entity.DispLocalEntity
  18:          3463        1346968  [Ljava.util.concurrent.ConcurrentHashMap$Node;
  19:         83549        1336784  java.lang.Object
  20:         13550        1300800  java.lang.reflect.Method

class name解读
B代表byte
C代表char
D代表double
F代表float
I代表int
J代表long
Z代表boolean
前边有[代表数组,[I 就相当于int[]
对象用[L+类名表示

jhat 主要用于离线分析jmap 产生的dump文件

jhat [option] [dumpfile]

dumpfile:jmap -dump:file=heap.bin 命令产生的heap.bin文件

option参数

参数含义
-stack false关闭对象调用栈跟踪
-refs false关闭对象引用跟踪
-porthttp服务器端口,默认7000
-debugdebug级别
-version分析报告版本

jhat /home/work/heap.bin

在这里插入图片描述
访问ip:7000
在这里插入图片描述
打开这个页面拉到最下面
在这里插入图片描述

常用工具

jconsole
VisualVM
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖工-->攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值