Was sind die Nachteile von Android: largeHeap="true"?

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 des android: largeHeap="true" anderen als sind Möglichkeit, andere Anwendungen aus dem Speicher zu verdrängen? 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?

    
ccoleman 04.10.2014, 04:27
quelle

2 Antworten

4

Nach meinem Verständnis wird Ihrer Anwendung nur ein höheres Speicherlimit gewährt - die Größe von largeHeap ist jedoch von Gerät zu Gerät unterschiedlich, so dass Ihnen nicht garantiert wird, dass Sie zusätzlichen Speicher benötigen. Wir verwenden es bei meiner Arbeit für eine unserer Anwendungen, da es die einzige Anwendung ist, die auf dem Gerät läuft.

    
Shadru 04.10.2014, 04:49
quelle
3

Wie dieser Schulungsleitfaden aufgezeigt hat,

  

"Die Verwendung des zusätzlichen Speichers wird zunehmend zu Lasten der allgemeinen Benutzererfahrung gehen, da die Speicherbereinigung länger dauert und die Systemleistung möglicherweise langsamer ist, wenn Taskwechsel durchgeführt wird andere übliche Operationen. "

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

1) Längere Zeit für die Speicherbereinigung :

Es ist schwer zu messen, wie viel zusätzliche Zeit für einen größeren Heap benötigt wird. 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 hier ). Auch die Speicherbereinigung wird auf der 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 in der Sitzung Speicherverwaltung für Android-Apps im Google E / A 2011 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) Langsamere Aufgabenumschaltung :

Wie hier erklärt ,

  

Das System kann Prozesse im LRU-Cache abbrechen, beginnend mit dem zuletzt verwendeten Prozess, aber auch , wobei berücksichtigt wird, welche Prozesse am speicherintensivsten sind.

Wenn Sie also einen größeren Heap verwenden, wird Ihr Prozess wahrscheinlich im Hintergrund abgebrochen, was bedeutet, dass es länger dauern kann, wenn Benutzer von anderen Apps zu Ihren Apps 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.

    
김준호 16.05.2016 08:27
quelle

Tags und Links