常用指令
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 参数
参数 | 含义 |
---|---|
-class | class loader的行行为统计 |
-compiler | HotSpt JIT编译器行为统计 |
-gc | 垃圾回收堆的行为统计 |
-gccapacity | 各个垃圾回收代容量以及他们的行为统计 |
-gccause | 垃圾回收统计概述及最近两次回收原因 |
-gcmetacapacity | 显示metaspace的大小 |
-gcnew | 新生代行为统计 |
-gcnewcapacity | 新生代及其相应的内存空间统计 |
-gcold | 老年代及永生代行为统计 |
-gcoldcapacity | 老年代行为统计 |
-gcutil | 垃圾回收统计概述 |
-printcompilation | HotSpot编译方法统计 |
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 | 打印类加载器统计信息 |
-finalizerinfo | f-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 | 关闭对象引用跟踪 |
-port | http服务器端口,默认7000 |
-debug | debug级别 |
-version | 分析报告版本 |
jhat /home/work/heap.bin
访问ip:7000
打开这个页面拉到最下面