8.5 JVM命令行监控——jmap
文章目录
- 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相关推荐
- 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 ...
- Java内存泄露和内存溢出、JVM命令行工具、.JDK可视化工具、Java Class文件
1.Java内存泄露和内存溢出对比 1.1 Java 内存泄露 内存泄露是指一个不再被程序使用的对象或变量还在内存中占用空间. 1.1.1判断内存空间是否符合垃圾回收的标准 在Java语言中,判断一个 ...
- java jamp cmd,Java命令行监控工具jmap,jstack...
原标题:Java命令行监控工具jmap,jstack... Java命令行监控工具(jmap,jstack,jstat,jinfo,jps) 项目部署上线之后,线上项目是不能轻易修改的,定位问题的难度 ...
- heartbeat如何监控程序_一文看懂MyCAT 命令行监控命令,监控调优必备
概述 系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Myca ...
- java内存溢出排查jstack_Java命令行监控工具(jmap,jstack,jstat,jinfo,jps)
项目部署上线之后,线上项目是不能轻易修改的,定位问题的难度也会变大.因此监控是非常重要的一个环节,有了监控,我们才能更好的定位系统中的问题,从而排查.监控的工具有很多种, 但是java自带的命令行监控 ...
- 二十、JVM命令行监控工具
一.概述 1.导致出现性能问题的因素 1.线程控制 2.磁盘读写 3.数据库访问 4.网络I/O 5.垃圾收集 2.为什么需要调优 1.防止出现OOM<关于OOM可以参考> 2.解决OOM ...
- java jhat_java自带命令行工具(jmap,jhat,jinfo)
(1)JMAP 1.作用 打印进程,core文件,和远程进程的共享对象存储map或堆存储器的详细信息. 2.使用jmap [ options ] pid jmap [ options ] execut ...
- Python实现命令行监控北京实时公交之一
开头先放上效果展示 在命令行输入 python bus.py -i,显示app基本信息,如下: 在命令行输入 python bus.py 438,显示北京438路公交车的位置,如下: 红色的B说明在梅 ...
- 每个Java程序员必须知道的5个JVM命令行标志
不熟悉JVM将不仅会影响应用程序性能,而且当JVM出问题时,尝试修复也会很困难. 本文将介绍一些命令行标志,您可以使用它们来诊断和调优您的Java虚拟机性能. 1.DisableExplicitGC ...
最新文章
- 聊聊服务治理中的路由设计
- 定义简单的反射工厂示例
- python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
- Verilog功能模块——AXI4-Lite协议主机-单次写-使用FIFO
- ORACLE 绑定变量用法总结
- 动态规划—最长上升子序列(POJ 1458)
- python numba报错_python – 使用pip升级到numba 0.16会导致错误
- 写失败数据写入成功_深度 | 缓存与数据库一致性问题剖析
- 20210706_IEEEDataPort免费订阅
- 怀旧服服务器物品栏在哪里,魔兽世界怀旧服:祈福服务器的真实情况,装备不贵,玩家确实不多...
- MATLAB TIFF转Shape、TIFF和Shape的读写
- 【HTML】HTML网页设计---海贼王动漫网页设计
- 20210918 【双击excel文件,看不到文件内容,只有灰蒙蒙的一片】的解决办法
- 高尔顿的表哥是谁? ^-^ 理解线性与回归---人工智能工作笔记0017
- 极大似然估计详解,写的太好了!
- Linux 中新下载的FireFox(火狐浏览器)无法运行的解决方法
- win10自动修复处理方法
- 【Linux上安装Scala】
- 施工部署主要不包括_施工部署包括什么?
- a标签的带参传值和form表单的带参