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

标签 java android garbage-collection

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

  • 应用程序长时间处于后台(空闲模式)并被 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/

相关文章:

flash - 从浏览器卸载时清理 as3 flash 应用程序

java - Docker Compose 出现异常

java - Sonar 测试用例失败

java - Android 通过 URL 获取图片

java - 单击单选按钮时如何 toast 消息

android - WindowManager 添加的 View 上的 ViewPager 获取 "java.lang.IllegalArgumentException: No view found for id"

java - 停止 MediaPlayer 时出现问题

java - 奇怪的 DAO 设计导致 PermGen 错误?

ios - 什么时候应该在 MonoTouch build设置中启用 “reference counting extension”?

java - 哪个版本的tomcat与Java 1.6兼容