JVM 内存监控之 jmap

jmap命令是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用 jmap -help 命令可以查看jmap的具体用法,如下所示:

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)
where 

通过jmap -help命令可以看到map有如下用法:jmap [ options ] pid,jmap [ options ] executable core和map [ options ] [ server-id@ ] remote-hostname-or-IP。其中pid为要打印的堆栈的Java进程ID,executable为生成核心转储的Java可执行文件,core为要打印堆栈跟踪的核心文件,[ server-id@ ] remote-hostname-or-IP为要远程调试的hostname或者ip地址。下面是options参数的具体介绍:

-h,-help 打印jstack用法的信息
-Jflag 传递jmap运行时所需要的jvm参数
-clstats 打印classload信息. 包含每个classloader的名字,活泼性,地址,父classloader和加载的class数量. 
-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量. 
-heap 打印heap的概要信息,GC使用的算法,heap(堆)的配置及JVM堆内存的使用情况.
-finalizeinfo 打印正等候回收的对象的信息
-dump:[live,] format=b,file=filename 使用hprof二进制形式,输出jvm的heap内容到文件.  live子选项是可选的,假如指定live选项,那么只输出存活的对象到文件. 
-F 在pid没有相应的时候强制使用-dump或者-histo参数. 在这个模式下,live子参数无效. 
no option 如果没有使用任何选项,jmap命令将打印共享对象映射。对于加载到目标JVM中的每个共享对象,将打印共享对象文件的起始地址、映射大小和完整路径。此行为类似于Oracle Solaris pmap实用程序。

更多详细信息可以参考官方文档jmap.更多时候我们使用 -heap, -clstats,-finalizeinfo,-dump:[live,], formate=b,file=filname这几个先选项。

你可能感兴趣的:(Java,JVM,知识总结,java,jvm,内存泄漏,内存优化,堆栈)