gpt4 book ai didi

java - 尽管 Java 堆保持稳定,但 native 堆继续按固定数量增长,然后致命信号 6 崩溃

转载 作者:太空狗 更新时间:2023-10-29 14:57:38 26 4
gpt4 key购买 nike

我的 Android 应用使用通用图像加载器在一系列 fragment 中加载了大量图像。我已经在 Memory Analyzer 中检查了 hprofs,在修复了各种泄漏之后,我再也看不到了。 DDMS java 堆大小增加了一点到 16 左右,但与此同时我正在检查 Debug.getNativeHeapAllocatedSize 并看到每个 fragment 替换后它膨胀了大约 90MB。大约 600MB native 堆应用程序崩溃致命信号 6 SIGABRT,通常是在尝试在数据返回时构建图像密集型 UI 时。但永远不会出现内存不足错误。

是 native 堆增加导致致命信号 6 崩溃,还是 UI 停滞?调试 native 堆持续增加的最佳方法是什么?

最佳答案

图像是一条红鲱鱼。致命的 6 确实与不断增长的 native 堆有关。

除了大量图像外,该应用还为每个屏幕创建了很多自定义 TextView,并且之前的开发人员在这些自定义 TextView 的初始化中调用了 Typeface.createFromAsset。因此,数以千计的字体被添加到 native 堆中。懒惰地创建静态字体一次只能解决这个问题。

要进行调试,最好的方法是删除可疑对象。经过数小时摆弄图像和 UniversalImageLoader 配置设置后,我取消了图像加载(应该先这样做),但仍然看到堆增长失控 - 因此不得不寻找其他地方,然后几分钟就找到了。

关于java - 尽管 Java 堆保持稳定,但 native 堆继续按固定数量增长,然后致命信号 6 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29871831/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com