Linux查看某个服务JVM的GC和堆内存使用情况

Linux查看某个服务JVM的GC和堆内存使用情况

 使用 jps 命令查看配置了JVM的服务

标红部分是进程号

查看某个进程JVM的GC使用情况
  jstat -gcutil 71614 5000

  (jstat -gcutil 进程号 刷新时间)

   S0C:年轻代中第一个survivor(幸存区)的容量 (字节) 
    S1C:年轻代中第二个survivor(幸存区)的容量 (字节) 
    S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节) 
    S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节) 
    EC:年轻代中Eden(伊甸园)的容量 (字节) 
    EU:年轻代中Eden(伊甸园)目前已使用空间 (字节) 
    OC:Old代的容量 (字节) 
    OU:Old代目前已使用空间 (字节)
    YGC:从应用程序启动到采样时年轻代中gc次数 
    YGCT:从应用程序启动到采样时年轻代中gc所用时间(s) 
    FGC:从应用程序启动到采样时old代(全gc)gc次数 
    FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s) 
    GCT:从应用程序启动到采样时gc用的总时间(s) 

 

查看堆内存使用情况
jmap -heap 71614

(jmap -heap 进程号)

Heap Configuration:   #堆配置情况 
   MinHeapFreeRatio         = 40  #堆最小使用比例
   MaxHeapFreeRatio         = 70  #堆最大使用比例
   MaxHeapSize              = 8589934592 (8192.0MB)  #堆最大空间
   NewSize                  = 1363144 (1.2999954223632812MB) #新生代初始化大小
   MaxNewSize               = 5152702464 (4914.0MB)          #新生代可使用最大容量大小
   OldSize                  = 5452592 (5.1999969482421875MB) #老生代大小
   NewRatio                 = 2   #新生代比例
   SurvivorRatio            = 8   #新生代与suvivor的占比
   MetaspaceSize            = 21807104 (20.796875MB) #元数据空间初始大小
   CompressedClassSpaceSize = 1073741824 (1024.0MB) #类指针压缩空间大小, 默认为1G
   MaxMetaspaceSize         = 17592186044415 MB  #元数据空间的最大值, 超过此值就会触发 GC溢出( JVM会动态地改变此值)
   G1HeapRegionSize         = 2097152 (2.0MB) #区块的大小

Heap Usage:
G1 Heap:
   regions  = 4096  # G1区块初始化大小
   capacity = 8589934592 (8192.0MB)  #G1区块最大可使用大小
   used     = 1557972768 (1485.7986145019531MB)  #G1区块已使用内存
   free     = 7031961824 (6706.201385498047MB)   #G1区块空闲内存
   18.137190118432045% used     #G1区块使用比例
G1 Young Generation:  #新生代
Eden Space:  #Eden区空间
   regions  = 670
   capacity = 2699034624 (2574.0MB)
   used     = 1405091840 (1340.0MB)
   free     = 1293942784 (1234.0MB)
   52.05905205905206% used
Survivor Space: #Survivor区
   regions  = 3
   capacity = 6291456 (6.0MB)
   used     = 6291456 (6.0MB)
   free     = 0 (0.0MB)
   100.0% used
G1 Old Generation: #老生代
   regions  = 72
   capacity = 1589641216 (1516.0MB)
   used     = 146589472 (139.79861450195312MB)
   free     = 1443051744 (1376.2013854980469MB)
   9.221544492213267% used

Linux常用命令之查看jvm内存使用情况

 jstat命令可以查看堆内存各部分的使用情况:

垃圾回收统计:jstat -gcutil  进程id

参数解释:

S0C:第一个幸存区的大小

S1C:第二个幸存区的大小

S0U:第一个幸存区的使用大小

S1U:第二个幸存区的使用大小

EC:伊甸园区的大小

EU:伊甸园区的使用大小

OC:老年代大小

OU:老年代使用大小

MC:方法区大小

MU:方法区使用大小

CCSC:压缩类空间大小

CCSU:压缩类空间使用大小

YGC:年轻代垃圾回收次数

YGCT:年轻代垃圾回收消耗时间

FGC:老年代垃圾回收次数

FGCT:老年代垃圾回收消耗时间

GCT:垃圾回收消耗总时间

 堆内存统计:

jstat -gccapacity 进程id

  • NGCMN:新生代最小容量

  • NGCMX:新生代最大容量

  • NGC:当前新生代容量

  • S0C:第一个幸存区大小

  • S1C:第二个幸存区的大小

  • EC:伊甸园区的大小

  • OGCMN:老年代最小容量

  • OGCMX:老年代最大容量

  • OGC:当前老年代大小

  • OC:当前老年代大小

  • MCMN:最小元数据容量

  • MCMX:最大元数据容量

  • MC:当前元数据空间大小

  • CCSMN:最小压缩类空间大小

  • CCSMX:最大压缩类空间大小

  • CCSC:当前压缩类空间大小

  • YGC:年轻代gc次数

  • FGC:老年代GC次数

Linux使用jstat命令查看jvm的GC情况

Options,选项,我们一般使用 -gcutil 查看gc情况 vmid,VM的进程号,即当前运行的java进程号 interval,间隔时间,单位为秒或者毫秒 count,打印次数,如果缺省则打印无数次

通常运行命令如下:

jstat -gcutil 12538 5000

即会每5秒一次显示进程号为12538的java进成的GC情况,

显示内容如下图:

jstat -gcutil 28363 1s 

jstat -gccause pid 1 每格1毫秒输出结果
jstat -gccause pid 2000 每格2秒输出结果

1

<br><br>jstat -gc 21711 250 4

<br>vmid是虚拟机ID,在Linux/Unix系统上一般就是进程ID。interval是采样时间间隔。count是采样数目。比如下面输出的是GC信息,采样时间间隔为250ms,采样数为4

