我的Android应用程序在一系列片段中使用加载大量图像。我已经检查了内存分析器中的hprofs,在修复了各种漏洞之后,我再也看不到了。DDMS堆的大小稍微增加到16左右,但与此同时,我正在检查Debug.getNativeHeapAllocatedSize,发现每个片段替换后,这个值会膨胀大约90 16。大约600 on的本机堆,应用程序崩溃致命信号6 SIGABRT,通常是在试图构建图像重的UI上的数据返回。但记忆中永远不会有错误。
本机堆的增加是导致致命信号6崩溃的原因,还是导致UI停滞?调试本机堆持续增长的最佳方法是什么?
发布于 2015-04-26 05:38:38
这些图像是一只红鲱鱼。致命的6确实与不断增长的本地堆有关。
除了大量的图片外,该应用程序还为每个屏幕创建了大量的自定义TextViews,之前的开发人员在init中为这些自定义TextViews调用了一个Typeface.createFromAsset。因此,成千上万的字体被添加到本机堆中。懒洋洋地创建一个静态字体,一次只修复了这个问题。
要调试,最好的方法是移除嫌疑犯。在对图像和UniversalImageLoader配置设置进行了数小时的修改后,我取出了图像加载(应该先这样做),但仍然看到堆失去了控制--因此不得不找其他地方,然后需要几分钟的时间才能找到。
https://stackoverflow.com/questions/29871831
复制相似问题