variables statiques, quelle est leur durée de vie?

J’utilise beaucoup de variables statiques dans mon application. Ma question est, quand je sors de l’application seront-ils encore en mémoire ..? Si oui, comment puis-je corriger cela? Merci d’avance.

La variable statique est chargée lorsque la classe est chargée par ClassLoader et sera supprimée lorsqu’elle est déchargée

Pour les prochains lecteurs de cette question-

Comme tout le monde l’a dit dans sa réponse, les variables statiques sont des variables de classe. Ils restnt en mémoire jusqu’à ce que la classe ne soit pas déchargée de la machine virtuelle Java.

Dans Android, vous avez constaté que lorsque nous fermons une application, elle ne se ferme pas complètement. Cela rest dans la stack d’applications récente, ce que vous pouvez voir après une longue pression sur le bouton d’accueil (Sur la plupart des périphériques).

Android itself kicked out those recent apps when the other app needs memory 

Sous Android, le déchargement des variables statiques

  -You force stop your app. -Application crashes. -You clear your app data. -Switch off your Device. -Android kicked out recent app 

En plus des autres réponses, notez également que si ces “variables” statiques sont en fait des constantes primitives “finales statiques”, elles n’existent pas du tout en tant qu’entités distinctes, mais leur valeur est compilée directement dans toutes les classes qui utilisent eux (pas seulement celui qui les définit).

La variable statique restra active aussi longtemps que la classe sera chargée dans la machine virtuelle Java. Lorsqu’il n’y a plus d’instances de la classe en cours d’exécution dans la machine virtuelle Java, la classe sera déchargée et la variable statique sera admissible pour la récupération de place.

Les variables statiques sont associées à une classe et elles restront actives tant que la classe est en mémoire (ce qui cesse d’exister à la fin de votre application).

Parfois, vous souhaitez avoir des variables communes à tous les objects. Ceci est accompli avec le 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 un emplacement fixe en mémoire . Tout object peut modifier la valeur d’une variable de classe, mais les variables de classe peuvent également être manipulées sans créer d’instance de la classe.

Lorsque l’instance n’est pas utilisée, le ramasse-miettes va la détruire. cela signifie que votre instance sera effacée de la mémoire.

J’utilise beaucoup de variables statiques dans mon application.

Les variables statiques sont immunisées contre le gestionnaire de mémoire automatique et vous devez les définir sur null dans la méthode onDestroy (Android). Ils appartiennent à une classe sûre et cela fonctionne exactement comme le voulait Jigar Joshi .

Si c’est C / C ++, et si vous n’avez pas collecté les ordures, vous devriez utiliser un programme de gestion de mémoire. Si c’est java, fermez tous les programmes “javaw” de la mémoire et fermez jvm

Les variables statiques sont appelées variables de classe et, en tant que scope, elles sont chargées lorsque la classe est chargée et déchargées lorsque la classe est déchargée. par exemple une variable de classe comme

 private int classinVar; 

est automatiquement initialisé avec sa valeur par défaut lorsque la classe est chargée, et le même concept est utilisé pour la fermeture de session lorsque vous obtenez la fermeture de session, cette classe deviendrait alors hors contexte avec son champ statique.