一、jps指令:
Jps [options] [hostid]
(hostid为ip或域名地址)
jps 是用于查看有权访问的 hotspot 虚拟机的进程,当未指定 hostid 时,默认查看本机 jvm 进程。
- -q: 不输出类名、Jar 名和传入 main 方法的参数
- -m: 输出传入 main 方法的参数
- -l: 输出 main 类或 Jar 的全限名
- -v: 输出传入 JVM 的参数
二、jmap指令:
jmap -heap pid
:用于打印指定 Java 进程的对象内存映射或堆内存细节,可检测堆的配置信息;
jmap -histo:live pid
:定位内存泄露
输出结果参数说明:
- MaxHeapFreeRatio: 最大空闲堆内存比例,GC 后如果发现空闲堆内存大于整个预估堆内存的 N%(百分比),JVM 则会收缩堆内存,但不能小于-Xms 指定的最小堆的限制。
- MinHeapFreeRatio: 最小空闲堆内存比例 ,GC 后如果发现空闲堆内存小于整个预估堆内存的 N%(百分比), 则 JVM 会增大堆内存,但不能超过-Xmx 指定的最大堆内存限制。
- MaxHeapSize: 即-Xmx, 堆内存大小的上限
- InitialHeapSize: 即-Xms, 堆内存大小的初始值
- NewSize: 新生代预估堆内存占用的默认值
- MaxNewSize: 新生代占整个堆内存的最大值
- OldSize: 老年代的默认大小,
- NewRatio: 老年代对比新生代的空间大小, 比如 2 代表老年代空间是新生代的两倍大小.
- SurvivorRatio: Eden/Survivor 的值. 例如 8 表示 Survivor:Eden=1:8, 因为 survivor 区有 2 个, 所以 Eden 的占比为 8/10.
- MetaspaceSize: 分配给类元数据空间的初始大小(Oracle 逻辑存储上的初始高水位,the initial high-water-mark ). 此值为估计值. MetaspaceSize 设置得过大会延长垃圾回收时间. 垃圾回收过后,引起下一次垃圾回收的类元数据空间的大小可能会变大
- MaxMetaspaceSize: 是分配给类元数据空间的最大值, 超过此值就会触发 Full GC. 此值仅受限于系统内存的大小, JVM 会动态地改变此值
- CompressedClassSpaceSize: 类指针压缩空间大小, 默认为 1G.
- G1HeapRegionSize: G1区块的大小, 取值为1M至32M. 其取值是要根据最小Heap大小划分出2048 个区块.
说明: jmap 在系统调优时通常会结合 jhat 来分析 jmap 生成的 dump 文件。