Ionic 2 / Ionic 3 - Müllsammlung

8

Ich versuche, ionic2 und ionic3 besser zu verstehen.

Wie funktioniert die Müllsammlung in ionischer?

  • Was wird zwischengespeichert und wann?
  • Wie können wir diesen Cache löschen?
  • Wie richten wir Elemente für G.C ein?
  • Müssen wir sogar Elemente für G.C einrichten?
  • Können / müssen wir Seiten für G.C einrichten?

Wie auf diesem Bild zu sehen ist ( source ):

Ein Teil des Speichers wird G.C'd, wenn eine neue Seite aufgerufen wird. Der Speicher ist jedoch immer noch deutlich höher als vor dem Abspielen eines Videos.

    
Ivaro18 15.09.2017, 11:36
quelle

1 Antwort

6

OK, ich werde es versuchen:

  • Ionic selbst hat nicht viel mit GC zu tun, es gibt keine geplanten Läufe einer Aufgabe, die hinter dir aufräumt. Das einzige, was ionic (oder genauer gesagt das Entwicklerteam hinter ionic) tun muss, ist ihre UI-Komponenten so zu entwerfen und zu implementieren, dass sie nicht zu viel Speicher auffressen und ungenutzten Speicher freisetzen. Vor allem bei Virtual-Scroll gab es Probleme mit Speicherlecks und so weiter.
  • Also lasst uns eine Stufe tiefer gehen: Eckig! Gleicher Punkt wie bei Ionen. Die Entwickler von Angular sind dafür verantwortlich, wie viel Speicher ihr Framework nutzt. Aber Angular bietet eine sehr nützliche Methode ngOnDestroy() . Warum ist diese Methode für Sie als App-Entwickler wichtig? Weil es Ihnen die Möglichkeit gibt, hinter sich aufzuräumen. Diese Methode wird kurz vor der Zerstörung Ihrer Komponente aufgerufen. Was bedeutet das? Sie brauchen Ihre zugewiesenen Objekte, Arrays, Videoelemente (setzen Sie src='' und dann load() ) usw. nicht mehr und Sie können den Speicher freigeben. Dies und dies sind gute Lesevorgänge zur Speicherfreigabe. Wie die Dokumentation für onDestory() erwähnt, müssen Sie jedoch nur Speicher freigeben, der nicht vom Automic GC bereinigt wurde (Abonnements, Media-Elemente, ...). Was uns auf die nächste Ebene bringt:
  • Javascript / Browser: Hier passiert der "echte" GC. Javascript verwendet ein mark-and-sweep Müllkollektor (alle modernen Browser werden mit einem ausgeliefert), Sie können darüber lesen hier . Es wird von Zeit zu Zeit ausgeführt und gibt jedes Objekt frei, das nicht mehr erreichbar ist. Um ein Objekt explizit für GC zu markieren, verwenden Sie das Schlüsselwort delete . Das folgende Bild visualisiert den Markierungs- und Sweep-Prozess:

  

Bild von diesem Artikel , es erklärt, wie Javascript Speicherverwaltung sehr detailliert arbeitet, ich stark   empfehlen Sie es zu lesen.

  • Und natürlich haben Sie immer den nativen GC von Java / Obj-C, der den nativen Teil der App bereinigt.
David 15.09.2017, 14:19
quelle