欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

优化JVM性能的秘密武器:深入理解与运用jmap

最编程 2024-02-10 15:32:18
...

jmap是JDK自带的工具软件,主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。可以使用jmap生成Heap Dump,map是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。

jmap用法

jmap命令


参数:

option: 选项参数。

pid: 需要打印配置信息的进程ID。

executable: 产生核心dump的Java可执行文件。

core: 需要打印配置信息的核心文件。

server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。

remote server IP or hostname 远程调试服务器的IP地址或主机名。

option

no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。

heap: 显示Java堆详细信息

histo[:live]: 显示堆中对象的统计信息

clstats:打印类加载器信息

finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象

dump:<dump-options>:生成堆转储快照

F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效.

help:打印帮助信息

J<flag>:指定传递给运行jmap的JVM的参数

命令一:查看java 堆(heap)使用情况,执行命令:jmap -heap pid

显示Java堆详细信息


命令二:no option:jmap pid

no option


命令三:显示堆中对象的统计信息 jmap -histo:live pid

显示堆中对象的统计信息


命令四:打印类加载器信息,jmap -clstats pid

命令五:生成堆转储快照dump文件,jmap -dump:format=b,file=heapdump.phrof pid,

这个命令执行,JVM会将整个heap的信息dump写入到一个文件,heap如果比较大的话,就会导致这个过程比较耗时,并且执行的过程中为了保证dump的信息是可靠的,所以会暂停应用, 线上系统慎用。