2014-10-04 3 views
8

Kürzlich habe ich die maximale Speicherspitze meiner Anwendung von 100 MB auf 45 MB reduziert und ich bin neugierig, was die Nachteile der Verwendung der Android: andere als die das Potenzial, andere Anwendungen aus drücken der Erinnerung? Wenn die Größe nicht ausreicht, um andere Anwendungen zu verdrängen, wäre das nicht eine gute Ausfallsicherheit, zum Beispiel wenn Ihre App nur für vier Tage auf einer Convention genutzt wird, wo ein Absturz möglicherweise katastrophal wäre? Oder gibt es einen anderen Betrug, an dem ich vorbei schaue?Was sind die Nachteile von Android: largeHeap = "true"?

Antwort

4

Von meinem Verständnis wird alles, was es wirklich tun wird, Ihrer Anwendung ein höheres Speicherlimit erlauben - die Größe von largeHeap unterscheidet sich jedoch zwischen den Geräten, so dass Sie nicht eine bestimmte Menge an zusätzlichen Speicher garantieren. Wir verwenden es bei meiner Arbeit für eine unserer Anwendungen, da es die einzige Anwendung ist, die auf dem Gerät ausgeführt wird.

3

Wie this training guide darauf hingewiesen,

„zunehmend die zusätzlichen Speicher verwenden zu Lasten der Gesamtbenutzererfahrung sein wird, weil Garbage Collection kann länger und System nimmt Leistung langsamer sein, wenn Aufgabe Schalt oder andere übliche Operationen ausführen. "

Ich denke, das ist eine sehr effektive Frage, und lassen Sie mich einige zusätzliche Erklärung dazu hinzufügen.

1) Längere Garbage Collection Zeit:

Es ist schwer zu messen, wie viele zusätzliche Zeit für größere Haufen nehmen würde. Weil viele Dinge die Zeit der Müllsammlung beeinflussen. Welche Android-Laufzeitumgebung (Dalvik oder ART) verwendet wird, wirkt sich auf die Zeit der Speicherbereinigung aus (mehr dazu unter here). Auch die Speicherbereinigung wird unter different Android version anders durchgeführt. Aber es ist sicher, dass größere Haufen Garbage-Sammlungen länger dauern. Weil der Garbage Collector im Grunde genommen den gesamten Live-Satz von Objekten durchlaufen muss. Wenn Sie neugierig sind, können Sie mehr über dieses Thema von Memory management for Android Apps Sitzung bei 2011 Google I/O erfahren. Wie in der Folie der Sitzung erwähnt, beträgt die Zeit für die Pausenspeicherung etwa 5 ms. Sie mögen denken, dass wenige Millisekunden keine große Sache sind, sondern jede Millisekunde zählt. Das Android-Gerät muss seinen Bildschirm alle 16 ms und länger aktualisieren. Die GC-Zeit kann die Frame-Verarbeitungszeit über die 16-Millisekunden-Grenze hinaus erhöhen, was zu einem sichtbaren Hängenbleiben führen kann.

2) Langsamer Task-Wechsel:

Wie erläutert here,

kann das System Prozesse in der LRU-Cache töten mit dem Prozess beginnen, am wenigsten kürzlich verwendet, aber auch einige Überlegungen geben gegen welche Prozesse am speicherintensivsten sind.

Also, wenn Sie größere Heap verwenden, Ihr Prozess würde eher getötet werden, wenn es hintergründig ist, was bedeutet, es längere Zeit in Anspruch nehmen, wenn Benutzer von anderen Anwendungen zu Ihnen wechseln möchten. Auch Hintergrundprozessen werden eher ausgeschlossen, wenn Ihr Prozess im Vordergrund steht, da Ihre App mehr Arbeitsspeicher benötigt. Das bedeutet, dass der Wechsel von Ihrer App zu anderen Apps auch länger dauert. Diese sind offensichtlich schlecht für Benutzer.

Verwandte Themen