栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

3年经验,没用过jmap?

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

3年经验,没用过jmap?

前言

我们在前面3年经验,没用过jstack?中学习了jstack相关使用介绍,这里再和大家一起学习下另外一个重要的命令。jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。常见参数如下

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

下面直接进入主题

jmap pid

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

[root@t089089 study]# /usr/java/jdk1.8.0_111/bin/jmap 6324
Attaching to process ID 6324, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.111-b14
0x0000000000400000	7K	/usr/java/jdk1.8.0_111/bin/java
0x0000003240c00000	91K	/lib64/libgcc_s-4.4.7-20120601.so.1
0x0000003332e00000	1927K	/usr/lib64/libcrypto.so.1.0.1e
0x0000003333200000	435K	/usr/lib64/libssl.so.1.0.1e
0x0000003351e00000	153K	/lib64/ld-2.12.so
0x0000003352200000	22K	/lib64/libdl-2.12.so
0x0000003352600000	1881K	/lib64/libc-2.12.so
0x0000003352a00000	142K	/lib64/libpthread-2.12.so
0x0000003352e00000	46K	/lib64/librt-2.12.so
0x0000003353200000	585K	/lib64/libm-2.12.so
0x0000003353600000	88K	/lib64/libz.so.1.2.3
0x0000003354600000	111K	/lib64/libresolv-2.12.so
jmap -heap pid

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

/usr/java/jdk1.8.0_111/bin/jmap -heap  6324
Attaching to process ID 6324, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.111-b14

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 1006632960 (960.0MB)
   NewSize                  = 20971520 (20.0MB)
   MaxNewSize               = 335544320 (320.0MB)
   OldSize                  = 41943040 (40.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   metaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxmetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 179306496 (171.0MB)
   used     = 79721312 (76.02816772460938MB)
   free     = 99585184 (94.97183227539062MB)
   44.46091679801718% used
From Space:
   capacity = 11010048 (10.5MB)
   used     = 0 (0.0MB)
   free     = 11010048 (10.5MB)
   0.0% used
To Space:
   capacity = 13107200 (12.5MB)
   used     = 0 (0.0MB)
   free     = 13107200 (12.5MB)
   0.0% used
PS Old Generation
   capacity = 55574528 (53.0MB)
   used     = 15703056 (14.975601196289062MB)
   free     = 39871472 (38.02439880371094MB)
   28.25585131375295% used

16698 interned Strings occupying 1521264 bytes.
jmap -histo:live pid

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

/usr/java/jdk1.8.0_111/bin/jmap -histo:live  6324| head -n 10

 num     #instances         #bytes  class name
----------------------------------------------
   1:         35548        3532360  [C
   2:          4423        1070328  [B
   3:          8139         898536  java.lang.Class
   4:         35463         851112  java.lang.String
   5:         23879         764128  java.util.concurrent.ConcurrentHashMap$Node
   6:          9527         542080  [Ljava.lang.Object;
   7:          4549         436824  [I
jmap -dump:format=b,file=heapdump.phrof pid

生成堆转储快照dump文件。以hprof二进制格式转储Java堆到指定filename的文件中。live子选项是可选的。如果指定了live子选项,堆中只有活动的对象会被转储。堆快照是二进制文件,我们需要专门的分析工具,jprofiler,BM Heap Analyzer都可以很好的分析堆数据,这个命令执行的时候,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,会暂停应用, 所以线上系统慎用。之前在

记一次生产环境服务节点掉线排查中,服务的故障节点已经从Eureka下线,不影响用户使用,为了排查问题,所以运维在重启节点之前执行了dump。

/usr/java/jdk1.8.0_111/bin/jmap -dump:format=b,file=heapdump.phrof  6324
Dumping heap to /usr/server/study/heapdump.phrof ...
Heap dump file created

format=b指定文件以二进制格式保存,file=heapdump.phrof指定快照存储文件位置。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781212.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号