gpt4 book ai didi

java - Android资源类内存使用

转载 作者:行者123 更新时间:2023-11-29 09:17:17 26 4
gpt4 key购买 nike

我正在对 Android 4.0 启动器进行修改,并且遇到了很多 OutOfMemoryErrors。自 4.0.3 更新以来,它变得更糟(或开始,似乎之前还好,但我从来没有正确测试过)并且我尝试了很多东西来修复它。未经我修改,该错误也在库存启动器中。

我查看了 Eclipse 内存分析器中的堆 hprof,注意到系统资源类占用了 50% 的内存。几乎所有的都是位图,包括一些 1mb 512x512px 的位图。由于我的手机是 400x800,我不明白为什么它会有那个分辨率的资源。然后还有 800 多个其他位图,但这些位图的尺寸更合理。

该应用程序不包含 800 个资源,那么这些资源是否可能来自其他包?我知道该应用程序确实会从其他应用程序加载图标和小部件预览,但仍然达不到 800 个,即使它是其中的一部分,为什么它仍保留在内存中?

我已将 hprof 文件上传到 http://176.31.247.124/nebkat/heap.hprof如果需要的话。

最佳答案

Android 的 Bitmap 类中有一个“功能”,可以将 Bitmaps 排除在您的 VM 堆大小之外,这反过来意味着您的 Bitmaps 空间更少。

解决与 Bitmap 相关的 OutOfMemory 异常的唯一方法是,在使用完此 Bitmap 后,您必须使用 Bitmap.Recycle(); 释放资源。并使用 Runtime.gc() 刷新垃圾收集器。

我个人认为这很糟糕,位图也应该包含在您应用的 VM 堆大小中,但在 Android 中情况并非如此。

关于java - Android资源类内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8595797/

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