是否有可能对Android系统进行压力测试,以检查可用内存减少时会发生什么(以及哪些应用程序被杀死,......)。
我目前有一个测试应用程序,它定期在向量中分配10MB。但OutOfMemory异常被抛出500MB。但是被测系统没有受到足够的影响。我需要获得更多的记忆。
是否有任何已知的库/程序可供使用,或者是否有任何其他方法可让应用程序使用超过500MB的内存。
添加:我已在我的清单中使用android:largeHeap="true"
了。
答案 0 :(得分:1)
除了生根设备和破解Android为运行应用程序分配内存限制的方式外,没有办法使用本机Java代码增加内存限制。
但是(!),通过JNI使用C ++库可以避免这种限制。此层上分配的所有内存都可以访问设备的整个内存池,而不是沙盒池本机应用程序获取的内容。
作为示例,请查看OpenGL。通常,在获取OutOfMemory异常之前,您可以在内存中保存4-5位图大小的1024x1024。但是,如果每次创建位图,将其转换为OpenGL纹理(在本机C ++库中管理)然后销毁位图,您会发现在到达之前可以容纳大量图片设备的内存限制。
同样,如果你创建这样一个C ++库,并通过JNI将它链接到你的项目,理论上你可以在库中保存一个大量的缓冲区,并使用Java代码附加更多的数据,或者提取一部分数据需要的时候。
答案 1 :(得分:0)
您可以尝试此应用
https://play.google.com/store/apps/details?id=derekwilson.net.rameater
我有偏见(我写过),但是它工作正常,并且被许多开发人员使用。不需要特殊权限。
Android将每个进程限制为最大内存量(通常为500 MB,但可能会有所不同)。 Rameater通过产生许多后台服务来解决此问题,每个后台服务都可以分配内存。