查看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年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

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

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

评论交流
    说说你的看法