Liststore - Speicherauslastung wächst und wächst und ...

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Gernot Riebold

Hallo,

ich lese Daten aus einer Firebird-DB in einen Liststore ein. Nach einem Clear() verringert sich die Speicherauslastung (im Task-Manager zu sehen) nicht. D.h. bei 10maligem Laden in einen Liststore wächst die Speicherauslatung linear

Ich habe schon alles probiert - vom Erzeugen eine neuen Treeviews incl. neuen Liststore. Ist das Python oder GTK ?

Danke für Eure Antworten
Grüsse Gernot
ProgChild
User
Beiträge: 210
Registriert: Samstag 9. April 2005, 10:58
Kontaktdaten:

Gernot Riebold hat geschrieben:Ist das Python oder GTK ?
Ich hatte mal ein ähnliches Problem. Vielleicht hilft dir das. Bei mir war es das Betriebssystem.

Ich hatte eine relativ große Liste angelegt. Die verschlang ca. 20MB Arbeitsspeicher, der nicht wieder vom Prozess abgezogen wurde, sondern drinn blieb. Irgendwann, hab ich die Liste in eine Schleife gepackt und gesehen, dass obwohl ich die Gleiche Aufgabe 100x ausgeführt hatte, die Speicherauslastung immernoch bei 20MB lag.

Das Problem war, dass das Betriebssystem unter bestimmten Umständen Arbeitsspeicher noch für einen Prozess bereit stellt, obwohl der Prozes ihn schon längst wieder freigegeben hat.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hast du es mal mit del() probiert??? Vielleicht brings was?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Hm. Also ich hab das jetzt mal auf meinem Linux Rechner getestet, da kann ich das Problem leider nicht reproduzieren. Solltest du die Windows Version haben, könnte es sein, dass die Entwickler dort vergessen haben Speicher frei zu machen ;-(
TUFKAB – the user formerly known as blackbird
Gernot Riebold

Hallo,

vielen Dank für die Antworten. Ich arbeite unter WinXP.

Iteriere ich über die Result-Rows der DB-Abfrage und schreibe diese in eine Liste - wird der Speicher wieder freigegeben. Sobald ich diese aber in einen Liststore schreibe, wächst der Speicherbedarf bei jedem Schreiben in den Liststore an, obwohl ich als Test versuchte

1. Den Liststore zu clearen (clear())
2. Den Treeview zu löschen und neu aufzubauen
3. Den Liststore zu löschen und neu aufzubauen

Nix geht.

Grüsse
Gernot
Antworten