我在我的应用程序中使用了许多静态变量,我的问题是,当我退出应用程序时,它们是否仍然存在于内存中?如果是,我该如何解决这个问题。谢谢。
我在我的应用程序中使用了许多静态变量,我的问题是,当我退出应用程序时,它们是否仍然存在于内存中?如果是,我该如何解决这个问题。谢谢。
对于这个问题的下一位读者 -
正如其他人在答案中所说,静态变量是类变量。它们会一直保存在内存中,直到该类从JVM中卸载为止。
在Android中,当我们关闭任何应用程序时,它并不完全关闭,它仍然存在于最近使用应用程序堆栈中。你可以通过长按主屏幕键来查看(在大多数设备上)。
Android itself kicked out those recent apps when the other app needs memory
在Android中,静态变量何时卸载-
-You force stop your app.
-Application crashes.
-You clear your app data.
-Switch off your Device.
-Android kicked out recent app
静态变量将随着类在JVM中的加载而存在。当JVM中不再运行该类的实例时,该类将被卸载,静态变量将有资格进行垃圾收集。
除了其他答案之外,还要注意,如果这些静态“变量”实际上是“静态final”基本常量,则它们根本不存在作为单独实体,而是它们的值被编译到使用它们的所有类中(不仅仅是定义它们的那个类)。
静态变量与类相关联,只要该类在内存中存在(一旦您的应用程序终止,它就会停止存在),它们就会存在。
static修饰符
来实现。在其声明中具有静态修饰符的字段称为静态字段或类变量
。它们与类相关联,而不是与任何对象相关联。
类的每个实例共享一个类变量,该变量位于内存中的一个固定位置
。任何对象都可以更改类变量的值,但也可以在不创建类的实例的情况下操作类变量。
当实例不再使用时,垃圾回收器会将其销毁。这意味着您的实例将从内存中擦除。
我在我的应用程序中使用了很多静态变量。
静态变量不受自动内存管理的影响,您应该在onDestroy
方法(Android)中将它们设置为null。它们肯定属于一个类,这正如@Jigar Joshi所指出的那样。
静态变量被称为类变量,在作用域方面,它们在类加载时加载,在类卸载时卸载。例如,像这样的类变量:
private int classinVar;
类在加载时会自动初始化其默认值,同样的概念也适用于注销。当您注销后,该类将与其静态字段一起退出上下文。
如果是C/C++,而且您没有收集垃圾,那么您应该使用内存管理程序。如果是Java,请关闭内存中的任何“javaw”程序并关闭JVM。