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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》