Android 需要帮助管理内存吗
我的应用程序的一个主要问题是崩溃,这种情况经常发生,因为我的应用程序包含大量内容(它是一个内容共享网站客户端)。我有很多内存错误,我可以使用高达170-180 MB的ram,这是荒谬的 这些截图只需加载25份提交并滚动浏览即可 我当前的设置如下:大小为的LruCacheAndroid 需要帮助管理内存吗,android,memory,bitmap,Android,Memory,Bitmap,我的应用程序的一个主要问题是崩溃,这种情况经常发生,因为我的应用程序包含大量内容(它是一个内容共享网站客户端)。我有很多内存错误,我可以使用高达170-180 MB的ram,这是荒谬的 这些截图只需加载25份提交并滚动浏览即可 我当前的设置如下:大小为的LruCache (Runtime.getRuntime().maxMemory()/1024)/8 它处理所有提交图像。当我加载提交照片或缩略图时,它会进入缓存。相册由一个简单的ArrayAdapter和WeakHashMap位图存储处理,因
(Runtime.getRuntime().maxMemory()/1024)/8
它处理所有提交图像。当我加载提交照片或缩略图时,它会进入缓存。相册由一个简单的ArrayAdapter和WeakHashMap位图存储处理,因为很少调用它(每25-30篇文章中可能有1篇包含相册)。GIF通过GfyCat传输到视频视图,GIF或相册上不会发生真正的崩溃。真正的错误发生在我滚动时,这很奇怪,因为我一次将图像加载到LruCache以节省移动广播时间(电池改进)
问题似乎是android试图在LruCache中投入更多,因为我会遇到这样的错误
java.lang.OutOfMemoryError:无法分配3169972字节的分配,其中包含1400991个可用字节和1368KB,直到OOM
即使我的LruCache大小是24576kb
我处理内存是否正确?我可以采取哪些步骤来提高稳定性,同时保持应用程序的速度?
谢谢 我最终从Ion图像加载库切换到了毕加索,并通过自动缓存节省了33%的ram使用量,因此我摆脱了LruCache和我所有的商店,现在它比以往任何时候都好 您甚至可以通过使用此配置进一步增强毕加索
Picasso.with(this)
.load(YOUR_URL)
.config(Bitmap.Config.RGB_565).fit()
.into((ImageView) findViewById(
R.id.frame_main_main_layout));
这将减少内存分配并提高性能加载位图时是否缩放位图?这到底有什么作用?看起来很有趣!fit()使毕加索只使用适合您的图像视图的大小,而不分配,比如说大图像如果您将其用作缩略图,那么您将减少对大图像的分配。config(Bitmap.config.RGB_565)将位图的配置更改为16位,而不是32位。这将增强内存并减少分配。试试看。