jdk的jmap指令使用介绍

jdk的jmap指令使用介绍

1.基本介绍

  1. jmap 主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节.jmap命令可以获得运行中的jvm的堆的快照,从而可以离线分析堆,以检查内存泄漏,检查一些严重影响性能的大对象的创建,检查系统中什么对象最多,各种对象所占内存的大小
  2. 可以将VM 中的heap(堆)以二进制格式输出到文本中.

2.命令格式和参数说明

  1. 命令格式:
  • jmap [ option ] pid 打印指定进程(pid)的内存快照

  • jmap [ option ] executable(可执行程序) core(dump文件)

  • jmap [option] serverId@ip 远程主机上服务号为(serverId)的debug服务的内存快照(可能由多个debug服务)

  1. 参数说明
  • -heap:打印jvm heap的情况(heap的概要信息,GC使用的算法,heap的配置及wise heap的使用情况).

    例如: jmap -heap 12660(pid) ![54056529999](在这里插入图片描述

  • -histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量.
    ​ 例如:jmap -histo 12660(pid) /jmap -histo:live 12660
    ![54056580989](在这里插入图片描述

  • -finalizerinfo:打印正等候回收的对象的信息
    ![54056597993](在这里插入图片描述

  • –clstats:打印classload和jvm heap长久层的信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量.
    例如:jmap -clstats 12660
    ![54056630554](在这里插入图片描述

  • -dump:[live,]format=b,file=outfile :使用hprof二进制形式,输出jvm的heap内容到指定文件. live子选项是可选的,假如指定live选项,那么只输出活的对象到文件.
    例如:jmap -dump:live,format=b,file=G:\test.dump 12660
    ![54060547595](在这里插入图片描述

  • -h:jmap的使用帮助
    例如:jmap -h

  • -F:强制输出已经挂起的进程状况

  • -J:递参数给jmap启动的jvm.
    例如:jmap -J-d64 -heap pid(64位机上使用)

3.使用场景

  1. jmap -histo pid多次使用对比分析可以看到对象的回收状况
  2. jmap -dump:format=b,file=outfile pid可以将指定进程的内存heap输出到outfile文件里,再配合MAT(内存分析工具)分析内存状况

4.参考

https://blog.csdn.net/fenglibing/article/details/6411953

https://blog.csdn.net/gtuu0123/article/details/6039964

https://www.cnblogs.com/kongzhongqijing/articles/3621163.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章