• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Eine halbe Ewigkeit - Speichermanagement

Sabeta

Geocacher
Ich habe mich schon immer gewundert wieso es manchmal flüssig läuft und manchmal eine halbe Ewigkeit dauert bis endlich mal etwas auf dem Garmin passiert.

Nun habe ich einfach mal collectgarbage("count") eingeben, ein schlichter Befehl der die aktuelle Speicherauslastung zeigt, bei meinem Oregon liegt der minimale Wert um 825, der maximal etwa bei 1400, Einheit unbekannt. Anzeigen lasse ich mir dies kontinuierlich mittels Timer. Lasse ich nun den Oregon liegen, sehr lange ohne etwas daran zu machen sinkt der Wert auf ca. 780. Ein paar Tastendrücke, Meldung und schwupps geht der Wert wieder hoch und zwar recht schnell. Kritisch wird es m.M.n. ab 1200, dann ist der Oregon schon sichtlich träge. Das automatische Speichermanagement greift irgendwann ein und gibt Speicher wieder frei, meist zu spät wie ich finde.

Nun habe ich an Stellen, die besonders durch Trägheit auffallen, den Befehl collectgarbage("collect") eingefügt, dieser wirft das Speichermanagment manual an und gibt sofort den Speicher frei, egal wie das OS die aktuelle Speicherbelegung bewert. Die Wirkung ist, es läuft nun alles flotter. :)

Nun ist die Frage, können anderen Geräte damit umgehen, der Befehl gehört laut Doku zu den Basisbefehlen von LUA.

Sabeta
 

Krolock

Geocacher
Um das Speichermanagement ohne Ausgabe aufzurufen, sollte der Parameter collect, also
Code:
collectgarbage("collect")
hilfreich sein. Dieser löst einen kompletten garbage-collection Zyklus aus

http://www.lua.org/manual/5.1/manual.html#pdf-collectgarbage
 
OP
S

Sabeta

Geocacher
Heute mal eine Härtetest

Oregon:
keine Probleme, aber es kommt denoch manchmal zu Verzögerungen

HTC:
keine Probleme, läuft aber auch ohne flott

iPhone
es kommt eine Fehlermeldung, die man wegklicken muß

Sabeta
 
OP
S

Sabeta

Geocacher
Jain, bring tut es schon etwas, es scheinen aber auch noch andere Faktoren bei der Performance eine Rolle zu spielen. An sich läuft es mit dem Befehl flüssiger und dann plötzlich (nicht reproduzierbar) hängt der Oregon. Ärgerlich ist halt die Fehlermeldung beim iPhone, ich muß also die Funktion kapseln oder aber eine spezielle Version für den Oregon schreiben, was eigentlich auch am schnellsten geht, da der Befehl sehr schnell mittels suchen/ersetzen aus der ganzen urwigo-Datei entfernt werden kann.

Derzeit baue ich den Wherigo nochmals grundlegend um, die Jahreszeit bietet sich für derartig langweilige Aktionen ja an, denn möglichweise liegt es an den Callbacks.

Sabeta
 

kansu_makugen

Geocacher
Sabeta schrieb:
...Ärgerlich ist halt die Fehlermeldung beim iPhone...

Kannst ja den Herrn Shawn P. Stanley mal anschreiben. Das ist der Entwickler der iPhone App. Wäre gut, wenn der über solche Probs informiert werden würde. Ich hatte auch mal irgendwo 'ne Mailadresse von ihm, aber meine Ordung... ;) Sollte man aber rausbekommen. Alternativ kam man das aber auch in der Earwigo Google Group ansprechen. Da liest der Gute mit.

Gruß
 
Oben