文章目录

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

1. jmap描述

jmap全称jvm memory map,该命令有两个作用:第一个是可以获取堆dump文件,dump文件是堆转储快照的二进制文件文件;第二还可以获取堆的使用情况、堆中对象统计信息以及类加载信息等。

2. jmap用法

2.1 导出dump文件

命令:jmap -dump:format=b, file=文件名 pid 或者 jmap -dump:live,format=b,file=文件名 pid
其中第一条命令表示导出堆中所有对象的dump文件,第二条命令表示只导出存活对象的dump文件。通常Heap dump文件时都会触发一次FULL GC,所以dump文件中都是保存的FULL GC后的对象信息。

E:\study\tool\javaSE1.8\jdk1.8\bin>jmap -dump:live,format=b,file=d:\dump 9712
Dumping heap to D:\dump ...
Heap dump file created

另外除上述方式外,还可以在JVM启动时设置参数,当发生OOM异常时自动生成dump文件,需设置的JVM参数为:-XX:+HeapDumpOnOutOfMemoryError, -XX:HeapDumpPath=文件名

2.2 输出堆内存信息

2.2.1 输出堆空间使用信息

命令:jmap -heap pid输出堆空间的详细信息,包括GC的使用情况、堆配置信息以及内存的使用信息等。

E:\study\tool\javaSE1.8\jdk1.8\bin>jmap -heap 9712 > d:\test1

test1文件内容如下所示,列举出了堆空间配置信息以及使用情况。

