2012-12-30 10 views
19

Meine Anwendung verursacht diese gefürchtete GC_FOR_ALLOC Art und Weise zu oft an bestimmten Orten auftreten (Methoden):Wie minimieren GC_FOR_ALLOC Vorkommen?

12-29 22:20:30.229: D/dalvikvm(10592): GC_FOR_ALLOC freed 1105K, 14% free 10933K/12615K, paused 33ms, total 34ms 
12-29 22:20:30.260: D/dalvikvm(10592): GC_FOR_ALLOC freed 337K, 13% free 11055K/12615K, paused 25ms, total 26ms 
12-29 22:20:30.288: D/dalvikvm(10592): GC_FOR_ALLOC freed 278K, 14% free 10951K/12615K, paused 24ms, total 24ms 
12-29 22:20:30.495: D/dalvikvm(10592): GC_CONCURRENT freed 633K, 11% free 11317K/12615K, paused 16ms+3ms, total 79ms 
12-29 22:20:30.495: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 16ms 
12-29 22:20:30.499: D/dalvikvm(10592): WAIT_FOR_CONCURRENT_GC blocked 15ms 

Es ist mir klar, dass ich etwas falsch in Bezug auf die Speicherverwaltung tue (ja, Garbage Collection ist groß aber befreit mich immer noch nicht von einer gewissen Verantwortung zu wissen, wann & wie zuzuteilen).

Können Sie eine Fehlerbehebung oder Technik empfehlen, die mich zu den fehlerhaften Codezeilen und möglichen Lösungen führen kann?

+6

Sie können [dieses Blog-Post] lesen wollen (http://www.curious-creature.org/2009/02/07/track-memory-allocations-on-android/), geschrieben von Romain Guy (ja, der Google-Ingenieur, der jedes Jahr mehrere Male bei I/O redet). – Eric

+0

@Eric Das ist genau die Art von Zeigern, die ich brauche. Vielen Dank! (Übrigens, arbeitet Romain Guy mit [Patrick]?) – srf

+1

Ich glaube nicht. Patrick ist im Chrome-Team und Romain ist im Android-Team. Wie Patrick in einem Android-Talk endete? Ich weiß es nicht! : P – Eric

Antwort

55

Android DDMS, das Teil der Android-Entwicklungstools in Eclipse ist, verfügt über sehr nützliche Tools, die Sie für das Profiling und die Speicherzuweisungsverfolgung verwenden können.

Der folgende Screenshot markiert einige dieser Werkzeuge (alle unter DDMS), einige Werkzeuge müssen aktiviert werden, indem Sie auf die entsprechende Schaltfläche im linken Feld klicken (rot hervorgehoben) und dann können Sie die Werte sehen (einige mit Graphen) Wählen Sie im rechten Bereich die Registerkarte, die Sie ansehen möchten (in Blau hervorgehoben)

Der Heap- und Allocation-Tracker wird in Ihrem Fall sehr nützlich sein.

eclipse screenshot showing profiling and memory allocation tools

+0

Dies ist sehr hilfreich. Vielen Dank! Wird als akzeptiert markieren, wenn eine Antwort, die mich wirklich betäubt, nicht bald erscheint.) – srf

+47

@srf Zeit dein Versprechen ... zu liefern dieses. – ubuntudroid

+10

@srf kleine Erinnerung – gian1200