Hallo,
ich habe ja eben eine Frage speziell zum delete dynamisch erzeugter QTcpSockets erstellt. Das ist nun gelöst. Aber ich habe eine andere Frage allgemein zur dynamischen Speicherverwaltung in QT.
Ich habe hier ein Server-Programm und ein Client-Programm. Letzteres soll einfach nur einen Streßtest erzeugen und den Server ständig mit Anfragen zuschütten. Ich behaupte jetzt mal einfach frech das ich von der Programmierung her sauber aufräume. Das Ganze läuft auf Windows. Ich sehe im TaskManager das bei beiden Programmen (Server wenig, Client mehr) der Speicherverbrauch etwas zunimmt. Plötzlich geht der CPU-Verbrauch beider Programme auf Null und der Speicher reduziert sich erheblich. Dann geht es von vorne los. Liegt das in der internene Verwaltung von QT? Ich baue fast alles per deleteLater() ab.
Danke ud Grüße,
Willi
[gelöst] Nochmal Speicherverwaltung
[gelöst] Nochmal Speicherverwaltung
Zuletzt geändert von Willi2793 am 8. April 2011 12:29, insgesamt 1-mal geändert.
Re: Nochmal Speicherverwaltung
Ja, ich hatte auch mal so einen Fall. Ich kenne die genaue Regel nicht, wann genau die "delete"-Aufträge abgearbeitet werden, aber bei solchen Stresstests sammeln sie sich zu 1000en an und werden irgendwann (nach einer bestimmten Zeit oder bei einer bestimmten Anzahl oder wenn nichts zu tun ist oder einen Mix aus allem) gelöscht.Willi2793 hat geschrieben:... Liegt das in der internene Verwaltung von QT? Ich baue fast alles per deleteLater() ab.
Auch ich versuche jeweils, so viel wie möglich mit "deleteLater()" aufzuräumen. Ich glaube ich habe das bei meiner Applikation auch so gelassen, weil
- in der Praxis alles ok ist (genügend Zeit für die delete-Aufträge im Eventloop)
- die Software ja auch im Stresstest stabil bleibt
- bei einem solchen Stressfall in der Praxis die Erreichbarkeit des Servers sowieso eingeschränkt wäre..
hth!