2016-07-25 11 views
1

In meinem Android-Spiel habe ich einige Aktivitäten, eine von ihnen hat eine OpenGL-Ansicht. Das Problem ist jedes Mal, wenn ich zwischen den Aktivitäten wechseln, der verwendete Heap-Speicher nicht freigibt, so zum Beispiel nach 10-20 Mal zwischen den Aktivitäten in einigen Handys, stürzt Application und schließen.android - Heap-Größe erhöht sich pro Aktivität

ich diese Struktur Code zwischen jeder Aktivität Zum Schalten:

 Intent it = new Intent(WorldChose.this, MainMenu.class); 
     startActivity(it); 
     overridePendingTransition(R.anim.from_middle, R.anim.to_middle); 
     finish(); 

ich viel gesucht haben, jeder sagt, dass Android sollte ungenutzten Speicher selbst befreien und ich sollte darüber keine Sorgen, aber es scheint, In meinem Fall macht es diesen Job nicht!

Was soll ich tun?

+1

http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html –

+1

Veröffentlichen Sie jede 'statische' Variable, die Sie haben können, und was Aktivitäten miteinander verbindet. Wenn beispielsweise Activity_A auf eine Instanz von Activity_B zeigt, können weder A noch B gesammelt werden, bis beide als frei gelten. – Bonatti

+0

Wahrscheinlich Speicherverlust, verwenden Sie Speicheranalyse-Tools wie MAT, um das Leck zu finden. –

Antwort

3

Wenn es Speicher schließlich nicht freigibt, dann haben Sie wahrscheinlich ein Leck. Ich würde nach Objekten suchen, die mit dem Betriebssystem registriert sind, asynchronen Tasks oder Threads oder irgendetwas anderem, das nach dem Ableben der Aktivität, die Referenzen auf die Aktivität hat, zurückbleibt.