JAVA OOM问题排查记录

JAVA OOM问题排查记录

问题描述

实际开发中有个定时任务的应用,运行一段时间后就会OOM,通过jvm的各种监控来排查OOM的原因,特此记录在这里。

内容引用

JVM 调优-给你的java应用看看病

Java程序内存分析:使用mat工具分析内存占用

常用命令

1、top

查询CPU占用情况以及进程PID

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND    
 24988 root      20   0   59508   4152   3620 R   0.3  0.0   0:00.01 top        
     1 root      20   0    4320    724    648 S   0.0  0.0   0:00.09 tini       
     6 root      20   0   15088   3152   2912 S   0.0  0.0   0:00.00 bash       
     7 root      20   0   15088   2060   1808 S   0.0  0.0   0:00.00 bash       
     9 root      20   0   26064   2796   2176 S   0.0  0.0   0:00.00 crond      
    10 root      20   0 31.759g 2.635g  17944 S   0.0  1.0   2:12.83 java       
    77 root      20   0   15216   3460   3088 S   0.0  0.0   0:00.03 sh         
 10250 root      20   0   25160   2516   2272 S   0.0  0.0   0:00.00 anacron    
 24981 root      20   0   15216   3456   3096 S   0.0  0.0   0:00.01 sh  

2、jmap -heap pid

显示Java堆详细信息,打印一个堆的摘要信息,包括使用的GC算法、堆配置信息和各内存区域内存使用信息

Attaching to process ID 10, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.191-b12

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 6442450944 (6144.0MB)
   NewSize                  = 2147483648 (2048.0MB)
   MaxNewSize               = 2147483648 (2048.0MB)
   OldSize                  = 4294967296 (4096.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 1989672960 (1897.5MB)
   used     = 637523032 (607.9893417358398MB)
   free     = 1352149928 (1289.5106582641602MB)
   32.041599037461914% used
From Space:
   capacity = 79167488 (75.5MB)
   used     = 21287720 (20.301551818847656MB)
   free     = 57879768 (55.198448181152344MB)
   26.88947260774524% used
To Space:
   capacity = 78643200 (75.0MB)
   used     = 0 (0.0MB)
   free     = 78643200 (75.0MB)
   0.0% used
PS Old Generation
   capacity = 4294967296 (4096.0MB)
   used     = 53744560 (51.25480651855469MB)
   free     = 4241222736 (4044.7451934814453MB)
   1.2513380497694016% used

35830 interned Strings occupying 3985440 bytes.

3、jmap -histo:live pid

显示堆中对象的统计信息,其中包括每个Java类、对象数量、内存大小(单位:字节)、完全限定的类名。打印的虚拟机内部的类名称将会带有一个’*’前缀。如果指定了live子选项,则只计算活动的对象。

 num     #instances         #bytes  class name
----------------------------------------------
   1:        313902       20147600  [C
   2:        324481        7787544  java.lang.String
   3:          8832        3892128  [B
   4:         36272        3191936  java.lang.reflect.Method
   5:          9066        2024104  [I
   6:         62343        1994976  java.util.HashMap$Node
   7:         62213        1990816  java.util.concurrent.ConcurrentHashMap$Node
   8:         14484        1610080  java.lang.Class
   9:         24598        1497704  [Ljava.lang.Object;
  10:          4082        1077648  com.auto.hr.ppi.base.ppitask.domain.DO.TEmployeeDO
  11:          9091        1069376  [Ljava.util.HashMap$Node;
  12:         43927        1054248  java.util.Date
  13:         34158         754920  [Ljava.lang.Class;
  14:         15543         621720  java.util.LinkedHashMap$Entry
  15:           490         515568  [Ljava.util.concurrent.ConcurrentHashMap$Node;
  16:          6889         496008  java.lang.reflect.Field
  17:          8731         488936  java.util.LinkedHashMap
  18:         30178         482848  java.lang.Object
  19:          6300         403200  com.mysql.jdbc.ConnectionPropertiesImpl$BooleanConnectionProperty
  20:          4756         380480  java.lang.reflect.Constructor
  21:          7618         365664  java.util.HashMap

4、jmap -dump:format=b,file=heapdump.bin pid

生成堆转储快照dump文件

sh-4.2# jmap -dump:format=b,file=heapdump.bin 10
Dumping heap to /a-one/bin/heapdump.bin ...
Heap dump file created

5、sz heapdump.bin

下载导出的堆快照dump文件,导入到MAT工具中

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值