内存监控工具:jmap命令

jmap命令有下面几种常用的用法:

•jmap [pid]

•jmap -histo:live [pid] >a.log

•jmap -dump:live,format=b,file=xxx.xxx [pid]

用得最多是后面两个。其中,jmap -histo:live [pid] 可以查看当前Java进程创建的活跃对象数目和占用内存大小。

jmap -dump:live,format=b,file=xxx.xxx [pid] 则可以将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析。

查看当前Java进程创建的活跃对象数目和占用内存大小:
jmap -histo:live 18162 >test.log


将当前Java进程的内存占用情况导出来,方便用专门的内存分析工具(例如:MAT)来分析:
jmap -dump:live,format=b,file=heapt18162.bin 18162

利用Eclipse Memory Analyzer Tool(MAT)打开heapt18162.bin文件:

下载地址:https://eclipse.org/mat/downloads.php

 

更多文章:https://www.javatang.com/archives/2017/10/30/53562102.html

https://blog.csdn.net/a1510841693/article/details/104770912

https://blog.csdn.net/lkp1603645756/article/details/82792117?locationNum=9&fps=1


jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。
如果不使用jmap命令,要想获取Java堆转储快照,还有一些比较“暴力”的手段:如-XX:+HeapDumpOnOutOfMemoryError参数,可以让虚拟机在OOM异常出现之后自动生成dump文件,通过-XX:+HeapDumpOnCtrlBreak参数则可以使用[Ctrl]+[Break]键让虚拟机生成dump文件,又或者在Linux系统下通过Kill -3命令发送进程退出信号“吓唬”一下虚拟机,也能拿到dump文件。
jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列、Java堆和永久代的详细信息,如空间使用率、当前用的是哪种收集器等。
jmap有不少功能在Windows平台下都是受限的,除了生成dump文件的-dump选项和用于查看每个类的实例、空间占用统计的-histo选项在所有操作系统都提供之外,其余选项都只能在Linux/Solaris下使用。
 
jmap命令格式:
jmap [ option ] vmid

option选项的合法值与具体含义见表4-4。

表4-4 jmap工具主要选项
jmap -dump:format=b,file=heapt13817.bin 13817

文章来源:深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)4.2.4 jmap:Java内存映像工具


原文地址:https://www.cnblogs.com/ooo0/p/15666637.html