maxMemory和outOfMemoryException

时间:2016-01-09 14:14:42

标签: android facebook heap

我为Android开发了一款App。我的问题是该应用程序在华为Honor 7上崩溃,但在三星Galaxy S3 mini,Galaxy S4,Galaxy S6,Nexus 4和Nexus 5上工作正常。

我在清单中的应用程序标记中设置了这一行:

Throwing OutOfMemoryError "Failed to allocate a 31806012 byte allocation with 4194304 free bytes and 24MB until OOM"

但是这个错误出现在华为的logcat中:

    Runtime rt = Runtime.getRuntime();
    long maxMemory = rt.maxMemory();
    Log.v("onCreate", "maxMemory:" + Long.toString(maxMemory));

我在我的S4和华为上测试maxMemory并得到这个值: Galaxy S4:192MB 华为荣耀7:256MB

要获取值,我使用此代码:

{{1}}

我想知道这些价值观是什么意思。因为上面的错误表明设备上只有大约4MB。

我现在的2个问题如下:

  1. maxMemory代表什么?错误中的4 MB是什么意思?

  2. Facebook等应用如何查看这么多图片?我可以滚动,滚动和滚动,然后在应用程序中加载300图像。但在我的应用程序中,我只能显示一些图像,直到它崩溃?

  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

31806012字节= 31.806012 mb 4194304字节= 4.194304 mb

1)从我的理解应用程序所需的内存是31mb 但该设备目前只有4mb的剩余24+内存 内存不足,所以它崩溃了。

2)facebook找到快速滚动的解决方案并按照

加载更多图像

a)减少垃圾收集

b)编写自定义事件总线

c)将照片移动到原生堆

d)编写自定义ListView Recycler

for more details see the link

希望它有所帮助。