DecimalFormat导致的内存泄露问题

昨天同事反馈在app无限循环new DecimalFormat时候,出现native heap不断增大的情况
应用在很多地方都会new DecimalFormat,简化版的代码如下:
while(true) {
new DecimalFormat(“0.000”);
}
dumpsys meminfo发现应用内存分布如下,native heap占用了278M
DecimalFormat导致的内存泄露问题_第1张图片

坐下看到这样代码推断app里竟然会重复新建DecimalFormat,里面起身果断怼回去,不应该这样写的啊,哪有一直new DecimalFormat的
正常的逻辑是每个应用的小数点格式是统一,只要一个就可以了啊,重构下代码改为static对象,这是最快的解决方案了

但是同事一直说其他平台有问题,自己当时心思也不在这个问题,态度也不好就说那你查查吧先
后来自己有看了下代码,其实也很简单,跟着代码走,比对原生代码分析,发现是方案商添加的代码导致的,具体代码如下
DecimalFormat导致的内存泄露问题_第2张图片

总结

遇到问题,即使发现能写出在一个应用重复new DecimalFormat的代码来,也要和蔼,不能急躁,切记心态不好
自己最容易改变,别人最难改变

你可能感兴趣的:(android)