jmap简介

jmap(JVM Memory Map)一方面可以获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。

选项 作用
-dump 生成dump文件
-finalizerinfo 以ClassLoader为统计口径输出永久代的内存状态信息
-heap 输出整个堆空间的详细信息,包括GC的使用、堆配置信息,以及内存的使用信息等
-histo 输出堆空间中对象的统计信息,包括类、实例数量和合计容量
-permstat 以ClassLoader为统计口径输出永久代的内存状态信息
-F 当虚拟机进程对-dump选项没有任何响应时,强制执行生成dump文件

1)导出内存映像文件

Heap dump又称为堆转储文件,指一个Java进程在某个时间点的内存快照。
注:通常在写Heap dump文件之前,会执行一次Full GC,所以heap dump中保存的都是Full GC后留下的对象信息。

手动导出

[root@bogon ~]# jmap -dump:format=b,file=/opt/1.hprof 12023
Dumping heap to /opt/1.hprof ...
Heap dump file created
[root@bogon ~]# jmap -dump:live,format=b,file=/opt/2.hprof 12023
Dumping heap to /opt/2.hprof ...
Heap dump file created

自动导出

JVM中配置以下参数,当发生OOM时,将导出应用程序的当前堆快照。

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=/opt/3.hprof

2)显示堆内存相关信息

jmap -heap

[root@bogon ~]# jmap -heap 12023
Attaching to process ID 12023, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.144-b01using thread-local object allocation.
Mark Sweep Compact GCHeap Configuration:MinHeapFreeRatio         = 40MaxHeapFreeRatio         = 90MaxHeapSize              = 8388608 (8.0MB)NewSize                  = 2752512 (2.625MB)MaxNewSize               = 2752512 (2.625MB)OldSize                  = 5636096 (5.375MB)NewRatio                 = 2SurvivorRatio            = 8MetaspaceSize            = 21807104 (20.796875MB)CompressedClassSpaceSize = 1073741824 (1024.0MB)MaxMetaspaceSize         = 17592186044415 MBG1HeapRegionSize         = 0 (0.0MB)Heap Usage:
New Generation (Eden + 1 Survivor Space):capacity = 2490368 (2.375MB)used     = 0 (0.0MB)free     = 2490368 (2.375MB)0.0% used
Eden Space:capacity = 2228224 (2.125MB)used     = 0 (0.0MB)free     = 2228224 (2.125MB)0.0% used
From Space:capacity = 262144 (0.25MB)used     = 0 (0.0MB)free     = 262144 (0.25MB)0.0% used
To Space:capacity = 262144 (0.25MB)used     = 0 (0.0MB)free     = 262144 (0.25MB)0.0% used
tenured generation:capacity = 5636096 (5.375MB)used     = 283800 (0.27065277099609375MB)free     = 5352296 (5.104347229003906MB)5.035400390625% used749 interned Strings occupying 50616 bytes.

jmap -histo

jmap -histo  12023

由于jmap将访问堆中的所有对象,为了保证在此过程中不被应用线程干扰,jmap需要借助安全点机制,让所有线程停留在不改变堆中数据的状态。也就是说,由jmap导出的堆快照必定是安全点位置的。这可能导致基于该对快照的分析结果存在偏差。

例如:假设在编译生成的机器码中,某些堆对象的生命周期在两个安全点之间,那么:live选项将无法探知到这些对象。

另外,如果某个线程长时间无法跑到安全点,jmap将一直等下去。与jstat不同的是,垃圾回收器会主动将jstat所需要的摘要数据保存至固定位置之中,而jstat只需直接读取即可。

3)查看系统的ClassLoader信息

jmap -clstats 14237

4)查看堆积在finalizer队列中的对象

