Types gelöscht - bleiben aber im Speicher
Übersicht

![]() |
BadudelBetreff: Types gelöscht - bleiben aber im Speicher |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
habe mal wieder ein Problem mit dem Löschen von Types. Eifrig rumgesucht und getestet - doch der Speicher wird nicht freigegeben. Die Liste ist leer, un GCCollect wurde ausgeführt, und trotzdem... BlitzMax: [AUSKLAPPEN] SuperStrictZwischendrin ist extra Zeit, um den Speicher im Taskmanager zu überprüfen. Komischerweise löscht GCCollect nur wenige Bytes, und auch im TM sieht man wenig. Was mache ich falsch? Sollte es interessant sein: Ich benutze Blitzmax Demo 1.37, XP Freue mich über alle Antworten, viele Grüße, Badudel |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich nehme an, um die komplette Anzahl an Bytes zu ermitteln, die durch den GC gelöscht werden, zu ermitteln musst du GCSetMode(2) aufrufen, damit GCCollect() nicht zwischendurch aufgerufen wird.
mfg Thunder PS: BlitzMax: [AUSKLAPPEN] Method del() |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
Badudel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Warum diese Variante?
Weil ich die erste Möglichkeit von hier (Beitreag Dreamora) übernommen habe. Das Hauptproblem ist aber, dass im TaskManager trotzdem noch viel Speicher angezeigt wird. Für mein derzeitiges Projekt ist die Freigabe ungeheuer wichtig, weil ich da mit irre vielen Daten arbeite... |
||
Wir werden dem Schwein schon schlachten, auch wenn ihm quiekt.
Zum Teufel mit das Grammatik! |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es bleiben ein paar Bytes über, aber ich würde eher vermuten, dass liegt daran, das der GC versucht wirtschaftlich zu arbeiten. Ein dauerhafter Memory-Leak würde schnell auffallen.
BlitzMax: [AUSKLAPPEN] Print "Speicher " + GCMemAlloced() / 1024 + " kB (" + GCMemAlloced() + " bytes)" |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich sehe keinen Fehler.
Vor dem "GCCollect" wird der Garbage-Collector wahrscheinlich schon gearbeitet haben, weshalb dann fast nichts mehr zu tun ist. Das Ergebnis des Taskmanagers fällt wahrscheinlich so aus, weil es unsinnig wäre, Speicher an das Betriebssystem zurückzugeben, wenn man danach wieder welchen braucht. Daher wird ein BlitzMax-Programm nicht jeden programmintern freigegebenen Speicher gleich an das Betriebssystem übergeben, wenn es jeden Moment passieren könnte, dass er wieder gebraucht werden könnte. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zu TLink.remove() vs. Tlist.remove(obj):
Das Entfernen des Links ist dann sinnvoll wenn man jedes Objekt welches in einer Liste eingespeichert wird mit dem Tlink ausstattet den es dort einnimmt - dann geht das löschen nämlich ruckzuck, da die Liste nicht durchiteriert werden muss. So wie Du es bislang machst gewinnst Du keinerlei Geschwindigkeit und kannst weiter Tlist.remove(obj) nehmen. Das Speichern des TLink in einem Objekt ist also immer dann sinnvoll wenn es exakt in einer Liste verwendet wird. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group