繁体   English   中英

静态变量,它们的寿命是多少?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM