Hoher Arbeitsspeicher lt. Taskmanager?
Übersicht

CO2ehemals "SirMO"Betreff: Hoher Arbeitsspeicher lt. Taskmanager? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich schonwieder: Ich setze momentan ein Projekt um und habe da eine Frage: Für Debugzwecke lasse ich mir via GCMemAlloced() den allokierten RAM-Speicher anzeigen. Das sieht auch ganz gut aus, er pendelt sich bei einem Wert ungefähr ein und bleibt dann auch da (laut Return des Befehls). Nun habe ich mal beim Laufenlassen meines Programms den Taskmanager gestartet und siehe da: Dort wird der allokierte Arbeitsspeicher stetig mehr (ich nehme an, dass der Taskmanager im Reiter "Prozesse" in der Spalte "Arbeitsspeicher (privater Arbeitssatz)" den allokierten Speicher des Prozesses anzeigt?). Die Frage ist: Warum ist das so? Ich habe schon versucht dem entgegenzuwirken durch den Aufruf von GCCollect(), jedoch allokiert mein Programm immer weiter. Ich habe mal geguckt, was passiert, wenn ich das Programm einen längeren Zeitraum laufen lasse, war dann aber irgendwann im Taskmanager bei einem Wert von 1.000.000 K (wofür auch immer "Kelvin" in diesem Zusammenhang stehen soll ![]() |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sicher, dass du nicht irgendwo einen Memory Leak drin hast?
Ansonsten: Ich habe mal ein bisschen gesucht, und festgestellt, dass wohl einige User Probleme mit Ihrem Task-Mgr aufgrund eines tollen Features haben. http://www.winfuture-forum.de/...pic=164571 http://forum.chip.de/windows-7...56375.html |
||
Twitter
Download Jewel Snake! Windows|Android |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank für die Antwort.
Habe meine Spracheinstellungen kontrolliert und das Dezimaltrennzeichen sowie das Tausendergruppierungszeichen sind unterschiedlich. Also habe ich offensichtlich doch ein Memory-Leak in meinem Code und es liegt nicht an Windows (Schade ![]() Was mich aber interessieren würde: Warum gibt mir GCMemAlloced einen konstanten Wert zurück, obwohl das nicht korrekt ist? |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
GCMemAlloced gibt dir nur Infos über den Speicher, den der Garbage Collector verwaltet, also Instanzen von Klassen, Arrays, Strings ... (steht btw auch in der BlitzMax Hilfe). Normalerweise ist das mehr, als was man gerade tatsächlich verwendet, da sich der GC den Speicher behält auch wenn Objekte gelöscht werden, damit er beim nächsten Allozieren keinen system call machen muss.
Das heißt, das Memory Leak passiert bei Speicher der nicht vom GC gemanaget wird. Der z.B. über MemAlloc (brl.blitz) oder malloc_ (pub.stdc) angefordert wird und vermutlich auch bei Banks (die geben zwar ihren Speicher im Finalizer frei, aber wer weiß wann der aufgerufen wird :/ ) Es ist ja immer sinnvoll zu versuchen, den Fehler mit wenig Beispielcode zu reproduzieren. Wenn dir das gelingt, teile ihn bitte mit uns. Es kann ja auch an einem Modul liegen, das du importierst. |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group