Hi zusammen, ich bin wieder mal auf ein Problem gestoßen.
Seitdem ich mit Surfaces arbeite steigt der Arbeitsspeicher welchen mein Programm belegt Kontinuierlich in die höhe.
Es ist leider erst sehr spät aufgefallen, also rekonstruieren ab wann das genau vorkommt... dazu brauche ich noch etwas.
Ich dachte vielleicht weis jemand einen Tipp nach was ich suchen muss, oder was ich vergessen haben könnte.
Ich habe eine alte Version meines Programms geladen bei der ich noch keine Surfaces benutzt habe und dort steigt die Belegung des Arbeitsspeicher nicht in die höhe.
Ob es aber wirklich an den Surfaces liegt kann ich natürlich auf die schnelle nicht sagen.
Eigentlich ist die Routine ganz einfach.
Create:
Draw:
Alles anzeigen
GameEnd:
Ich bin mir jetzt nicht Sicher ob es an den Surfaces liegt da ich noch nicht die Zeit hatte mich genauer damit zu beschäftigen (was ich aber noch tun werde).
Aber vielleicht weis ja auf die schnelle sonnst jemand ob es daran liegen kann oder nicht (würde mir einiges an Zeit sparen).
Für Hilfe wär ich sehr dankbar.
mfg BoS
EDIT: Hmm hab jetzt die alte Version gefunden und dort auf die schnelle provisorisch eingebaut das er auf ein Surface zeichnet bevor er es direkt Zeichnet, also so wie oben beschrieben, und der Arbeitsspeicher steigt auch nicht in die höhe, also liegt es wohl eher nicht an den Surfaces. Oder gibt es da etwas das Probleme machen kann wenn man mit mehreren Surfaces Arbeitet??
EDIT: Also an der Anzahl der Instanzen kann es auch nicht liegen, die vermehren sich auch nicht, es sind nur 9 und da kommt auch nix hinzu.
Jemand ne Idee woran es sonnst liegen könnte?
Hmm.... vielleicht eine ds_map oder ds_liste in die ich immer mehr hinein packe und nicht lösche... aber 200KB / Sekunde ist doch etwas viel für ne ds_map.
EDIT: Noch ein Nachtrag was ich vergessen habe zu sagen. Im Runner steigt der Arbeitsspeicherverbrauch NICHT an, nur wenn ich es Kompiliere und als EXE ausführe???
Seitdem ich mit Surfaces arbeite steigt der Arbeitsspeicher welchen mein Programm belegt Kontinuierlich in die höhe.
Es ist leider erst sehr spät aufgefallen, also rekonstruieren ab wann das genau vorkommt... dazu brauche ich noch etwas.
Ich dachte vielleicht weis jemand einen Tipp nach was ich suchen muss, oder was ich vergessen haben könnte.
Ich habe eine alte Version meines Programms geladen bei der ich noch keine Surfaces benutzt habe und dort steigt die Belegung des Arbeitsspeicher nicht in die höhe.
Ob es aber wirklich an den Surfaces liegt kann ich natürlich auf die schnelle nicht sagen.
Eigentlich ist die Routine ganz einfach.
Create:
Draw:
GML-Quellcode
- /// Zeichne etwas auf das Surface
- surface_set_target(sf_ABEF);
- draw_set_blend_mode_ext(var_blendMODEa[0], var_blendMODEb[0]);
- draw_sprite_ext(ds_map_find_value(Exist_Sprites, csi[2]), csi[3], csi[4], csi[5], 1, 1, 320, c_black, 1);
- draw_set_blend_mode(bm_normal);
- surface_reset_target();
- // Zeichne das Surface
- draw_set_blend_mode_ext(var_blendMODEa[1], var_blendMODEb[1]);
- draw_surface(sf_ABEF, 0, 0);
- draw_set_blend_mode(bm_normal);
- // Reinige das Surface
- surface_set_target(sf_ABEF);
- draw_clear_alpha(0,0);
- surface_reset_target();
GameEnd:
Ich bin mir jetzt nicht Sicher ob es an den Surfaces liegt da ich noch nicht die Zeit hatte mich genauer damit zu beschäftigen (was ich aber noch tun werde).
Aber vielleicht weis ja auf die schnelle sonnst jemand ob es daran liegen kann oder nicht (würde mir einiges an Zeit sparen).
Für Hilfe wär ich sehr dankbar.
mfg BoS
EDIT: Hmm hab jetzt die alte Version gefunden und dort auf die schnelle provisorisch eingebaut das er auf ein Surface zeichnet bevor er es direkt Zeichnet, also so wie oben beschrieben, und der Arbeitsspeicher steigt auch nicht in die höhe, also liegt es wohl eher nicht an den Surfaces. Oder gibt es da etwas das Probleme machen kann wenn man mit mehreren Surfaces Arbeitet??
EDIT: Also an der Anzahl der Instanzen kann es auch nicht liegen, die vermehren sich auch nicht, es sind nur 9 und da kommt auch nix hinzu.
Jemand ne Idee woran es sonnst liegen könnte?
Hmm.... vielleicht eine ds_map oder ds_liste in die ich immer mehr hinein packe und nicht lösche... aber 200KB / Sekunde ist doch etwas viel für ne ds_map.
EDIT: Noch ein Nachtrag was ich vergessen habe zu sagen. Im Runner steigt der Arbeitsspeicherverbrauch NICHT an, nur wenn ich es Kompiliere und als EXE ausführe???
Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Balls of Steel ()