DecimalFormat导致的内存泄露问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/seiyaaa/article/details/80593964

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

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

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

总结

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

展开阅读全文

没有更多推荐了,返回首页