当堆变满时发生OOM。但是,如果我们增加设备RAM的大小,这有助于防止OOM吗?
我试着看一下如何防止OOM的教程,它推荐了多线程并缩小了位图的大小。但我仍然会收到OOM错误。
答案 0 :(得分:0)
但是,如果我们增加设备上RAM的大小,这有助于防止OOM吗?
是和否。答案是“这取决于你内存不足的原因。”
如果您尝试在1GB设备上操作2GB位图,那么是的,添加一些额外GB的RAM将解决您的问题。
如果你有一个不断分配新对象的流氓操作,那么添加额外的内存只会延迟OOM异常。额外的RAM不是长期解决内存管理不善的方法。
您需要先确定内存不足的原因。如果问题是你确实需要更多的RAM(这是不太可能),那么继续添加更多。如果问题是你不必要地分配内存或泄漏对象,那么首先解决这些问题。
特别是使用Bitmaps,您通常不需要完整质量的图像。如果您的图像以1080p分辨率存储,但设备只有480p屏幕,那么将整个图像加载到内存中会浪费空间,因为大部分图像都不会被使用。