Java排查线上环境内存溢出(OOM)

1、先使用命令列出所有已运行的容器

docker ps
[root@dasdadsd ~]# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED        STATUS        PORTS                                       NAMES
71c935097187   redis:6.0    "docker-entrypoint.s…"   8 weeks ago    Up 8 weeks    0.0.0.0:5655->6379/tcp, :::5122->6379/tcp   redis
c321a5c56eab   smessage:1   "/bin/sh -c 'java -j…"   2 months ago   Up 2 months   0.0.0.0:4545->4565/tcp, :::5123->3123/tcp   smessage

2、找到容器进入

docker exec -it [容器id] /bin/bash
[root@dasdadsd ~]# docker exec -it c32 /bin/bash
root@c321a5c56eab:/# 

3、我这里使用的是top指令查看

root@dasdadsd :/# top
top - 13:02:50 up 86 days,  4:20,  0 users,  load average: 0.05, 0.05, 0.01
Tasks:  13 total,   1 running,  12 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.0 us,  0.7 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   1995464 total,  1617408 used,   378056 free,   116708 buffers
KiB Swap:  1049596 total,   273408 used,   776188 free.   388496 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                      
    7 root      20   0 2528792 384840   4076 S  0.3 19.3 124:35.79 java                                                                                         
    1 root      20   0    4336     88      0 S  0.0  0.0   0:00.02 sh                                                                                           
 1102 root      20   0   21960    760    252 S  0.0  0.0   0:00.02 bash                                                                                         
 8014 root      20   0   21960    788    280 S  0.0  0.0   0:00.03 bash                                                                                         
 8584 root      20   0   21960    760    256 S  0.0  0.0   0:00.02 bash                                                                                         
10153 root      20   0   21960   3504   2996 S  0.0  0.2   0:00.03 bash                                                                                         
10175 root      20   0   23636   2656   2288 R  0.0  0.1   0:00.00 top                                                                                          
11097 root      20   0   21956    756    252 S  0.0  0.0   0:00.03 bash                                                                                         
15019 root      20   0   21956    772    264 S  0.0  0.0   0:00.04 bash                                                                                         
24749 root      20   0   21960    768    264 S  0.0  0.0   0:00.03 bash                                                                                         
30518 root      20   0   21960    788    280 S  0.0  0.0   0:00.02 bash                                                                                         
31525 root      20   0   21960    760    252 S  0.0  0.0   0:00.02 bash                                                                                         
32165 root      20   0   21960    776    268 S  0.0  0.0   0:00.02 bash    

找到java的pid为7

4、使用 下面的命令进行分析 

jmap -histo [java进程号] | head -[展示行数]
root@c321a5c56eab:/# jmap -histo 7|head -20

 num     #instances         #bytes  class name
----------------------------------------------
   1:         38723       53068200  [B
   2:        165183       41040304  [C
   3:          6379       22771536  [I
   4:        467926       14973632  java.util.HashMap$Node
   5:        203504        6512128  com.mysql.cj.conf.BooleanProperty
   6:         15270        5198864  [Ljava.util.HashMap$Node;
   7:        114471        3663072  com.mysql.cj.conf.StringProperty
   8:        151533        3636792  java.lang.String
   9:         72718        2908720  java.util.TreeMap$Entry
  10:         56327        1802464  com.mysql.cj.conf.IntegerProperty
  11:         26419        1200112  [Ljava.lang.Object;
  12:         22626        1086048  java.util.HashMap
  13:          9319        1030968  java.lang.Class
  14:         31635        1012320  java.util.concurrent.ConcurrentHashMap$Node
  15:          9791         861608  java.lang.reflect.Method
  16:         39255         628080  java.lang.Object
  17:         16936         541952  java.util.Hashtable$Entry

这就看出来每个类栈的内存了

  • 34
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值