利用jhat分析java_pid25.hprof文件
查看内存直方图,可以清晰的看到哪些类占用了多少内存

内存分布
点击排名第一位的Bytes

Bytes
我们用curl 172.18.61.5:7000/class/0x6401ca038 > class.b命令将内存消耗导入至本地文件,筛选出消耗内存最多的行
<a href="../object/0x7a7600000">[B@0x7a7600000 (70380996 bytes)</a>
点击查看具体内容

content
写个脚本,将16进制utf8编码字符串转成中文,如下:

utf8编码转换
根据id查询相关数据,单条数据3.2M,一次bulk数据70M,并且该表数据结构较简单,几乎是{时间, 数值}这类的数据
,这类数据放在map里会导致数据膨胀,heap直方图里hashmap node占比也很高,可以推测是此类数据所致
解决方案
控制一次bulk写库请求的数据量大小