如何使Android应用程序';吃';RAM存储器

如何使Android应用程序';吃';RAM存储器,android,memory,memory-management,ram,Android,Memory,Memory Management,Ram,我知道这听起来很疯狂,但不是:) 我有一个应用程序在ram内存不足的手机上运行时会被杀死。 为了测试这个应用程序,我需要一些能“吃掉”内存的东西,到目前为止,我通过启动很多游戏、打开应用程序、按下home(主页)按钮等等来实现这一点,只为了吃掉内存 所以我觉得浪费10-20分钟来填满RAM内存是愚蠢的,也许有其他虚拟应用程序可以做到这一点,我会用它来“吃掉”手机上的RAM内存,所以我的其他应用程序会被android系统杀死 到目前为止有人有这个问题吗?一个应用程序能做到这一点吗? 仅仅从一个应用

我知道这听起来很疯狂,但不是:)

我有一个应用程序在ram内存不足的手机上运行时会被杀死。 为了测试这个应用程序,我需要一些能“吃掉”内存的东西,到目前为止,我通过启动很多游戏、打开应用程序、按下home(主页)按钮等等来实现这一点,只为了吃掉内存

所以我觉得浪费10-20分钟来填满RAM内存是愚蠢的,也许有其他虚拟应用程序可以做到这一点,我会用它来“吃掉”手机上的RAM内存,所以我的其他应用程序会被android系统杀死

到目前为止有人有这个问题吗?一个应用程序能做到这一点吗? 仅仅从一个应用程序就可以消耗大量ram内存吗


谢谢

这里只是一个猜测,但是创建一个应用程序,其中包含一个活动类、一个抽象服务类和几个扩展抽象类的具体服务

抽象服务类将消耗内存,您可以做一些简单的事情,比如从资源中加载相同的位图并将其放入LruCache,睡眠几毫秒,然后重复

然后,您将创建几个扩展抽象的服务类,但不需要进一步的代码,只需

public class MemoryEaterService_01 extends AbstractMemoryEaterService{}
现在,从活动启动开始,您将做一件显而易见的事情,即启动服务

现在,聪明的部分开始了,在清单上,您将在不同的进程中声明这些服务中的每一个(基本上是使用自己的堆内存在不同的VM中启动每一个服务),如下所示:

<service android:enabled="true"
     android:exported="true"
     android:name="memoryEater_01"
     android:process="com.yourpackage.memory_eater_01" >
</service>

如果您尝试过,请告诉我它是否有效,我对此非常好奇。

面临同样的问题(需要在设备上填充RAM内存,直到我的应用程序死掉) 碰巧在谷歌市场上找到了一个这样的程序:)

在命令提示符中,键入以下命令以获取所有具有优先级的进程(nice)

例如:cmd>adb shell ps-p

因此,取一个进程,并将其优先级设置为某个值(范围-20到+20)。较小的值具有更高的优先级

例如:亚行壳牌renice-20782[亚行壳牌renice]
通过这种方式,我们可以让这个过程消耗更多的内存,通过这种方式,

只需将巨大的位图循环加载到列表中,或者在视图中显示它们(如果您需要)。

我已经编写了一个小的免费应用程序,它完全满足您的需求。而且它是免费的,没有广告或许可:)


您是否尝试过在低内存设置下使用emulator?我需要一台真正的设备:(,emulator不是一个选项,我知道我可以随心所欲地设置AVD设置,但这可以帮助我解决这个问题。创建几个应用程序,使用不同的软件包名称,但使用相同的代码,使用一点内存,但在您单击某个按钮使其停止之前保持一些后台线程运行。确保后台线程正在访问一个大型memory对象(如大图像)。一个应用程序只能占用这么多内存,因此需要几个。你可以根设备吗?也许你可以使用一些愚蠢的C程序分配更多内存?我想你应该看到这一点。你可以共享你应用程序的源代码吗。此链接已失效。