Android ordnungsgemäße Reinigung / Entsorgung

8

Gibt es eine Möglichkeit, Objekte und andere von Ihnen erstellte Variablen zu "säubern"? Oder werden sie automatisch entsorgt oder habe ich das ganze Konzept falsch? Was ist der richtige Weg, um dies zu tun? Ich versuche, den GC so weit wie möglich zu vermeiden.

    
semajhan 14.07.2011, 19:29
quelle

5 Antworten

12

Die einzige Möglichkeit zur Bereinigung in einer GC-Sprache ohne Speicherverwaltung ist der GC. Sie können GC erzwingen, aber es ist nicht zu empfehlen, der GC ist ziemlich gut, um mehr proaktive Set-Objekte auf Null für den GC zu bereinigen.

Zusatz:

Versuchen Sie auch, Objekte so lokal wie möglich zu machen, so dass sie GCed sind, wenn sie den Rahmen verlassen.

    
Ravi Vyas 14.07.2011, 19:34
quelle
3

Für eine umfassendere Antwort speziell für Android:

Stellen Sie sicher, dass Sie den Anwendungslebenszyklus für Android überprüfen. Es wird Ihnen helfen, Aktivitätslecks in Android zu vermeiden.

    
Codeman 14.07.2011 19:37
quelle
3

Der Aufruf von System.gc() erzwingt die Garbage Collection.

Es gibt ein System, das Referenzen auf von Ihnen erstellte Objekte zählt. Wenn Sie viel loopen und viele Objekte erstellen, erzeugen Sie Zeitabschnitte, in denen sie sich stapeln. Das System wird den Müll sammeln, wenn Ihr Prozessor nichts tut, oder es wird warten, bis Sie mehr freien Speicher benötigen, bevor die Sammlung stattfindet. Wenn Sie bereits seit einiger Zeit verarbeitet werden, treten bei der Leistung aufgrund von Garbage Collection in Ihren Prozessen Schluckauf auf.

Bitte sehen Sie sich diese Seite an und suchen Sie nach "Garbage Collection"

Ссылка

HINWEIS: Alles, was mit einem Anwendungskontext erstellt wurde, bleibt bis zum Ende der Anwendungsausführung bestehen. Alles, was mit einem Aktivitätskontext erstellt wurde, bleibt bis zum Ende der Aktivität bestehen. Diese beiden Situationen können Speicherlecks verursachen!

    
Chris Lucian 14.07.2011 19:34
quelle
2

Meist werden sie bereinigt, solange Sie keine Referenz auf das Objekt (Variable) pflegen. Etwas wie cursor 's und bitmap ' s müssen jedoch geschlossen werden, bevor sie gelöscht werden können, um Speicherlecks zu vermeiden.

Ich glaube nicht, dass Sie sich um den GC kümmern müssen, solange Ihre Objekterstellung nicht übertrieben ist. Hinweis: GC ist ein Teil von Java. Du kannst es nicht vermeiden.

Nachtrag 1: Wenn Sie sich wirklich Sorgen machen, könnten Sie Variablen wiederverwenden. Auf diese Weise wird die Erstellung von Objekten auf ein Minimum beschränkt, aber dadurch verlieren Sie diese Variable und können nicht viele Daten speichern.

    
AedonEtLIRA 14.07.2011 19:32
quelle
2

Android-Aktivitäten haben onDestroy () -Methode. Sie können diese Methode verwenden, um offene Verbindungen oder Dialoge zu schließen oder ausstehende Aufgaben zu schließen.
Sie könnten auch über Java GC lesen, um ein besseres Verständnis davon zu erhalten. Ich würde SCJP Buch, Garbage Collection Kapitel empfehlen. Es erklärt gut, wenn ein Objekt für die Garbage Collection geeignet wird.

    
Maggie 14.07.2011 19:39
quelle