top -s
ps -ef | grep 17996
ps -mp pid -o THREAD,tid,time
将需要的线程ID转换为16进制格式:
printf “%x\n” tid
打印线程的堆栈信息:
jstack pid |grep tid -A 30
jstack 32236 | grep ‘7dec‘
jstack -l 32236 > jstack_result2.txt
jstat -gcutil 32236 2000
发现频繁GC FGC>YGC
估计是代码层面的问题了,很多数据无法释放,或者一次性把老年代填满了
打算导出堆栈,耗时较久
看看内存里有哪些数据对象
或者导出下内分布
jmap -histo [pid] > class.text
jmap -histo 32236 | more
jmap -histo 17996 | head -30
看下来
这个对象几十万个
应该是从数据库拿出来数据太多了
看了代码以后定位到问题
原文:https://www.cnblogs.com/alter888/p/15177258.html