RAM wird zugemüllt

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Eingeproggt

Betreff: RAM wird zugemüllt

BeitragSo, Jul 15, 2007 22:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Servus erstmal.

Mein Spiel läuft nach folgendem Muster:
Level wird geladen (ca 4MB Speicheranforderung durch Bilder und Variablen)
Spieler spielt (ah, echt Very Happy ) Dabei entstehen laufend Types (Schüsse)
Spieler beendet das Spiel und kehrt ins Hauptmenü zurück (Bilder werden mit FreeImage gelöscht und Types mit Delete gelöscht)

Und jetzt bleiben 0,5 bis 1MB Daten im Speicher zurück. Zusätzlich zu den daten, die fürs Spielmenü immer im Speicher liegen. So wächst der Datenmüll jedesmal an, wenn man einen Level wechselt oder einen beendet.

Was kann man außer FreeImage, Delete und CloseFile noch machen?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

StepTiger

BeitragSo, Jul 15, 2007 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Also Schüsse solltest du schon während des Programmablaufs löschen.

Sind denn 0.5MB so wichtig?
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

D2006

Administrator

BeitragSo, Jul 15, 2007 23:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Es bleibt auf jedenfall anzumerken, dass das Löschen von Type-Instanzen RAM Speicher idR nicht für das Betriebssystem wieder freigibt, sondern für neue Instanzen des Types behält. Das könnte dann die passende Erklärung sein, wenn mit steigendem Level auch mehr Schüsse (gleichzeitig) gebraucht werden.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Eingeproggt

BeitragMo, Jul 16, 2007 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten.

Die Schüsse werden während des Programmablaufs gelöscht, es ging mir nur um die, die zB beim Drücken von Esc noch zu sehen sind.

Dass Types nach Delete noch im Speicher liegen wäre eine Erklärung. Aber wieso brauchen die soviel Speicher? Ich hatte mit höchstens 1kb pro Type-Instanz gerechnet. Naja, kann schon hinkommen.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Lunatix

BeitragMo, Jul 16, 2007 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
0.5mb durch types?
[code]
Type Schuss
Field id:int
Field speed:int
field iImage:int
field time:int
End Type
[code]

Das wären 16Byte + die Instanz und eventuell Struktur(?) des Types. iImage sollte aber auch nur ein Verweis auf das eigendlich image sein, nicht jedesmal neu laden (aber das weisst du sicherlich).

Demnach glaub ich ja nicht das das durch Types entstehen kann, es sei denn, du schiesst pro Level wirklich 512000(byte)/16(byte)=32768 mal...
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Eingeproggt

BeitragMo, Jul 16, 2007 13:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm, dann kommts halt doch nicht hin...

Meine Aufteilung ist so:

Code: [AUSKLAPPEN]
Type ki
      Field zielx,ziely
      Field dat ;Datei-Handle
      Field w
      Field timer
End Type

Type oelspur
      Field x,y
      Field timer
End Type

Type schuss
      Field x,y
      Field Strecke ;Zurückgelegte Entfernung
      Field rot ;Rotation, auch w
End Type

Type player
      Field img[359]
      Field w ;Winkel
      Field x#,y#
      Field v# ;Geschwindigkeit
      Field a# ;Beschleunigung
      Field nitro
      Field maxv ;Maximle Geschw
      Field aroll# ;Verzögerung beim Rollen
      Field abrake# ;Verzögerung beim Bremsen
      Field handling ;um wieviel der wagen gedreht wird
      Field dh#,iw ;Bildabmessungen halbe, für vereinfachung
      Field old_x,old_y,old_w
End Type


Vom player gibt es 3, davon 2 Computergesteuerte (Also 2 KI).
Oelspuren und Raketen gibt es 0-30 (Also weit entfernt von 32.768)

Das wars auch schon. Img[359] enthält übrigens lauter Images und nicht den Handle. Ich weiß, was du meinst, aber wenn man den Wagen drehen will, muss es so sein. (oder?)

Sollten meine Bezeichnungen / Variablentypen irgendjemanden verwirren: Ich schreibs gerade um, dass es platzsparender wird und man sich besser auskennt.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Lunatix

BeitragMo, Jul 16, 2007 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Beim Player brauchst du eigendlich nur alle 2-4 (oder noch weniger) Positionen darzustellen, also z.b. nur 90-180 Bilder. Oder du verwendest Sprites.

Wenn du Player mit gleichen Bildern hast, kannst du diesen auch die gleichen Bilder geben. Und beim Type löschen nicht vergessen, auch die Bilder zu löschen. Alle 359 oO
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...
 

Felat

BeitragMo, Jul 16, 2007 21:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du loadimage, loadtexture, loadsound etc. in loop mode benutzt?
Wenn ja, dann ist es kein wunder dass dein spiel läuft ins Müll..

Lunatix

BeitragMo, Jul 16, 2007 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich glaub das weiß er, da er schon ein bisschen mehr erfahrung hat bzw. länger im Forum ist als du...
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen...

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group