当堆变满时,OOM就会发生。但是,如果我们增加设备的RAM大小,这将有助于防止OOM吗?
我试着看了一些关于如何防止OOM的教程,其中建议使用多线程并缩小位图的大小。但我仍然收到OOM错误。
发布于 2015-12-11 22:55:50
但是,如果我们增加设备上的内存大小,这将有助于防止
吗?
是也不是。答案是“这取决于你为什么会耗尽内存”。
如果你试图在一个1 GB的设备上操作一个2 GB的位图,那么是的,添加一些额外的GB内存将会解决你的问题。
如果您有一个不断分配新对象的流氓操作,那么添加额外的内存只会延迟OOM异常。对于糟糕的内存管理,额外的RAM不是一个长期的解决方案。
您需要先找出内存不足的原因。如果问题是您确实需要更多的RAM (这是相当不可能的),那么继续添加更多的内存。如果问题是您不必要地分配内存或泄漏对象,则首先修复这些问题。
特别是使用位图,您通常不需要完整质量的图像。如果您的图像是以1080p分辨率存储的,但设备只有480p屏幕,那么将整个图像加载到内存中是浪费空间,因为大多数图像无论如何都不会被使用。
https://stackoverflow.com/questions/34226260
复制相似问题