一.获取dump文件
1.1 线上内存溢出了,这里拿不到线上内存溢出的文件,但是能定位具体接口功能造成的内存溢出
本地生成dump文件
设置vm参数:-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=D:/tmp.hprof -Xms1152m -Xmx1152m
1.2 调整jvm内存大小,直达报内存溢出,然后D盘下生成dump文件
二.jprofiler分析dump文件
2.1 用jprofiler打开刚才生成的dump文件,可以看到大对象占用的情况
2.2 选中占用较大的对象,查看其Reference
三. 查看Reference及代码定位问题
3.1查看Reference
3.2 第一个占用百分之40的对象
对应代码
刷tile之前会加载所有数据到内存当中,本身数据量较大,无法优化
3.3 查看其他大对象
对应代码,定位到问题
四.自测
内存设置的736m能够跑通