2013-10-25 17 views
5

Ho creato una classe che era statica per prima, questa classe non mantiene lo stato (non mantiene il contesto o alcuna variabile) è solo un elenco di funzioni. Ma la classe non è molto usata nell'app, quindi ho deciso di rendere la classe instantiable.Prestazioni di classe statica Android e classe di memoria non statica

Perché?

Perché penso che una classe instantiable utilizzerebbe meno memoria in quanto non è disponibile durante l'intero ciclo di vita dell'app.

È giusto?

Una classe statica utilizza più memoria di una classe non statica?

Grazie

+0

"Classe statica" non è un termine standard. Cosa intendi per "classe statica"? In ogni caso la risposta è probabilmente "no non c'è differenza". – Joni

risposta

9

Penso che tu abbia frainteso come funzionano le classi. Qualsiasi tipo di classe è "disponibile" per tutta la durata dell'app. La memoria utilizzata per la classe stessa (i metodi, ecc.) È molto diversa dalla memoria utilizzata dalle istanze . A meno che non sia effettivamente creare un'istanza della classe, è irrilevante. E anche le classi statiche possono essere istanziate - è solo che non mantengono un riferimento implicito a un'istanza della classe che le racchiude.

Se la classe in realtà non richiede un riferimento implicito (ad esempio non lo utilizza), quindi trasformarlo in una classe nidificata statica o comunque estrarlo come classe di livello superiore. (Le classi annidate possono essere a volte un dolore - le regole intorno alle classi di livello superiore sono più semplici.)

2

Una classe statica come tale non utilizza più memoria di una non statica. Tutte le classi sono sempre disponibili in un'applicazione: è sempre possibile utilizzare una classe statica o creare un'istanza di una non statica.

Se nella classe sono presenti solo metodi (che sono di tipi di metodo helper), una classe statica è più comoda da utilizzare (non è necessario creare un'istanza) e non influirà sull'utilizzo della memoria.

Problemi correlati