【问题标题】:Stresstest Memory on AndroidAndroid 上的压力测试内存
【发布时间】:2014-09-30 12:09:51
【问题描述】:

是否可以对 Android 系统进行压力测试,以检查如果可用内存减少会发生什么(以及因此哪些应用程序被终止,...)。

我目前有一个测试应用程序,它定期在向量中分配 10MB。但是会引发 OutOfMemory 异常,达到 500MB。但是被测系统没有受到足够的影响。我需要获得更多内存。

是否有任何已知的库/程序可供使用,或者是否有任何其他方法可以让应用程序使用超过 500MB 的内存。

添加:我已经在清单中使用了android:largeHeap="true"

【问题讨论】:

  • 这是在虚拟设备上吗?似乎这实际上会因设备而异。

标签: java android testing stress-testing


【解决方案1】:

除了 root 设备和破解 Android 为运行的应用程序分配内存限制的方式之外,没有办法使用本机 Java 代码来增加内存限制。

但是(!),通过 JNI 使用 C++ 库可以让您绕过这个限制。在这一层上分配的所有内存都可以访问设备的整体内存池,而不是原生应用程序获得的沙盒池。

以 OpenGL 为例。通常,在发生 OutOfMemory 异常之前,您可能会在内存中保存 4-5 个大小为 1024x1024 的位图。但是,如果每次创建位图时,都将其转换为 OpenGL 纹理(在原生 C++ 库中进行管理)然后销毁位图,您会发现在到达设备的内存限制。

同样,如果你创建这样一个 C++ 库,并通过 JNI 将它链接到你的项目,理论上你可以在库中保存一个巨大的缓冲区,并使用 Java 代码附加更多数据,或提取部分数据需要的时候。

【讨论】:

  • 听起来很有希望。会看看它。谢谢。
【解决方案2】:

你可以试试这个应用

https://play.google.com/store/apps/details?id=derekwilson.net.rameater

我有偏见(我写了它),但它工作正常并且被许多开发人员使用。不需要特殊权限。

Android 将每个进程限制为最大内存量(通常为 500 MB,但可能会有所不同)。 Rameater 通过生成许多后台服务来解决这个问题,每个后台服务都可以分配内存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-08
    • 2012-06-05
    • 1970-01-01
    • 2013-07-02
    • 2014-05-31
    • 2011-08-11
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多