我的应用程序的一个主要问题是崩溃,由于我的应用程序包含大量内容(它是一个内容共享站点客户端),这种情况经常发生。我遇到很多内存错误,我最多可以使用 170-180 MB 的 ram,这太荒谬了。
http://i.gyazo.com/6cd53e6cf6f0a9bfdd6a24b323a70b09.gif http://gyazo.com/b64d50f76b2ef608954a6d6cdd5d52d0
这些屏幕截图来自于加载 25 个提交并滚动浏览它们。
我当前的设置是这样的:LruCache 大小为
(Runtime.getRuntime().maxMemory()/1024)/8
处理所有提交的图像。当我加载提交的照片或缩略图时,它会进入该缓存。相册由用于位图的简单 ArrayAdapter 和 WeakHashMap 存储处理,因为它很少被调用(可能每 25-30 个帖子中就有 1 个包含相册)。 Gifs 通过 GfyCat 流式传输到 VideoView,在 gifs 或相册上不会发生真正的崩溃。真正的错误发生在我滚动时,这很奇怪,因为我一次将图像全部加载到 LruCache 以节省移动 radio 时间(电池改进)。
问题似乎是 android 试图将更多的东西放入 LruCache 中,因为我得到了这样的错误
java.lang.OutOfMemoryError:无法分配 3169972 字节的分配,其中 1400991 个可用字节和 1368KB 直到 OOM
即使我的 LruCache 大小是 24576kb。
我是否正确处理内存?我可以采取哪些步骤来提高稳定性,同时保持应用程序的快速运行? 谢谢!
最佳答案
您甚至可以使用此配置进一步增强 picasso
Picasso.with(this)
.load(YOUR_URL)
.config(Bitmap.Config.RGB_565).fit()
.into((ImageView) findViewById(
R.id.frame_main_main_layout));
它会减少分配内存并提高性能
关于android - 需要帮助管理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29759704/