GC会从内存中清除哪些活动?

时间:2016-05-31 20:15:44

标签: android memory

假设我有3项活动 Demo1 Demo2 Demo3 以及 GlobalClass

GlobalClass

 public Class GlobalClass{
 public static int staticVar = 1;
}

demo1的

public Class Demo1 extends Activity{
onCreate(){
  if(buttonClicked = 1){
    openDemo2();}
  else{
    openDemo3();}
  }
}

DEMO2

public Class Demo2 extends Activity{
 int var = 10;
 onCreate(){
  GlobalClass.staticVar = var;
 }
}

Demo3

public Class Demo3 extends Activity{
  onCreate(){
    int var = GlobalClass.staticVar;
  }
}

所以现在假设我们在Demo1,我们首先打开Demo2。然后我们关闭Demo2,回到Demo1并打开Demo3。然后我们关闭Demo3并回到Demo1。

  • 所以此时哪些活动/活动将在记忆中 GC之后?

  • 是否保存了该活动的整个视图(该活动的布局) 在记忆中?

  • 静态变量会有什么不同吗?

1 个答案:

答案 0 :(得分:0)

您无法假设有关GC的任何具体信息。它基于过程的需求和对象的使用。请注意,GC与Android的低内存处理不同,后者将完全拆除并销毁未使用的进程。在您的Demo1示例中 - >演示2 - > Demo3有可能没有回收或垃圾收集。当Demo1启动Demo2时,Demo1暂停并停止,但仍然驻留在应用程序进程的内存中。当Demo2退出并返回Demo1时,Demo2通过BACK按钮退出(导致onDestroy()被调用),然后Demo2及其相关内存应该通过GC。但是,它还取决于你在Demo2中做了什么。如果你不小心的话,完全有可能意外泄漏物体。