Author Topic: Memory frei machen, dabei was komisches beobachtet ( gelöst )  (Read 1990 times)

Offline nabz32

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 307
    • View Profile
#####UPDATE########
####Problem gelöst#####
Ich habe vergessen die Terrain Polygone zu löschen.
Das System war zwar so aufgebaut, dass ältere Polygonmodelle überschrieben wurden,
aber wenn sie nicht überschrieben wurden aber freigegeben wurden,
war das alte Polygon noch so lange im Speicher, bis es durch eine, voll durch Polygone gefüllte, Situation wieder
überschrieben wurde. Die Anzahl der Polygon 3D Objekte ist somit immer bis zur maximalen Polygonzahl gewachsen :-[.
Das selbe galt für die 3D Boxen.


Hallo,
ich habe eben den Ladeprozess meiner Engine umgeschrieben,
vorher habe ich einfach alle Objekte und Texturen versch. TileSets und ObjectSets geladen.

Jetzt habe ich es so umgeschrieben, dass die Karte einmal beim Speichern nach allen unterschiedlichen Objekten und
Texturen die auf der ganzen Karte sind abgeparst wird und die Liste zur Karte hinzugefügt wird.

Dateien aus der Liste werden beim laden der Karte geladen,
sind weniger als die maximal Ladbaren Objekte oder Texturen auf der Karte,
werden die nicht benötigten Sprites und Objekte mit Loadsprite "" , id und X_Objstart id ; X_ObjEnd gelöscht.

Wenn die erste Karte läuft ist der Arbeitsspeicher verbrauch geringer als vorher, wie zu erwarten war.
Wenn ich die Karte wechsle, steigt der Arbeitsspeicher verbrauch bei fast jedem Wechsel an, ( wenn man immer zwischen den beiden identischen Karten wechselt ), ab einem bestimmten Wert scheint sich der ArbeitsSpeicher Verbrauch relativ stabil zu halten.
Ist das normal bei GLBasic unter Windows,
oder sollte man mit LoadSprite "" , id / X_Objstart id ; X_ObjEnd aufpassen?

Update:

Mir ist aufgefallen, dass der Anstieg im Speicher nur dann auftritt, wenn neue 3d faces für das Terrain erstellt werden.
Dabei müsste die Anzahl und Speichergröße der Terrain faces immer gleich bleiben pro Karte und Sichtweite,
denn mit X_Objstart neu erstellte Faces überschreiben die, welche aus dem Scroll Fenster rausgefallen sind.
Die gleichbleibende Gesamtzahl der Tiles zeigt mir, dass es auch so läuft.

Auch merkwürdig, wenn ich eine Karte mit deutlich geringerer Anzahl an unterschiedlichen Objekten und Sprites
als bei der vorherigen lade, verändert sich der Speicherverbrauch überhaupt nicht.

Habe peinlich darauf geachtet jedes Lokale Array wieder freizugeben vor Funktionsende,
was kann noch zu einem Memory Leak führen?

[/spoiler]


« Last Edit: 2015-Sep-22 by nabz32 »

Offline nabz32

  • Community Developer
  • Dr. Type
  • ******
  • Posts: 307
    • View Profile
Wollte nur noch mal nachfragen
ob jemand schonmal Ähnliches beobachtet hat,
scheint sich auf der Pandora auch so zu verhalten, nach dem letzten Testbericht.

Edit:
Problem gelöst siehe Anfangspost.
« Last Edit: 2015-Sep-22 by nabz32 »