JVM内存分析工具之jmap
概述
命令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相关推荐
- JVM 内存分析工具 - MAT
文章目录 1 简介 2 使用 2.1 准备 MAT 2.2 准备堆转储文件(Heap Dump) 2.3 分析堆转储文件 2.3.1 Histogram 2.3.2 Leak Suspects 2.3 ...
- java jmap_Java进程内存分析工具之jmap
jmap是java 7后自带的轻量级内存分析工具,原文介绍可以见官网,<The jmap Utility> 1 堆栈分析 获取GC算法,新生代,老年代,永久代空间占用分析 jmap -he ...
- mat 内存分析 Linux,JVM内存分析工具MAT使用简介
# Memory Analyzer使用简介 markdown格式渲染异常请阅读附件. - [Memory Analyzer使用简介](#memory-analyzer使用简介) - [MAT 简介]( ...
- JVM内存分析工具JProfiler的简单使用
1.先下载安装JProfiler,可以参考此教程.下载安装教程 2.打开idea开发工具,先安装JProfiler插件,如果安装后没有标识,可以试试重启idea. 3.对JProfiler进行配置配置 ...
- JVM内存分析工具大全
https://www.cnblogs.com/duanxz/p/4515437.html
- envi 文件 生成mat_JVM 内存分析工具 MAT 的深度讲解与实践——入门篇
1. MAT 工具简介 MAT(全名:Memory Analyzer Tool),是一款快速便捷且功能强大丰富的 JVM 堆内存离线分析工具.其通过展现 JVM 异常时所记录的运行时堆转储快照(Hea ...
- java内存分析工具_java内存查看与分析
业界有很多强大的java profile的工具,比如Jporfiler,yourkit,这些收费的东西我就不想说了,想说的是,其实java自己就提供了很多内存监控的小工具,下面列举的工具只是一小部分, ...
- java内存溢出分析工具:jmap使用实战
java内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap. 1 使用命令 在环境是linux+jdk1.5以上,这个工具是自带的,路 ...
- 4大JVM性能分析工具详解,及内存泄漏分析方案
谈到性能优化分析一般会涉及到: Java代码层面的,典型的循环嵌套等 还会涉及到Java JVM:内存泄漏溢出等 MySQL数据库优化:分库分表.慢查询.长事务的优化等 阿里P8架构师谈:MySQL慢 ...
最新文章
- netcore读取json文件_.net core读取json格式的配置文件
- H5使用百度地图SDK获取用户当前位置并且标记显示在地图
- 1196: 数星星(二)(结构体专题)_福利:最新导数6大专题!高分段提分有困扰?听北大状元漫谈提分...
- android调试推荐使用BlueStacks模拟器调试Android应用
- TEASER-plusplus 编译测试
- 解决 wcf HTTP 无法注册 另一应用程序正在使用 TCP 端口 80
- AD在Windows Server 2003中的更新(中)
- 漫谈度量学习(Distance Metric Learning)那些事儿
- React 18 RC 版本发布啦,生产环境用起来!
- oracle 导库时日志满了,oracle rac 11g 日志占满系统盘导致数据库down掉
- 数据转换之 Number
- 叠加多个装饰器——day13
- 计算机三级网络技术-----DHCP报文分析
- NEXYS4_DDR迪芝伦XC7A100TCSG324-1型,VGA接口显示彩条
- vue axios封装 获取微信公众号用户的openid
- 用mac系统怎么连宽带连接服务器吗,苹果电脑怎么连宽带_MAC系统怎么连接有线宽带-win7之家...
- 阿里巴巴erp【商业化操作系统】什么是erpadmin
- 系统集成项目管理工程师(软考中级)—— 第十七章 项目沟通和干系人管理 笔记分享
- 操作操作操作操作操作操作
- CDH6中的各种目录
热门文章
- nag在逆向中是什么意思_什么叫逆向思维?
- Linux C/C++ 调试的那些“歪门邪道”
- 升级AndrOid4.3,三星S4升级Android 4.3系统后应用停止运行的解决办法图解
- 基于Nginx实现Emby硬件转码
- [翻译论文]A novel embedded min-max approach for feature selection in nonlinear Support Vector Machine cl
- 图像处理——饱和度调整算法(python语言)
- Windows 10 1809 MSDN 版本下载 ed2k 链接
- 古诗词中“草”的意象
- python语句的输出结果_Python 3.x 语句 print(1, 2, 3, sep=':') 的输出结果为 _____
- 全网最全的权限系统设计方案