简介

jmap是JDK中提供的一个用来监视进程运行中的jvm物理内存的占用情况的工具。该进程内存内,所有对象的情况,例如产生了哪些对象,对象数量。当系统崩溃时,jmap 可以从core文件或进程中获得内存的具体匹配情况,包括Heap size, Perm size等。

使用jmap会影响线上运行的应用,所以尽量不要在线上执行此命令。如果想dump堆信息,可以使用gcore命令,比jmap -dump快。

使用

jmap的使用很简单,可以通过以下命令查看。

jmap -h

Usage:

jmap [option]

(to connect to running process)

jmap [option]

(to connect to a core file)

jmap [option] [server_id@]

(to connect to remote debug server)

.......

案例

查看堆heap占用情况

jmap -heap 90099

Attaching to process ID 90099, please wait...

Debugger attached successfully.

Server compiler detected.

JVM version is 24.71-b01

using thread-local object allocation.

Parallel GC with 4 thread(s) #垃圾回收的方式

Heap Configuration: #堆配置信息

MinHeapFreeRatio = 0

MaxHeapFreeRatio = 100

MaxHeapSize = 2147483648 (2048.0MB)

NewSize = 1310720 (1.25MB)

MaxNewSize = 17592186044415 MB

OldSize = 5439488 (5.1875MB)

NewRatio = 2

SurvivorRatio = 8

PermSize = 21757952 (20.75MB)

MaxPermSize = 85983232 (82.0MB)

G1HeapRegionSize = 0 (0.0MB)

Heap Usage:

PS Young Generation

Eden Space:

capacity = 34603008 (33.0MB)

used = 9773032 (9.320289611816406MB)

free = 24829976 (23.679710388183594MB)

28.24330185398911% used

From Space:

capacity = 5242880 (5.0MB)

used = 0 (0.0MB)

free = 5242880 (5.0MB)

0.0% used

To Space:

capacity = 5242880 (5.0MB)

used = 0 (0.0MB)

free = 5242880 (5.0MB)

0.0% used

PS Old Generation

capacity = 89128960 (85.0MB)

used = 0 (0.0MB)

free = 89128960 (85.0MB)

0.0% used

PS Perm Generation

capacity = 22020096 (21.0MB)

used = 2666808 (2.5432662963867188MB)

free = 19353288 (18.45673370361328MB)

12.110791887555804% used

677 interned Strings occupying 44048 bytes.

查看对象占用内存情况

$ jmap -histo:live 96176

num #instances #bytes class name

----------------------------------------------

1: 5948 766656

2: 5948 679168

3: 401 474448

4: 365 289664

5: 401 276112

6: 562 93176 [B

7: 900 86256 [C

8: 463 45328 java.lang.Class

9: 653 43216 [[I

10: 608 37144 [S

11: 45 24480

输出内容的一些说明:

[C is a char[]

[S is a short[]

[I is a int[]

[B is a byte[]

[[I is a int[][]

上面的输出中[C对象占用Heap这么多,往往跟String有关,String其内部使用final char[]数组来保存数据的。

constMethodKlass/ methodKlass/ constantPoolKlass/ constantPoolCacheKlass/ instanceKlassKlass/ methodDataKlass

与Classloader相关,常驻与Perm区。

导出堆信息

可以使用jmap把堆信息导出,并使用可视化工具mat分析。导出的命令如下:

$ jmap -dump:format=b,file=a.dmp 96185

Dumping heap to /Users/canglong/dev/test/a.dmp ...

Heap dump file created

技术交流

java jmap_Java常用分析工具之jmap相关推荐

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

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

  2. 软文推荐:常用 Java 静态代码分析工具的分析与比较

    http://www.uml.org.cn/j2ee/201107114.asp 常用 Java 静态代码分析工具的分析与比较 作者:赵卓 , 发布于2011-07-11 , IBM 简介: 本文首先 ...

  3. java虚拟机常用命令工具

    java虚拟机常用命令工具 博客分类: 虚拟机 虚拟机jvmjava  一.概述            程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统日志.堆dump文件.线程d ...

  4. OOM分析(1) Android 源,如何分析android的OOM,与java静态代码分析工具

    用MAT分析OOM 很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause.根本原因都在于本应该自动释放的资源,因为代码的错误,而导致某些对象一直被引用(Reference),例 ...

  5. 如何分析android的OOM,与java静态代码分析工具

    2019独角兽企业重金招聘Python工程师标准>>> 用MAT分析OOM 很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause.根本原因都在于本应该自动释放 ...

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

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

  7. Java虚拟机------JVM分析工具

    主要介绍JVM的分析工具: jps 1234567891011121314151617 jps:Java Virtual Machine Process Status Tool http://docs ...

  8. 性能优化之内存泄露(Memory Leak)常用分析工具(另3种)

    1 LeakCanary(最常用,能监控整个App内存泄漏情况) 1.1 使用LeakCanary // 仅在debug包启用LeakCanary debugImplementation 'com.s ...

  9. java分析内存泄露工具_Eclipse Memory Analyzer(Java内存泄漏分析工具)

    概述 一个大型的Java项目也许从开发到测试结束并未发现一些大的问题,但是在生产环境中还是会出现一些非常棘手的问题,如内存泄漏,遇到这样的问题对于一个经验尚浅的开发人员来说难度非常大,好的一点是JVM ...

最新文章

  1. html 实现动态在线预览word、excel、pdf等文件
  2. python中的apply(),applymap(),map() 的用法和区别
  3. Struts2的标签库(一)之控制标签
  4. opacity 设置不透明度、visibility 设置是否可见、transition 设置过渡动画
  5. linux等待队列wait_queue_head_t和wait_queue_t
  6. linux 使用秘钥认证,linux 密钥验证登录
  7. asterisk sip服务器搭建与配置
  8. 百度竞价广告的URL设置
  9. html自动幻灯片代码,简单常用的幻灯片播放实现代码
  10. 详解电源反接使用MOS管保护电路原理及其优势
  11. Linux搭建小型服务器——文件共享以及邮件服务器
  12. 如何用 Telemetry 测试移动 APP H5性能?
  13. Elastic 7.10 发布了可搜索快照的公测版和 Kibana Lens 的正式版
  14. 画意围棋助手(导入按键精灵中使用)已发布,可下载
  15. 等级保护测评经验分享干货
  16. 2021-11-15 基于音乐商店NetMusicShop的复杂查询(二)
  17. 广东首例!涉“人脸识别”公民个人信息保护民事公益诉讼案宣判
  18. AE基础教程第一阶段——09快速预览
  19. VMware 15Pro安装Mac OS系统教程 附资源下载
  20. 3.设计模式--适配器模式(adapter模式)

热门文章

  1. 华为全屋智能空间 3.0 评测
  2. 脱壳工具:frida-dexdump的使用详解
  3. 共享的计算机用户账户限制,win7不能访问共享文件夹用户账户限制如何解决
  4. Winform右键菜单contextMenuStrip控件的使用
  5. Linux系统 05 python环境配置02 之 virtualenv与virtualenvwrappe以及freeze
  6. 优秀的技术管理者需要具备哪些能力?
  7. think PHP M(),thinkPHP的用法之M
  8. 网络安全毕业设计题目大全
  9. 科大讯飞/百度/阿里/腾讯(BAT)智能语音识别(ASR)性能对比选择预计价格分享
  10. python爬取某网站上的图片