[英]static variables, what is their life span?
我在我的应用程序中使用静态变量,其中很多。 我的问题是,当我退出应用程序时,它们仍然会在内存中吗? 如果是,我该如何纠正这个问题。 提前致谢。
当类被ClassLoader加载时,静态变量被加载,并且当它被卸载时将被删除
对于这个问题的下一位读者 -
正如大家在答案中所说,静态变量是类变量。 它们保留在内存中,直到该类未从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中不再运行类的实例时,将卸载该类,并且静态变量将被允许用于垃圾收集。
除了其他答案之外,还要注意,如果那些静态“变量”实际上是“静态最终”原始常量,那么它们实际上并不是作为单独的实体存在,而是它们的值被编译到所有使用的类中他们(不只是定义他们的那个)。
静态变量与类相关联,只要类在内存中(它们在应用程序终止后就不再存在),它们就会存在。
有时,您希望拥有所有对象共有的变量。 这是通过static modifier
完成的。 Fields that have the static modifier in their declaration are called static fields or class variables
。 They are associated with the class, rather than with any object
。 Every instance of the class shares a class variable, which is in
位于内存 Every instance of the class shares a class variable, which is in
一个固定位置 。 任何对象都可以更改类变量的值,但也可以在不创建类实例的情况下操作类变量。
当实例不使用时,垃圾收集器将销毁它。 这意味着您的实例将从内存中删除。
我在我的应用程序中使用静态变量,其中很多。
静态变量不受自动内存管理器的影响,您应该在onDestroy
方法(Android)中将它们设置为null。 他们属于一个肯定的类,它的确适用于@Jigar Joshi 。
如果它是C / C ++,如果你没有收集垃圾,你应该使用内存管理程序。 如果它是java,关闭来自内存的任何“javaw”程序并关闭jvm
静态变量被称为类变量,并且在卸载类时加载和卸载类时加载范围。 例如一个类变量
private int classinVar;
当加载类时,它会被默认值自动初始化,当你获得注销时,相同的概念就是注销,然后该类将使用其静态字段脱离上下文。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.