说明

1

2

3

4

5

6

7

S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)

EC、EU:Eden区容量和使用量

OC、OU:年老代容量和使用量

PC、PU:永久代容量和使用量

YGC、YGT:年轻代GC次数和GC耗时

FGC、FGCT:Full GC次数和Full GC耗时

GCT:GC总耗时<br><br>

显示内容说明如下(部分结果是通过其他其他参数显示的,暂不说明):

S0C:年轻代中第一个survivor(幸存区)的容量 (字节)         

S1C:年轻代中第二个survivor(幸存区)的容量 (字节)         

S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)         

S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)         

EC:年轻代中Eden(伊甸园)的容量 (字节)         

EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)         

OC:Old代的容量 (字节)         

OU:Old代目前已使用空间 (字节)         

PC:Perm(持久代)的容量 (字节)         

PU:Perm(持久代)目前已使用空间 (字节)         

YGC:从应用程序启动到采样时年轻代中gc次数         

YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)         

FGC:从应用程序启动到采样时old代(全gc)gc次数         

FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)         

GCT:从应用程序启动到采样时gc用的总时间(s)         

NGCMN:年轻代(young)中初始化(最小)的大小 (字节)         

NGCMX:年轻代(young)的最大容量 (字节)         

NGC:年轻代(young)中当前的容量 (字节)         

OGCMN:old代中初始化(最小)的大小 (字节)         

OGCMX:old代的最大容量 (字节)         

OGC:old代当前新生成的容量 (字节)         

PGCMN:perm代中初始化(最小)的大小 (字节)         

PGCMX:perm代的最大容量 (字节)           

PGC:perm代当前新生成的容量 (字节)         

S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比         

S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比         

E:年轻代中Eden(伊甸园)已使用的占当前容量百分比         

O:old代已使用的占当前容量百分比         

P:perm代已使用的占当前容量百分比         

S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)         

S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)         

ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)         

DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)         

TT: 持有次数限制         

MTT : 最大持有次数限制

 

 

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过以下命令查看JVM堆内存大小: 1. 使用jstat命令查看JVM堆内存使用情况: jstat -gc <pid> 其中,<pid>为Java进程的进程ID。 该命令会输出JVM堆内存使用情况,包括堆内存的容量、已使用的空间、已提交的空间等信息。 2. 使用jmap命令查看JVM堆内存使用情况: jmap -heap <pid> 该命令会输出JVM堆内存的详细信息,包括堆内存的容量、已使用的空间、已提交的空间、垃圾回收器的信息等。 需要注意的是,使用jmap命令会暂停Java进程的运行,可能会影响应用程序的性能。因此,在生产环境中,建议使用jstat命令查看JVM堆内存使用情况。 ### 回答2: 在Linux系统中,要查看JVM堆内存大小,可以采用以下方法: 1.使用jps命令查看Java进程编号 jps命令可以列出当前在运行的Java进程编号,输入如下命令: jps 会输出所有正在运行的Java进程编号,找到需要查看Java进程编号。 2.使用jmap命令查看堆内存使用情况 jmap命令可以生成当前Java进程的堆内存转储快照,输入如下命令: jmap -heap <Java进程编号> 例如,如果Java进程编号为12345,则输入如下命令: jmap -heap 12345 会输出该Java进程的堆内存使用情况,其中包括堆内存的大小、使用情况、垃圾回收情况等信息。 3.使用jstat命令实时查看堆内存使用情况 jstat命令可以实时查看Java进程的堆内存使用情况,输入如下命令: jstat -gc <Java进程编号> <时间间隔> <次数> 例如,如果Java进程编号为12345,时间间隔为1秒,次数为10次,则输入如下命令: jstat -gc 12345 1 10 会输出该Java进程的堆内存使用情况,其中包括堆内存的大小、使用情况、垃圾回收情况等信息,并每秒钟更新一次。 总之,Linux系统中可以通过jps、jmap、jstat等命令来查看Java进程的堆内存大小和使用情况,帮助用户优化Java程序的性能。 ### 回答3: 在Linux系统上,我们可以通过命令行来查看JVM堆内存大小。具体步骤如下: 1. 打开命令行终端,输入以下命令来检查是否已经安装了Java环境: ```shell java -version ``` 如果已经安装了Java环境,会显示出Java版本号等信息;否则需要先安装Java环境。 2. 运行JVM应用程序,使用jstat命令来查看堆内存使用情况: ```shell jstat -gc <pid> ``` 其中,<pid>是JVM的进程号,可以使用命令ps -ef | grep java来查找。在jstat命令输出中,我们可以看到类似下面的信息: ```shell S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 1024.0 1024.0 0.0 701.0 8192.0 3331.8 26624.0 13705.5 20480.0 12483.9 24 1.809 2 0.562 2.371 ``` 在这里,我们关注OC列和OU列,它们分别表示老年代堆的容量和使用量。可以根据这两列的数据来计算老年代堆的使用率和空余内存大小,以及整个堆内存使用率。 另外,我们还可以使用jmap命令来获取JVM内存信息,并导出堆内存的详细信息到文件中: ```shell jmap -heap <pid> jmap -dump:format=b,file=<path-to-dumpfile> <pid> ``` 同样,<pid>是JVM的进程号,<path-to-dumpfile>是导出文件的路径。使用jmap命令可以获取JVM中各个内存区域的使用情况GC算法、线程堆栈等信息;使用jmap -dump命令可以导出当前JVM堆内存状态到文件中,以便于后续分析和调试。 通过以上方法,我们可以非常方便地查看Linux系统上JVM堆内存大小和使用情况,从而及时定位和解决JVM性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值