Ich habe eine mobile Anwendung, die mit der Zeit immer langsamer wird. Meine Vermutung (zum Teil genährt durch dieser Artikel Ich vermute, dass dies auf die Fragmentierung des Speichers zurückzuführen ist, die die Anwendung verlangsamt, aber ich bin mir nicht sicher. Hier ist ein hübsches Diagramm des Speicherverbrauchs der App im Laufe der Zeit:
fraggle rock http://kupio.com/image-dump/fragmented.png
Die 4 Spitzen im Diagramm sind 4 Ausführungen der exakt gleichen Aufgabe in der App. Ich starte die Aufgabe, es ordnet ein Bündel von Speicher, es sitzt für ein bisschen (die flache Linie oben) und dann stoppe ich die Aufgabe. An diesem Punkt ruft es System.gc(); und der Speicher wird bereinigt.
Wie man sieht, dauert jeder der 4 Durchläufe der exakt gleichen Aufgabe länger. Die Tiefpunkte im Graphen kehren alle auf die gleiche Ebene zurück, so dass es zwischen den Aufgabenläufen keine Speicherlecks zu geben scheint.
Was ich wissen möchte, ist, ob die Speicherfragmentierung eine mögliche Erklärung ist, oder sollte ich zuerst woanders suchen, da ich bereits viel gesucht habe? Die Tiefpunkte im Diagramm sind relativ niedrig, so dass ich davon ausgehe, dass der Speicher in diesem Zustand nicht sehr fragmentiert ist, da es nicht viele kleine Speicherlöcher geben kann, die Probleme verursachen.
Ich weiß allerdings nicht, wie der j2me memory allocator funktioniert, also weiß ich es wirklich nicht. Kann jemand einen Rat geben? Hat jemand anderes Probleme damit und erkennt das Speicherprofil der App?