我需要在接下来的情况下测试应用程序的序列化\反序列化:
- 应用程序长时间处于后台(空闲模式)并被 GC 杀死;
- 应用在后台,由于资源(内存\cp)不足被GC杀死;
在某些设备上,可以通过启动 1-2 个游戏来模拟。 但是在具有 1GB 内存的四核设备上,要玩 4-10 个重度游戏非常非常困难,而且会花费很多时间。
我尝试实现一些模拟资源加载的演示:
- 创建位图数组
- 创建对象数组
- 推出大量服务
- 开展大量 Activity
但没有结果,应用程序仍然有效(即使在旧设备上),我的演示因 OutOfMemoryException 而崩溃。
如何在演示应用程序中模拟高负载?
谢谢!
最佳答案
好吧,“GC”实际上被滥用为“Out Of Memory Killer”,它会像通过信号 9 一样杀死应用程序。在获得 root 权限的设备中,您应该能够调用 kill(1)。来自 shell 或 kill(2) 的命令来自 native 库的函数(我不确定它是否绑定(bind)到 Java)并在需要时终止您的应用程序。
系统通常会在 Activity
进入后台时调用 onStop
,然后在没有进一步警告且没有机会使用react的情况下终止应用程序。因此,如果您离开应用程序并将其终止,这是模拟它被 OOM 终止的适当模拟。
关于java - 如何模拟Android GC杀死应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13252862/