Speicherleck bei Threaded GC
Übersicht

![]() |
kogBetreff: Speicherleck bei Threaded GC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guten Tag Zusammen
Aktuell Programmiere ich mal wieder mit Blitzmax Nun fand ich bei meinem aktuellen Projekt heraus, das sich der Speicherbedarf meines Programms immer erhöht, immer mal wieder um ca. 100 Bytes., jedoch versuchte ich alle Variabeln wieder frei zu geben usw., lasse ich das Programm ohne Threaded Mode laufen, gibt es kein Leck. Eine Ahnung woran es liegen könnte? Freundliche Grüsse k.o.g. |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja. Threaded ist Beta. Ein Auszug aus BRL.LinkedList:
BlitzMax: [AUSKLAPPEN] Type TList Delete räumt ordentlich auf und sorgt so dafür, dass GC den Speicher freigeben kann. Das ganze scheint so aber im Threaded build nicht zu klappen, deswegen hat BRL das Memory-Leak wahrscheinlich in Kauf genommen. ZEVS |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm eigentlich kommt aktuell so beim Testcode Linkedlist nicht vor.
Es tut aktuell nur etwas per UDP Versenden: BlitzMax: [AUSKLAPPEN] Method Send:Int(ip:Int=-1,port:Short=-1,imp:Byte=False) BlitzMax: [AUSKLAPPEN] lib.header(1) Noch eine andere vermutung oder meinst du BRL hat dies in allen seinen Modulen so gemacht? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: meinst du BRL hat dies in allen seinen Modulen so gemacht?
Nur noch in BRL.map. Aber bei Threaded wird ein anderer GC importiert: BRL.blitz: BlitzMax: [AUSKLAPPEN] ?Threaded Eine andere Idee habe ich nicht. ZEVS |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmm Komisch,
einen Tag Später, System Neustart und neu Kompilierung funktioniert alles so wie es soll... Und es laufen auch nur 2 Threads... gestern liefen mehr obwohl das eigentlich keinen Sinn machte :/? Einen schönen Tag noch |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Lief die EXE vieleicht noch das der Compiler die nicht überschreiben konnte?
Hätte man aber im Output Fenster sehen können. |
||
![]() |
kog |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein sie wurde jedesmal neu erstellt ohne Fehlermeldung.
aufjedenfall läuft momentan mein Netzwerk test, hier ein beispiel Code falls sich jemand genaueres dafür interessiert: BlitzMax: [AUSKLAPPEN]
|
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um noch eine Sache klarzustellen:
Der im Threaded-Modus "ausgeklammerte" Code bei TMap und TList ist nicht nötig, weil BlitzMax - wie ZEVS erwähnt hat - nicht mehr den selben Garbage Collector nutzt. Der Not Threaded-Modus zählt nur Referenzen und hat daher Probleme mit Zyklen. (Das wird mit dem zu sehenden Code verhindert.) Im Threaded Modus hat man damit keine Probleme, weil er dann nach einem Prinzip arbeitet, das die Erreichbarkeit eines Objektes beachtet. |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich behaupte mal das diese Zeile p.Clear() weg kann weil Du
eine Zeile drunter ein Objekt zuweist p=lib.NextPacket() Diese While P sieht komisch aus und du nutzt NextPacket() zweimal. Außer mit Print sehe ich nicht das Du die Pakete verarbeitest. Code: [AUSKLAPPEN] Local p:TPacket Repeat p=lib.NextPacket() If p=Null Then Exit Print(p.rbyte()) ... Forever |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group