如何模拟Android GC杀死应用程序

时间:2012-11-06 14:14:59

标签: java android garbage-collection

我需要在下一种情况下测试应用程序的序列化\反序列化:

  • app在后台很多时间(空闲模式)并被GC杀死;
  • 应用程序处于后台,由于资源(内存\ cp)缺乏而被GC杀死;

在某些设备上,可以通过启动1-2个游戏进行模拟。 但是在拥有1GB内存的四核设备上,4-10个重型游戏非常难,需要花费大量时间。

我尝试实现一些模拟加载资源的演示:

  • 创建位图数组
  • 创建对象数组
  • 推出大量服务
  • 开展了很多活动

但是没有结果,应用程序仍然可以工作(即使在旧设备上),我的演示也因为OutOfMemoryException而崩溃。

如何在演示应用程序中模拟高负载?

谢谢!

2 个答案:

答案 0 :(得分:2)

好吧,“GC”实际上被滥用“Out Of Memory Killer”并且就像信号9一样杀死应用程序。在root设备中你应该能够从shell调用kill(1)命令或{{3来自本机库的函数(我不确定它是否与Java绑定)并随时终止你的应用程序。

系统通常会在onStop中调用Activity进行后台处理,而不会在没有进一步警告的情况下杀死应用程序,也没有机会做出反应。因此,如果您离开应用程序并将其杀死,则可以模拟它被OOM杀死。

答案 1 :(得分:0)

在Play商店中安装任何内存清除器。我安装了这个:easymemorycleaner

一旦你清理了你的记忆。内存中存储的变量将消失。除非您将数据存储在Parcelable中。它将是持久的。