
JVM性能调优经常要查看JVM内存使用情况,下面我就重点来详解几种查看JVM内存使用情况方式@mikechen
1.JConsole命令
JConsole是Java自带的一个监控和管理Java应用程序的工具,可以用来监控JVM的各种指标,包括内存使用情况。
进入Java的安装目录下的bin目录,然后运行jconsole.exe就可以运行JConsole了。

在jconsole的界面中,选择”Remote Process”并输入进程的host和port,然后点击连接即可。

在jconsole的”内存”选项卡下,可以查看堆内存和非堆内存的使用情况。

2.jcmd命令
使用jcmd命令可以列出当前所有Java进程,使用jcmd命令可以列出当前所有Java进程。
命令:
jcmd <PID> VM.native_memory summary
例如要查看进程号为12345的Java进程的内存使用情况,可以使用以下命令:
jcmd 12345 VM.native_memory summary jcmd 12345 VM.memory_pool jcmd 12345 VM.flags jcmd 12345 GC.heap_infos
输出:
12345:
Native Memory Tracking:
Total: reserved=151197KB, committed=130593KB
- Java Heap (reserved=1048576KB, committed=1048576KB)
(mmap: reserved=1048576KB, committed=1048576KB)
Heap Memory Usage:
PS Young Generation
Eden Space:
capacity = 1572864 (1.5MB)
used = 1205864 (1.1495361328125MB)
free = 366000 (0.3504638671875MB)
76.58130804697658% used
PS Old Generation
capacity = 10485760 (10.0MB)
used = 0 (0.0MB)
free = 10485760 (10.0MB)
0.0% used
PS Perm Generation
capacity = 10485760 (10.0MB)
used = 92160 (0.088043212890625MB)
free = 10363648 (9.911956787109375MB)
0.88043212890625% used
分别展示了JVM内存使用情况的不同方面,包括堆内存和非堆内存的使用情况。
3.jmap命令
jmap命令可以生成Java堆转储快照,可以用来查看Java堆内存使用情况。
命令:
jmap -dump:format=b,file=<filename> <PID>
参数说明:
filename:是转储快照文件名;
PID:是Java进程的进程号;
4.jstat命令
jstat命令可以用来查看JVM内存使用情况的各种统计信息,包括堆内存和非堆内存的使用情况,GC的次数和时间等。
执行该命令,可以看到JVM的堆内存使用情况、新生代、老年代、永久代等信息。
如下所示:
jstat -gc <pid> <interval> <count>
参数说明:
- pid:为Java进程的进程ID;
- interval:为统计间隔(以毫秒为单位);
- count:为统计次数;
以上这些方式都可以用来查看JVM内存使用情况,更多内容请查看:JVM调优详解(万字图文全面总结)
mikechen睿哥
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。