[gelöst] Nochmal Speicherverwaltung

Alles rund um die Programmierung mit Qt
Antworten
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

[gelöst] Nochmal Speicherverwaltung

Beitrag von Willi2793 »

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
Zuletzt geändert von Willi2793 am 8. April 2011 12:29, insgesamt 1-mal geändert.
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Re: Nochmal Speicherverwaltung

Beitrag von solarix »

Willi2793 hat geschrieben:... Liegt das in der internene Verwaltung von QT? Ich baue fast alles per deleteLater() ab.
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.

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!
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Nur weil du eine delete aufrufst, heist es noch lange nicht, daß auch der Speicher gleich an das Betriebsystem zurückgegeben wird, da es zwischen deinem delete und dem Kernel noch eine Bibliothek gibt (nicht Qt) die das ganze Blockweise handhaben kann.
Willi2793
Beiträge: 147
Registriert: 29. September 2008 10:59
Kontaktdaten:

Beitrag von Willi2793 »

Vielen Dank ihr Beiden. Ich hatte mir sowas schon gedacht wollte aber nur nochmal bestätigt werden ;)
Antworten