Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何模拟Android GC杀死应用程序_Java_Android_Garbage Collection - Fatal编程技术网

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

Java 如何模拟Android GC杀死应用程序,java,android,garbage-collection,Java,Android,Garbage Collection,我需要在接下来的情况下测试应用程序的序列化\反序列化: 应用程序在后台运行了很长时间(空闲模式),并被GC杀死 应用程序位于后台,由于资源(内存\cp)不足而被GC杀死 在某些设备上,它可以通过启动1-2个游戏来模拟。 但在1gb内存的四核设备上,4-10个重量级游戏非常困难,需要花费大量时间 我尝试实现一些模拟资源加载的演示: 创建位图数组 创建对象数组 推出很多服务 开展很多活动 但并没有结果,应用程序仍然可以工作(即使在旧设备上),我的演示程序因OutOfMemoryExcepti

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

  • 应用程序在后台运行了很长时间(空闲模式),并被GC杀死
  • 应用程序位于后台,由于资源(内存\cp)不足而被GC杀死
在某些设备上,它可以通过启动1-2个游戏来模拟。 但在1gb内存的四核设备上,4-10个重量级游戏非常困难,需要花费大量时间

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

  • 创建位图数组
  • 创建对象数组
  • 推出很多服务
  • 开展很多活动
但并没有结果,应用程序仍然可以工作(即使在旧设备上),我的演示程序因OutOfMemoryException而崩溃

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

谢谢

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


当系统进入后台时,通常在
活动
中调用
onStop
,然后在没有进一步警告和反应的情况下终止应用程序。因此,如果您离开应用程序并将其杀死,则可以模拟它被杀死。

在play store上安装任何内存清理器。我安装了这个:


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

设置“不保留活动”下有一个开发人员选项,用于在用户离开后立即取消活动。我在我的4.0 android上有提到@Ifor的选项,但在2.3上我认为没有(我升级了)@Ifor,谢谢,但绝对不同。在“不保留活动”的情况下,将调用onDestroy,并且应用程序将正常关闭(就像从应用程序中常见的退出)。这看起来是事实,我也这么认为。但如果您检查活动回调和日志,您将看到完全不同的行为。当您从任务管理器中杀死应用程序时,它看起来像是从应用程序中正常退出(使用onDestroy并正确完成)。@nister:当您从任务管理器中杀死它时,它可能是这样。但问题是当应用程序因为内存不足而被终止时会发生什么。当Android因为内存限制而终止应用程序,然后用户打开应用程序时,最后一个活动被打开。手动终止应用程序时,仅恢复主活动。