2012-06-21 19 views
9

Uso le variabili statiche nella mia app, molte di queste. La mia domanda è, quando esco dall'app saranno ancora in memoria ..? Se sì, come posso correggerlo. Grazie in anticipo.variabili statiche, qual è la loro durata?

+3

Cosa si intende per "signout"? Terminare il programma/processo/JVM? – Thilo

+1

@Thilo Penso che stia parlando di app Android ... Si prega di specificarlo, Raghav. – brimborium

+3

puoi dare altri esempi? o non credo che questa domanda vivrà a lungo – kommradHomer

risposta

22

variabile statica viene caricato quando classe viene caricata da ClassLoader, e verrebbe eliminato when it is Unloaded

2

Nessuna variabile rimane in memoria dopo l'arresto dell'applicazione.

4

Le variabili statiche sono associate a una classe e vivranno finché la classe è in memoria (che cessa di esistere una volta che l'applicazione termina).

+4

o una volta che la lezione viene scaricata (cosa che accade molto raramente). – Thilo

6

La variabile statica vivrà finché la classe viene caricata nella JVM. Quando non ci sono più istanze della classe in esecuzione nella JVM, la classe verrà scaricata e la variabile statica sarà eleggibile per la garbage collection.

+6

La classe non verrà scaricata, anche se non ci sono più istanze. Viene scaricato solo quando l'intero classloader si allontana. – Thilo

3

A volte, si desidera avere variabili comuni a tutti gli oggetti. Ciò è possibile con 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 inuna posizione fissa nella memoria. Qualsiasi oggetto può cambiare il valore di una variabile di classe, ma le variabili di classe possono anche essere manipolate senza creare un'istanza della classe.

Quando l'istanza non viene utilizzata, il garbage collector lo distruggerà. significa che l'istanza verrà cancellata dalla memoria.

7

In aggiunta alle altre risposte, si noti anche che se quelle "variabili" statiche sono in realtà costanti primitive "statiche finali", in realtà non esistono affatto come entità separate, ma il loro valore viene compilato direttamente in tutti le classi che li usano (non solo quello che li definisce).

3

Uso le variabili statiche nella mia app, molte di esse.

Le variabili statiche sono immuni rispetto al gestore automatico della memoria e si consiglia di impostarle su null nel metodo onDestroy (Android). Appartengono a una classe sicura e funziona esattamente come lo @Jigar Joshi.

+3

Non si parla di 'Android' qui. –

+1

sry man, colpa mia ma anche la stessa cosa in classico java, è necessario impostarli su null. – Sajmon

2

se è C/C++ e se non si sono raccolti i gavoni, è necessario utilizzare un programma di gestione della memoria. Se è java, chiudere tutti i programmi "javaw" dalla memoria e vicino JVM

+2

anche in C/C++, quando il processo termina (se questa è la domanda), il sistema operativo rilascia tutta la memoria. – Thilo

2

variabile statica del sono chiamati variabile di classe e in modo di ambito che hanno caricato quando la classe viene caricata e scaricata quando la classe viene scaricata. per esempio una variabile di classe come

private int classinVar; 

viene inizializzato automaticamente dal suo valore di default quando la classe caricata, e lo stesso concetto è con signout quando si arriva signout allora quella classe sarebbe andato fuori contesto con il suo campo statico.

10

per i lettori successiva di questo Question-

come tutti ha detto nella risposta che le variabili statiche sono di classe variabili. Rimangono nella memoria finché la classe non viene scaricata da JVM.

In Android avete visto che quando chiudiamo qualsiasi applicazione allora non si chiude completamente, Rimane nel recente stack applicativo, che si può vedere premere a lungo il pulsante home (sulla maggior parte dei dispositivi).

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

In Android, statico scarico variabile quando-

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