JVM命令行监控工具之jmap(JVM Memory Map)相关推荐

  1. 二十、JVM命令行监控工具

    一.概述 1.导致出现性能问题的因素 1.线程控制 2.磁盘读写 3.数据库访问 4.网络I/O 5.垃圾收集 2.为什么需要调优 1.防止出现OOM<关于OOM可以参考> 2.解决OOM ...

  2. JVM命令行监控工具之jhat(Java Heap Analysis Tool)

    jhat简介 jhat命令与jmap命令搭配使用,用于分析jmap生成的heap dump文件(堆转储快照).jhat内置了一个微型的HTTP/HTML服务器,对生成的dump文件分析后,可以在浏览器 ...

  3. java内存溢出排查jstack_Java命令行监控工具(jmap,jstack,jstat,jinfo,jps)

    项目部署上线之后,线上项目是不能轻易修改的,定位问题的难度也会变大.因此监控是非常重要的一个环节,有了监控,我们才能更好的定位系统中的问题,从而排查.监控的工具有很多种, 但是java自带的命令行监控 ...

  4. Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件

    1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...

  5. java jamp cmd,Java命令行监控工具jmap,jstack...

    原标题:Java命令行监控工具jmap,jstack... Java命令行监控工具(jmap,jstack,jstat,jinfo,jps) 项目部署上线之后,线上项目是不能轻易修改的,定位问题的难度 ...

  6. 8.5 JVM命令行监控——jmap

    文章目录 1. jmap描述 2. jmap用法 2.1 导出dump文件 2.2 输出堆内存信息 2.2.1 输出堆空间使用信息 2.2.2 输出对象统计信息 1. jmap描述 jmap全称jvm ...

  7. 每个Java程序员必须知道的5个JVM命令行标志

    不熟悉JVM将不仅会影响应用程序性能,而且当JVM出问题时,尝试修复也会很困难. 本文将介绍一些命令行标志,您可以使用它们来诊断和调优您的Java虚拟机性能. 1.DisableExplicitGC ...

  8. JVM命令之 jstat:查看JVM统计信息

    学习 尚硅谷 宋红康 JVM从入门到精通 的学习笔记 概述 基本语法 其中vmid是进程id号,也就是jps之后看到的前面的号码,如下: option参数 -gc 新生代相关 S0C是第一个幸存者区的 ...

  9. 8.2 JVM命令行监控——jstat

    文章目录 1. jstat介绍 2. jstat用法 2.1 案例一 2.2 案例二 2.3 案例三 2.4 案例四 2.5 案例五 2.6 案例六 2.7 案例七 2.8 案例八 2.9 案例九 2 ...

最新文章

  1. 维密求变,“自救”还是“挖坟”?
  2. 运行时常量池_从String的intern()到常量池
  3. 2010夏令营——还孩子快乐成长的空间
  4. OSI参考模型和TCP/IP参考模型-详解
  5. Python使用pip安装/卸载包
  6. C# 微信服务号模板消息中如何换行
  7. Opencv之读取yuv420P
  8. 二十一天学通C++之使用throw抛出异常
  9. js学习笔记——函数定义
  10. jquery插件整理篇(九)数据验证类
  11. 一分钟了解光纤、单模光纤、多模光纤
  12. 【Tools】HP/惠普v285w 量产工具
  13. php linux 一键部署工具,Linux一键配置工具ezhttp介绍
  14. C语言统计元音字母数量
  15. 网贷风控体系之-风控模型
  16. Mc1.16forge官混教程/教补-#3 物品材质覆盖注意要点[分支1]
  17. [编程神域 C语言浮游塔 第①期] Hello C language world
  18. xmuoj《C++与Python语法入门练习(By郭炜老师)》python参考代码
  19. pwn刷题num15----格式化字符串漏洞
  20. winxp原版系统iso镜像+大白菜启动U盘

热门文章

  1. 客服不在线时候的提示语可以修改吗?怎样才可以修改留言提示内容呢?
  2. Ubuntu声音突然消失,开机正常
  3. “网管师”资格认证简章
  4. 魔兽亡灵序曲《The Dawn》
  5. 微型计算机5 GT 3,GT simulator3手册.pdf
  6. java启动mysq服务_启动java服务器
  7. 程序员跳槽攻略--下篇
  8. Linux之文件系统详解(系统常见目录、磁盘分区、软硬链接)
  9. 那些好用的 VS Code 插件,究竟是如何提高编码效率的?
  10. 鼠标悬浮控制元素隐藏与显示 - css中鼠标的hover状态