概述

命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。

jmap 用法

参数:

  • option: 选项参数。
  • pid: 需要打印配置信息的进程ID。
  • executable: 产生核心dump的Java可执行文件。
  • core: 需要打印配置信息的核心文件。
  • server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。
  • remote server IP or hostname 远程调试服务器的IP地址或主机名。

option

  • no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。
  • heap: 显示Java堆详细信息
  • histo[:live]: 显示堆中对象的统计信息
  • clstats:打印类加载器信息
  • finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象
  • dump:<dump-options>:生成堆转储快照
  • F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效.
  • help:打印帮助信息
  • J<flag>:指定传递给运行jmap的JVM的参数

示例一:no option

命令:jmap pid
描述:查看进程的内存映像信息,类似 Solaris pmap 命令。

使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的起始地址、映射大小以及共享对象文件的路径全称。这与Solaris的pmap工具比较相似。

示例二:heap

命令:jmap -heap pid
描述:显示Java堆详细信息

打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息

C:\Users\jjs>jmap -heap 5932
Attaching to process ID 5932, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.91-b15using thread-local object allocation.
Parallel GC with 4 thread(s)Heap Configuration:MinHeapFreeRatio         = 0MaxHeapFreeRatio         = 100MaxHeapSize              = 1073741824 (1024.0MB)NewSize                  = 42991616 (41.0MB)MaxNewSize               = 357564416 (341.0MB)OldSize                  = 87031808 (83.0MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
PS Young Generation
Eden Space:capacity = 60293120 (57.5MB)used     = 44166744 (42.120689392089844MB)free     = 16126376 (15.379310607910156MB)73.25337285580842% used
From Space:capacity = 5242880 (5.0MB)used     = 0 (0.0MB)free     = 5242880 (5.0MB)0.0% used
To Space:capacity = 14680064 (14.0MB)used     = 0 (0.0MB)free     = 14680064 (14.0MB)0.0% used
PS Old Generationcapacity = 120061952 (114.5MB)used     = 19805592 (18.888084411621094MB)free     = 100256360 (95.6119155883789MB)16.496143590935453% used20342 interned Strings occupying 1863208 bytes.

示例三:histo[:live]

命令:jmap -histo:live pid
描述:显示堆中对象的统计信息

其中包括每个Java类、对象数量、内存大小(单位:字节)、完全限定的类名。打印的虚拟机内部的类名称将会带有一个’*’前缀。如果指定了live子选项,则只计算活动的对象。

示例四:clstats

命令:jmap -clstats pid
描述:打印类加载器信息

-clstats是-permstat的替代方案,在JDK8之前,-permstat用来打印类加载器的数据
打印Java堆内存的永久保存区域的类加载器的智能统计信息。对于每个类加载器而言,它的名称、活跃度、地址、父类加载器、它所加载的类的数量和大小都会被打印。此外,包含的字符串数量和大小也会被打印。

示例五:finalizerinfo

命令:jmap -finalizerinfo pid
描述:打印等待终结的对象信息

Number of objects pending for finalization: 0 说明当前F-QUEUE队列中并没有等待Fializer线程执行final

示例六:dump:<dump-options>

命令:jmap -dump:format=b,file=heapdump.phrof pid
描述:生成堆转储快照dump文件。

以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。想要浏览heap dump,你可以使用jhat(Java堆分析工具)读取生成的文件。

这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用, 线上系统慎用。

JVM内存分析工具之jmap相关推荐

  1. JVM 内存分析工具 - MAT

    文章目录 1 简介 2 使用 2.1 准备 MAT 2.2 准备堆转储文件(Heap Dump) 2.3 分析堆转储文件 2.3.1 Histogram 2.3.2 Leak Suspects 2.3 ...

  2. java jmap_Java进程内存分析工具之jmap

    jmap是java 7后自带的轻量级内存分析工具,原文介绍可以见官网,<The jmap Utility> 1 堆栈分析 获取GC算法,新生代,老年代,永久代空间占用分析 jmap -he ...

  3. mat 内存分析 Linux,JVM内存分析工具MAT使用简介

    # Memory Analyzer使用简介 markdown格式渲染异常请阅读附件. - [Memory Analyzer使用简介](#memory-analyzer使用简介) - [MAT 简介]( ...

  4. JVM内存分析工具JProfiler的简单使用

    1.先下载安装JProfiler,可以参考此教程.下载安装教程 2.打开idea开发工具,先安装JProfiler插件,如果安装后没有标识,可以试试重启idea. 3.对JProfiler进行配置配置 ...

  5. JVM内存分析工具大全

    https://www.cnblogs.com/duanxz/p/4515437.html

  6. envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇

    1. MAT 工具简介 MAT(全名:Memory Analyzer Tool),是一款快速便捷且功能强大丰富的 JVM 堆内存离线分析工具.其通过展现 JVM 异常时所记录的运行时堆转储快照(Hea ...

  7. java内存分析工具_java内存查看与分析

    业界有很多强大的java profile的工具,比如Jporfiler,yourkit,这些收费的东西我就不想说了,想说的是,其实java自己就提供了很多内存监控的小工具,下面列举的工具只是一小部分, ...

  8. java内存溢出分析工具:jmap使用实战

    java内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap.  1 使用命令  在环境是linux+jdk1.5以上,这个工具是自带的,路 ...

  9. 4大JVM性能分析工具详解,及内存泄漏分析方案

    谈到性能优化分析一般会涉及到: Java代码层面的,典型的循环嵌套等 还会涉及到Java JVM:内存泄漏溢出等 MySQL数据库优化:分库分表.慢查询.长事务的优化等 阿里P8架构师谈:MySQL慢 ...

最新文章

  1. netcore读取json文件_.net core读取json格式的配置文件
  2. H5使用百度地图SDK获取用户当前位置并且标记显示在地图
  3. 1196: 数星星(二)(结构体专题)_福利:最新导数6大专题!高分段提分有困扰?听北大状元漫谈提分...
  4. android调试推荐使用BlueStacks模拟器调试Android应用
  5. TEASER-plusplus 编译测试
  6. 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
  7. AD在Windows Server 2003中的更新(中)
  8. 漫谈度量学习(Distance Metric Learning)那些事儿
  9. React 18 RC 版本发布啦,生产环境用起来!
  10. oracle 导库时日志满了,oracle rac 11g 日志占满系统盘导致数据库down掉
  11. 数据转换之 Number
  12. 叠加多个装饰器——day13
  13. 计算机三级网络技术-----DHCP报文分析
  14. NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条
  15. vue axios封装 获取微信公众号用户的openid
  16. 用mac系统怎么连宽带连接服务器吗,苹果电脑怎么连宽带_MAC系统怎么连接有线宽带-win7之家...
  17. 阿里巴巴erp【商业化操作系统】什么是erpadmin
  18. 系统集成项目管理工程师(软考中级)—— 第十七章 项目沟通和干系人管理 笔记分享
  19. 操作操作操作操作操作操作
  20. CDH6中的各种目录

热门文章

  1. nag在逆向中是什么意思_什么叫逆向思维?
  2. Linux C/C++ 调试的那些“歪门邪道”
  3. 升级AndrOid4.3,三星S4升级Android 4.3系统后应用停止运行的解决办法图解
  4. 基于Nginx实现Emby硬件转码
  5. [翻译论文]A novel embedded min-max approach for feature selection in nonlinear Support Vector Machine cl
  6. 图像处理——饱和度调整算法(python语言)
  7. Windows 10 1809 MSDN 版本下载 ed2k 链接
  8. 古诗词中“草”的意象
  9. python语句的输出结果_Python 3.x 语句 print(1, 2, 3, sep=':') 的输出结果为 _____
  10. 全网最全的权限系统设计方案