查看JVM内存使用情况(4种常用命令详解)

查看JVM内存使用情况(4种常用命令详解)-mikechen

JVM性能调优经常要查看JVM内存使用情况,下面我就重点来详解几种查看JVM内存使用情况方式@mikechen

1.JConsole命令

JConsole是Java自带的一个监控和管理Java应用程序的工具,可以用来监控JVM的各种指标,包括内存使用情况。

进入Java的安装目录下的bin目录,然后运行jconsole.exe就可以运行JConsole了。

查看JVM内存使用情况(4种常用命令详解)-mikechen

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

查看JVM内存使用情况(4种常用命令详解)-mikechen

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

查看JVM内存使用情况(4种常用命令详解)-mikechen

 

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年+大厂架构经验,BAT资深面试官,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

👇阅读更多mikechen架构文章👇

阿里架构 |双11秒杀 |分布式架构 |负载均衡 |单点登录 |微服务 |云原生 |高并发 |架构师

以上

关注作者「mikechen」公众号,获取更多技术干货!

后台回复架构,即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法