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

nis*_*ter 11 java android garbage-collection

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

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

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

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

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

但没有结果,应用程序仍然有效(即使在旧设备上),我的演示与OutOfMemoryException崩溃.

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

谢谢!

Jan*_*dec 2

好吧,“GC”实际上被滥用了“内存不足杀手”,它会像通过信号 9 一样杀死应用程序。在 root 设备中,您应该能够从 shell 调用kill(1)命令或从本机调用kill(2)函数库(我不确定它是否绑定到 Java)并随时终止您的应用程序。

系统通常会onStopActivity进入后台时调用,然后终止应用程序,而不会进一步发出警告,也没有机会做出反应。因此,如果您离开应用程序并终止它,则可以适当模拟它被 OOM 终止。

  • @nister:当你从任务管理器中杀死它时,可能就是这样。但问题是当应用程序因内存不足而被终止时会发生什么。 (2认同)