Linux查看Java服务占用内存

介绍

在Linux环境中,我们经常需要查看Java服务占用的内存情况,以便进行性能优化或故障排查。本文将介绍几种常用的方法来查看Java服务的内存占用情况,并提供相应的代码示例。

方法一:使用jstat命令

jstat是JDK自带的一个监控工具,用于监控Java应用程序的各种统计信息,包括内存使用情况。下面是使用jstat命令查看Java服务内存占用的示例:

$ jstat -gcutil <pid> <interval> <count>

其中,<pid>表示Java服务的进程ID,<interval>表示采样间隔时间(单位为毫秒),<count>表示采样次数。执行这个命令后,将会输出一个表格,其中包括了Java服务的堆内存和非堆内存的使用情况。

S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 30.00 75.00 99.99 99.97 1 0.001 0.000 0.001

上述表格展示了常见的jstat命令输出结果,包括了Survivor Space 0(S0)和Survivor Space 1(S1)的使用率,Eden Space(E)和Old Space(O)的使用率,Metaspace(M)和Compressed Class Space(CCS)的使用率,Young GC的次数(YGC)和总耗时(YGCT),Full GC的次数(FGC)和总耗时(FGCT),以及垃圾回收总耗时(GCT)。

方法二:使用jcmd命令

jcmd是JDK提供的一个多功能命令行工具,可以用于查看Java进程的各种信息,包括内存使用情况。下面是使用jcmd命令查看Java服务内存占用的示例:

$ jcmd <pid> VM.native_memory summary scale=KB

其中,<pid>表示Java服务的进程ID,scale=KB表示以千字节为单位显示内存使用情况。执行这个命令后,将会输出一个表格,其中包括了Java服务的堆内存和非堆内存的使用情况。

Reserved Total: 5242880.0 KB
- Java Heap (reserved) 2097152.0 KB Java Heap (committed) 2097152.0 KB
(mmap: /dev/shm) (mmap: /dev/shm)
- Native Memory Tracking (reserved) 524288.0 KB Native Memory Tracking (committed) 524288.0 KB
(malloc: 1) (malloc: 1)
- Java Stack (reserved) 65536.0 KB Java Stack (committed) 65536.0 KB
(malloc: 2) (malloc: 2)
...