Tipps:SpeichereffizientesProgrammieren
aus JControlWiki, der freien Wissensdatenbank
TODO! TODO! TODO!
Hier fehlen noch Tipps und Tricks mit dem Umgang des knappen Speichers. Bitte helft mit, diese Seite zu verschönern und Inhalte zu ergänzen. Die folgenden Punkte sind erstmal nur Notizen von mir...
Allgemein gilt bei Speicherproblemen:
- so wenig wie möglich Objekte anlegen (konstante Strings benötigen z.B. sehr viel weniger Speicher als zusammengesetzte)
- lieber Berechnungen mehrfach ausführen, als einmal berechnen und Wert zwischenzuspeichern
- Threads benötigen recht viel Speicher
- die Methodenaufruftiefe optimieren ( nicht: a->b->c->d->e lieber: a->b->c + a->d + a->e "falls möglich")
- der Garbage-Collector kann auch von Hand angetriggert werden "Management.gc()"
- dieser kann aber auch nur das wegwerfen, was nicht mehr benötigt wird und wird normalerweise bei kritischem Speicherstand automatisch angetriggert, dies hilft also nur bedingt in speziellen Fällen
- man kann dem GC helfen, indem man nicht benutzte Objekte auf <null> setzt
- Objekte mehrfach nutzen, statts 2 mit ähnlichen Inhalt
- keine getter- und setter-Methoden nutzen, wo es nicht notwendig ist (bringt besonders in Punkto-Perfomance etwas)
- die JControl/SmartDisplays haben die Fähigkeit Klassen zu entladen
- Dies ist untypisch für eine VM, aber bei dem knappen Speicher sehr nützlich.
- So lange keine Instanzen einer Klasse existieren, kann eine Klasse Entladen werden.
- D.h. man kann beispielsweise eine statische Methode einer Klasse aufrufen, wird diese Methode nur selten benutzt (z.B. die Management-Klasse und getProperty-Methode) dann wird sie nach einer gewissen Zeit wieder entladen.
- Vorsicht - bei statischen Variablen! Die Inhalte gehen verloren sobald die Klasse entladen wird.
- Dies kann man verhindern durch die Methode'Management.setPersistent()'.
- [...]
Eventuell hilft dies hier auch ein wenig weiter:
