堆内存溢出问题排查
生成的有hprof文件:
方式一:
将文件使用JProfiler打开:
装载文件后,选择类:
选择最大对象,右键选择使用选定对象:
选择传入引用:
点开后就能看到溢出的位置了:
也可以右键,再图表中显示:
方式二:
点击左侧的线程转储:
报错信息在这里也有展示(但是需要确定线程号跟日志中展示出来的一致)
问题解决:
根据定位位置,检查代码,发现是需要补偿发送的数据太多,查询sql中没有限制,导致再循环的过程中创建的临时变量过多导致。
堆内存溢出问题排查
生成的有hprof文件:
方式一:
将文件使用JProfiler打开:
装载文件后,选择类:
选择最大对象,右键选择使用选定对象:
选择传入引用:
点开后就能看到溢出的位置了:
也可以右键,再图表中显示:
方式二:
点击左侧的线程转储:
报错信息在这里也有展示(但是需要确定线程号跟日志中展示出来的一致)
问题解决:
根据定位位置,检查代码,发现是需要补偿发送的数据太多,查询sql中没有限制,导致再循环的过程中创建的临时变量过多导致。