记录一次类似于内存泄漏,定位问题的经历

1  问题原因是一个接口返回数据大约有240w,查询时间有30s,导致cpu利用率达到了百分之百。

2  解决方案有几种,在windows7环境下面,第一种是先打开jconsole,在jdk的bin目录下,可以看堆栈和线程的信息。

   确认是堆栈信息猛涨之后,

1 粗略看一下 可以利用 jmap -histo   -pid|more 的命令打开查看当前-histo[:live] 打印每个class的实例数目,内存占用,类全名信息. VM的内部类名字开头会加上前缀”*”. 如果live子参数加上后,只统计活的对象数量. 。

2 具体定位是看任务管理器中的进程,看看哪个进程猛涨,然后根据该进程的pid去jstack -l pid在控制台查看堆栈信息,但是看不全,此时需要jstack pid > pid.out将日志信息打印到当前目录下。去文件里面查看。然后根据Process Explore去查找该pid对应的tid线程号,将此线程号转为16进制,根据线程号去找对应的nid。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值