jmap命令介绍jmap(JavaVirtualMachineMemoryMap)是JDK提供的一个命令行工具,可以生成Java虚拟机的heapdump快照转储文件。另外jmap命令还可以查看finalize执行队列、Java堆和方法区的详细信息,比如空间使用情况、当前使用的是什么垃圾收集器、生成状态等等。和jinfo命令一样,在Windows系统上使用它仍然有一些限制。在没有dbgeng.dll的Windows系统中,jinfo命令必须安装Windows调试工具才能正常工作,并且PATH环境变量中应包含jvm.dll的位置。jmap命令参数命令语法:jmap[options]pid命令参数说明:option:jmap命令的可选参数。如果不指定该参数,jinfo命令将显示Java虚拟机进程的内存映像信息,如下图所示:pid:要打印其配置信息的Java虚拟机的进程ID。要获取正在运行的Java虚拟机进程的列表,请使用ps命令(在Linux系统上)或tasklist命令(在Windows系统上),或者如果Java虚拟机进程未在单独的docker实例中运行,则使用jps命令。选项有哪些参数?让我们来看看。-heap显示Java堆的以下信息:指定垃圾收集算法的信息,包括垃圾收集算法的名称和垃圾收集算法的详细信息。堆配置信息,可以通过命令行选项指定,也可以由Java虚拟机根据服务器配置选择。堆内存空间使用信息,包括分代状态、每代总容量、已用内存、可用内存。如果一个代被进一步细分(例如年轻代),则包含被细分空间的内存使用信息。例如:-histo[:live]显示Java堆中对象的统计信息,包括:对象个数、占用内存大小(单位:byte)和类全限定名。例如:要获得对象的大小,请将其总大小除以该类型对象的数量。如果指定了live参数,则只计算存活的对象。例如:-clstats显示Java堆元空间中类加载器的统计信息,包括:class_loader:Java虚拟机运行时,类加载器对象的地址classloaderloaded所有类的元数据占用的字节数parent_loader:父类加载器对象的地址,如果不显示为null。alive:是否存活,表示类加载器对象是否会被垃圾回收。type:此类加载器的类名。例如:-finalizerinfo显示F-Queue中等待Finalizer线程执行finalize方法的对象。例如:-dump:[live,]format=b,file=
