Java进程占用内存过高,排查原因
排查步骤
-
top查看是否是java进程占用内存最高
]# top top - 18:26:43 up 5:23, 2 users, load average: 0.00, 0.01, 0.04 ... PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 870 root 20 0 148504 2308 1448 R 0.3 0.2 0:00.04 java
-
ps查看java线程
]# ps -p 2962 -L -o pcpu,pmem,pid,tid,tname,cmd %CPU %MEM PID TID TTY CMD 0.0 2.3 870 870 ? ... 0.0 2.3 870 1264 ? ...
-
jstack打印日志
]# jstack -l 870 > java_check.log
-
检查日志,定位问题
]# printf "%x\n" 1264 4f0 ]# vim java_check.log #根据4f0定位线程
-
将日志交给开发,优化代码