Attaching to process ID 9712, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.31-b07using thread-local object allocation.
Parallel GC with 4 thread(s)Heap Configuration:MinHeapFreeRatio         = 0MaxHeapFreeRatio         = 100MaxHeapSize              = 3187671040 (3040.0MB)NewSize                  = 66060288 (63.0MB)MaxNewSize               = 1062207488 (1013.0MB)OldSize                  = 133169152 (127.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 = 50331648 (48.0MB)used     = 0 (0.0MB)free     = 50331648 (48.0MB)0.0% used
From Space:capacity = 7864320 (7.5MB)used     = 0 (0.0MB)free     = 7864320 (7.5MB)0.0% used
To Space:capacity = 7864320 (7.5MB)used     = 0 (0.0MB)free     = 7864320 (7.5MB)0.0% used
PS Old Generationcapacity = 51904512 (49.5MB)used     = 1069128 (1.0195999145507812MB)free     = 50835384 (48.48040008544922MB)2.0597978071732954% used3089 interned Strings occupying 275096 bytes.

2.2.2 输出对象统计信息

命令:jmap -histo pid出堆中对象的统计信息,包括类、实例数量和总计容量,而jmap -histo:live pid表示存活对象的统计信息。

E:\study\tool\javaSE1.8\jdk1.8\bin>jmap -histo:live 9712 > d:\test2

test2文件中统计的对象统计信息如下所示

 num     #instances         #bytes  class name
----------------------------------------------1:          4597         482296  [C2:           421         129672  [B3:          4228         101472  java.lang.String4:           686          72784  java.lang.Class5:           639          41784  [Ljava.lang.Object;6:           785          31400  java.util.TreeMap$Entry7:           183          20392  [I8:           236          11784  [Ljava.lang.String;9:           332          10624  java.util.HashMap$Node10:           107           6848  java.net.URL11:           108           4320  java.lang.ref.SoftReference12:            20           4160  [Ljava.util.HashMap$Node;13:           256           4096  java.lang.Integer14:           118           3776  java.util.Hashtable$Entry15:           110           3520  java.util.concurrent.ConcurrentHashMap$Node16:           104           3512  [[C17:             7           2632  java.lang.Thread18:            52           2496  sun.misc.URLClassPath$JarLoader19:            29           2320  [Ljava.util.WeakHashMap$Entry;20:            58           2320  java.util.LinkedHashMap$Entry21:            26           2080  java.lang.reflect.Constructor22:            15           1968  [Ljava.util.concurrent.ConcurrentHashMap$Node;23:            39           1872  sun.util.locale.LocaleObjectCache$CacheEntry24:            45           1800  java.lang.ref.Finalizer25:            26           1664  java.util.jar.JarFile26:            17           1632  java.util.jar.JarFile$JarFileEntry27:            28           1568  sun.nio.cs.UTF_8$Encoder28:             1           1560  [[B29:            58           1392  java.io.ExpiringCache$Entry30:            29           1392  java.util.WeakHashMap31:            84           1344  java.lang.Object32:            28           1344  java.util.HashMap33:            20           1280  java.util.concurrent.ConcurrentHashMap34:            30           1200  java.io.ObjectStreamField35:             9           1184  [Ljava.util.Hashtable$Entry;36:            36           1152  java.lang.ref.ReferenceQueue37:             1           1040  [Ljava.lang.Integer;38:            26            832  java.util.zip.ZipCoder39:            19            760  sun.util.locale.BaseLocale$Key40:            26            624  java.util.ArrayDeque41:            19            608  java.io.File42:            38            608  java.lang.ref.ReferenceQueue$Lock43:            19            608  java.util.Locale44:            19            608  sun.util.locale.BaseLocale45:            12            480  java.security.AccessControlContext46:            10            480  java.util.zip.Inflater47:            19            456  java.util.Locale$LocaleKey48:             1            432  [[[C49:            18            432  sun.misc.MetaIndex50:            17            408  java.util.jar.Attributes$Name51:             1            384  com.intellij.rt.execution.application.AppMainV2$152:             1            384  java.lang.ref.Finalizer$FinalizerThread53:             6            384  java.nio.DirectByteBuffer54:             1            376  java.lang.ref.Reference$ReferenceHandler55:            13            360  [Ljava.io.ObjectStreamField;56:            19            360  [Ljava.lang.Class;57:             6            336  java.nio.DirectLongBufferU58:             4            320  [S59:             3            312  [D60:            13            312  sun.reflect.NativeConstructorAccessorImpl61:             9            288  java.lang.OutOfMemoryError62:             5            280  sun.util.calendar.ZoneInfo63:            11            264  java.util.ArrayList64:             8            256  java.util.Vector65:             3            240  [Ljava.lang.ThreadLocal$ThreadLocalMap$Entry;66:             5            240  java.util.Hashtable67:            10            240  java.util.zip.ZStreamRef68:             2            216  [J69:            13            208  sun.reflect.DelegatingConstructorAccessorImpl70:             5            200  java.security.ProtectionDomain71:             5            200  java.util.WeakHashMap$Entry72:             6            192  java.lang.ThreadLocal$ThreadLocalMap$Entry73:             4            192  java.util.Properties74:             4            192  java.util.TreeMap75:             3            168  java.util.ResourceBundle$CacheKey76:             2            160  [[Ljava.lang.String;77:             4            160  java.io.FileDescriptor78:             4            160  java.lang.ClassLoader$NativeLibrary79:             5            160  java.security.CodeSource80:             5            160  sun.util.locale.provider.LocaleProviderAdapter$Type81:             3            144  java.nio.HeapByteBuffer82:             6            144  java.util.LinkedList$Node83:             3            144  java.util.ResourceBundle$BundleReference84:             6            144  sun.misc.PerfCounter85:             2            128  java.io.ExpiringCache$186:             4            128  java.util.LinkedList87:             4            128  java.util.Stack88:             1            120  java.net.SocksSocketImpl89:             5            120  java.util.Collections$UnmodifiableRandomAccessList90:             5            120  sun.misc.FloatingDecimal$PreparedASCIIToBinaryBuffer91:             3            120  sun.misc.URLClassPath92:             2            112  java.lang.Package93:             2            112  java.util.LinkedHashMap94:             1             96  [Ljava.lang.invoke.MethodType;95:             4             96  java.lang.RuntimePermission96:             2             96  java.lang.ThreadGroup97:             3             96  java.util.ResourceBundle$LoaderReference98:             3             96  sun.net.spi.DefaultProxySelector$NonProxyInfo99:             2             96  sun.nio.cs.StreamEncoder100:             1             88  java.net.DualStackPlainSocketImpl101:             1             88  sun.misc.Launcher$AppClassLoader102:             1             88  sun.misc.Launcher$ExtClassLoader103:             1             80  [Ljava.lang.invoke.LambdaForm;104:             5             80  [Ljava.security.Principal;105:             2             80  java.io.BufferedWriter106:             2             80  java.io.ExpiringCache107:             5             80  java.lang.ThreadLocal108:             2             80  java.lang.invoke.MethodType109:             5             80  java.security.ProtectionDomain$Key110:             2             80  sun.misc.FloatingDecimal$BinaryToASCIIBuffer111:             3             72  java.lang.ThreadLocal$ThreadLocalMap112:             1             72  java.lang.invoke.MethodTypeForm113:             3             72  java.net.Proxy$Type114:             3             72  java.util.Arrays$ArrayList115:             3             72  java.util.Collections$SynchronizedSet116:             1             72  java.util.ResourceBundle$RBClassLoader117:             3             72  sun.misc.FloatingDecimal$ExceptionalBinaryToASCIIBuffer118:             1             72  sun.util.locale.provider.JRELocaleProviderAdapter119:             1             64  [F120:             2             64  [Ljava.lang.Thread;121:             2             64  java.io.FileOutputStream122:             2             64  java.io.FilePermission123:             2             64  java.io.PrintStream124:             2             64  java.lang.VirtualMachineError125:             2             64  java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry126:             2             64  java.lang.ref.ReferenceQueue$Null127:             2             64  java.security.BasicPermissionCollection128:             2             64  java.security.Permissions129:             4             64  java.util.HashSet130:             1             56  java.lang.invoke.MemberName131:             2             48  java.io.BufferedOutputStream132:             1             48  java.io.BufferedReader133:             2             48  java.io.File$PathStatus134:             2             48  java.io.FilePermissionCollection135:             2             48  java.io.OutputStreamWriter136:             2             48  java.net.InetAddress$Cache137:             2             48  java.net.InetAddress$Cache$Type138:             1             48  java.net.SocketInputStream139:             1             48  java.nio.HeapCharBuffer140:             2             48  java.nio.charset.CoderResult141:             3             48  java.nio.charset.CodingErrorAction142:             2             48  sun.misc.NativeSignalHandler143:             2             48  sun.misc.Signal144:             3             48  sun.net.www.protocol.jar.Handler145:             1             48  sun.nio.cs.StreamDecoder146:             1             48  sun.nio.cs.US_ASCII$Decoder147:             1             48  sun.util.locale.provider.LocaleResources$ResourceReference148:             1             40  [Lsun.util.locale.provider.LocaleProviderAdapter$Type;149:             1             40  java.io.BufferedInputStream150:             1             40  java.util.ResourceBundle$1151:             1             40  sun.nio.cs.StandardCharsets$Aliases152:             1             40  sun.nio.cs.StandardCharsets$Cache153:             1             40  sun.nio.cs.StandardCharsets$Classes154:             1             40  sun.nio.cs.UTF_8$Decoder155:             1             40  sun.nio.cs.ext.ExtendedCharsets156:             1             32  [Ljava.lang.OutOfMemoryError;157:             2             32  [Ljava.lang.StackTraceElement;158:             1             32  [Ljava.lang.ThreadGroup;159:             1             32  [Ljava.net.Proxy$Type;160:             1             32  java.io.FileInputStream161:             1             32  java.io.WinNTFileSystem162:             1             32  java.lang.ArithmeticException163:             2             32  java.lang.Boolean164:             1             32  java.lang.NullPointerException165:             1             32  java.net.Socket166:             2             32  java.nio.ByteOrder167:             1             32  java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl168:             1             32  sun.instrument.InstrumentationImpl169:             1             32  sun.nio.cs.StandardCharsets170:             1             32  sun.util.locale.provider.LocaleResources171:             1             32  sun.util.locale.provider.LocaleServiceProviderPool172:             1             24  [Ljava.io.File$PathStatus;173:             1             24  [Ljava.lang.invoke.MethodHandle;174:             1             24  [Ljava.net.InetAddress$Cache$Type;175:             1             24  [Ljava.security.ProtectionDomain;176:             1             24  [Lsun.launcher.LauncherHelper;177:             1             24  java.io.InputStreamReader178:             1             24  java.lang.StringBuilder179:             1             24  java.lang.invoke.LambdaForm$NamedFunction180:             1             24  java.lang.invoke.MethodType$ConcurrentWeakInternSet181:             1             24  java.lang.reflect.ReflectPermission182:             1             24  java.net.Inet4Address183:             1             24  java.net.Inet6AddressImpl184:             1             24  java.net.InetAddress$InetAddressHolder185:             1             24  java.net.Proxy186:             1             24  java.util.BitSet187:             1             24  java.util.Collections$EmptyMap188:             1             24  java.util.Collections$SetFromMap189:             1             24  java.util.Locale$Cache190:             1             24  java.util.ResourceBundle$Control$CandidateListCache191:             1             24  sun.instrument.TransformerManager192:             1             24  sun.launcher.LauncherHelper193:             1             24  sun.misc.JarIndex194:             1             24  sun.misc.URLClassPath$FileLoader195:             1             24  sun.nio.cs.ISO_8859_1196:             1             24  sun.nio.cs.ThreadLocalCoders$1197:             1             24  sun.nio.cs.ThreadLocalCoders$2198:             1             24  sun.nio.cs.US_ASCII199:             1             24  sun.nio.cs.UTF_16200:             1             24  sun.nio.cs.UTF_16BE201:             1             24  sun.nio.cs.UTF_16LE202:             1             24  sun.nio.cs.UTF_8203:             1             24  sun.nio.cs.ext.GBK204:             1             24  sun.util.locale.BaseLocale$Cache205:             1             24  sun.util.locale.provider.TimeZoneNameProviderImpl206:             1             16  [Ljava.lang.Throwable;207:             1             16  [Ljava.security.cert.Certificate;208:             1             16  [Lsun.instrument.TransformerManager$TransformerInfo;209:             1             16  java.io.FileDescriptor$1210:             1             16  java.lang.CharacterData00211:             1             16  java.lang.CharacterDataLatin1212:             1             16  java.lang.Runtime213:             1             16  java.lang.String$CaseInsensitiveComparator214:             1             16  java.lang.System$2215:             1             16  java.lang.Terminator$1216:             1             16  java.lang.invoke.MemberName$Factory217:             1             16  java.lang.ref.Reference$Lock218:             1             16  java.lang.reflect.ReflectAccess219:             1             16  java.net.InetAddress$2220:             1             16  java.net.URLClassLoader$7221:             1             16  java.nio.Bits$1222:             1             16  java.nio.charset.CoderResult$1223:             1             16  java.nio.charset.CoderResult$2224:             1             16  java.security.ProtectionDomain$1225:             1             16  java.security.ProtectionDomain$3226:             1             16  java.util.Collections$EmptyList227:             1             16  java.util.Collections$EmptySet228:             1             16  java.util.Hashtable$EntrySet229:             1             16  java.util.ResourceBundle$Control230:             1             16  java.util.WeakHashMap$KeySet231:             1             16  java.util.concurrent.atomic.AtomicInteger232:             1             16  java.util.jar.JavaUtilJarAccessImpl233:             1             16  java.util.zip.ZipFile$1234:             1             16  sun.misc.ASCIICaseInsensitiveComparator235:             1             16  sun.misc.FloatingDecimal$1236:             1             16  sun.misc.Launcher237:             1             16  sun.misc.Launcher$Factory238:             1             16  sun.misc.Perf239:             1             16  sun.misc.Unsafe240:             1             16  sun.net.spi.DefaultProxySelector241:             1             16  sun.net.www.protocol.file.Handler242:             1             16  sun.reflect.ReflectionFactory243:             1             16  sun.util.calendar.Gregorian244:             1             16  sun.util.locale.provider.AuxLocaleProviderAdapter$NullProvider245:             1             16  sun.util.locale.provider.SPILocaleProviderAdapter246:             1             16  sun.util.locale.provider.TimeZoneNameUtility$TimeZoneNameGetter247:             1             16  sun.util.resources.LocaleData248:             1             16  sun.util.resources.LocaleData$LocaleDataResourceBundleControl
Total         14255         990352

另外除了上述常用指令所示,还有不常用的如下命令:

  • jmap -finailizerinfo pid 输出在F-Queue中等待Finalizer线程执行finalize方法的对象,只在Linux/Solaris平台有效;
  • jmap -permstat pid 以ClassLoader为统计口径显示永久代(JDK7之前版本)的内存状态,只在Linux/Solaris平台有效;
  • jmap -dump -F pid 当dump文件没相应时,强制生成dump文件,只在Linux/Solaris平台有效。

8.5 JVM命令行监控——jmap相关推荐

  1. 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 ...

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

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

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

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

  4. heartbeat如何监控程序_一文看懂MyCAT 命令行监控命令,监控调优必备

    概述 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...

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

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

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

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

  7. java jhat_java自带命令行工具(jmap,jhat,jinfo)

    (1)JMAP 1.作用 打印进程,core文件,和远程进程的共享对象存储map或堆存储器的详细信息. 2.使用jmap [ options ] pid jmap [ options ] execut ...

  8. Python实现命令行监控北京实时公交之一

    开头先放上效果展示 在命令行输入 python bus.py -i,显示app基本信息,如下: 在命令行输入 python bus.py 438,显示北京438路公交车的位置,如下: 红色的B说明在梅 ...

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

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

最新文章

  1. 聊聊服务治理中的路由设计
  2. 定义简单的反射工厂示例
  3. python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
  4. Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO
  5. ORACLE 绑定变量用法总结
  6. 动态规划—最长上升子序列(POJ 1458)
  7. python numba报错_python – 使用pip升级到numba 0.16会导致错误
  8. 写失败数据写入成功_深度 | 缓存与数据库一致性问题剖析
  9. 20210706_IEEEDataPort免费订阅
  10. 怀旧服服务器物品栏在哪里,魔兽世界怀旧服:祈福服务器的真实情况,装备不贵,玩家确实不多...
  11. MATLAB TIFF转Shape、TIFF和Shape的读写
  12. 【HTML】HTML网页设计---海贼王动漫网页设计
  13. 20210918 【双击excel文件,看不到文件内容,只有灰蒙蒙的一片】的解决办法
  14. 高尔顿的表哥是谁? ^-^ 理解线性与回归---人工智能工作笔记0017
  15. 极大似然估计详解,写的太好了!
  16. Linux 中新下载的FireFox(火狐浏览器)无法运行的解决方法
  17. win10自动修复处理方法
  18. 【Linux上安装Scala】
  19. 施工部署主要不包括_施工部署包括什么?
  20. a标签的带参传值和form表单的带参

热门文章

  1. nonnull, nullable
  2. 创新的S2B2B电商系统网站解决方案:为家居用品行业带来更多商机
  3. NWU高清信纸+稿纸下载
  4. [CoffeeScript]咖啡,入门
  5. 和数区块链技术投身Web3.0脚踏实地变革中蕴含机遇
  6. 【Python用QQ邮箱发邮件】
  7. Redis6-过期淘汰、经典数据类型的实现
  8. 游戏米果公司向离职员工索赔百万
  9. mysql ssl jdbc_Mysql启用SSL以及JDBC连接Mysql配置
  10. 阴阳对优化算法Yin YangPairOptimizationYYPO 2016