最近线上内存异常,通过mat分析dump下面的的栈,可以清楚的看到一个thread的局部list中包含了大量的业务对象。问题大概定位到了,但不能细节到某个类和方法层级,对于业务复杂的代码还是不容易。
好好研究了下mat的功能,发现可以通过thread的outgoing发现当前引起的service,不过注意噢,默认outgoing只显示前面的25条(被这个搞了一下)
前面带<Java Local>的代表是栈上的变量,即局部变量。
本文针对线上内存异常问题,使用MAT工具分析dump文件中的线程栈,定位到业务对象占用大量内存的具体位置。介绍如何利用MAT的thread outgoing功能进一步细化问题来源。
最近线上内存异常,通过mat分析dump下面的的栈,可以清楚的看到一个thread的局部list中包含了大量的业务对象。问题大概定位到了,但不能细节到某个类和方法层级,对于业务复杂的代码还是不容易。
好好研究了下mat的功能,发现可以通过thread的outgoing发现当前引起的service,不过注意噢,默认outgoing只显示前面的25条(被这个搞了一下)
前面带<Java Local>的代表是栈上的变量,即局部变量。
9万+

被折叠的 条评论
为什么被折叠?