MaxGUI - RAM Problem

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: MaxGUI - RAM Problem

BeitragSa, Jun 09, 2012 0:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich erstelle mittels MaxGUI eine etwas größere Oberfläche, die ein wenig mehr Arbeitspeicher in Anspruch nimmt. Auf Computer mit 2 GB und mehr, gibt es so gut wie keine Probleme dabei. Bei Computer zwischen 1 GB und 2 GB kommt es des öfteren zu einem Fehlschlag. Bei Computer mit weniger als 1 GB funktioniert es quasi garnicht.
Das äußert sich darin, dass zwar das Hauptfenster erstellt wird. Aber alle Child die erstellt werden sollte, schlagen fehl und es wird eine leeres Hauptfenster angezeigt. Es gibt auch keine Fehlermeldungen dazu. Gibt es einen Möglichkeit dieses Problem zu umgehen? Denn irgendwie muss das Programm auch eben solchen Rechnern laufen.
Ich denke Code hilft in diesem Fall nicht sehr viel weiter, da dort nur die GUI erstellt und angezeigt wird.

Kennt jemand das Problem und kennt zufällig auch noch eine Lösung dazu?

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
  • Zuletzt bearbeitet von Der Eisvogel am Sa, Jun 09, 2012 0:57, insgesamt einmal bearbeitet
 

jsp

BeitragSa, Jun 09, 2012 0:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
ich erstelle mittels MaxGUI eine etwas größere Oberfläche, die ein wenig mehr Arbeitspeicher in Anspruch nimmt.

Wie sieht die denn so aus, die etwas größere Oberfläche?
Oder was soll man sich darunter vorstellen?
Logic Gui Professional a Gui Designer for MaxGui

Der Eisvogel

BeitragSa, Jun 09, 2012 0:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ist ein Fenster mit einer Größe von ca. 500*350 Pixel. Darin befindet sich ein Tabber-Element mit mehr als 15 Tabs, verteilt auf 3 Zeilen. Jedem Tab wurde ein Panel zugeordnet. Jedes Panel ist mit vielen Group-Panels un Checkboxen versehen. Teilweise enthalten sie auch nochmal Tabber. Manche Panels haben ein Pixmap als Hintergrund. Dazu gibt es noch ein paar kleine Fenster, die aber einfach gestrickt sind und meist nur ein oder zwei Panels enthalten.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Midimaster

BeitragSa, Jun 09, 2012 8:00
Antworten mit Zitat
Benutzer-Profile anzeigen
ich würde mal versuchen, den reinen GUI-Teil des Programm in ein eigenständiges Programm zu isolieren, um beweisen zu können, dass der Speicherverbrauch wirklich daran liegt. Ich kann mir nicht vorstellen, dass dieses Fenster so viel Speicher verbrauchen kann.
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Der Eisvogel

BeitragSa, Jun 09, 2012 11:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn ich den reinen GUI-Teil ausführe, dann braucht dieser rund 12 MB RAM, eher mehr. Das klingt zwar nicht viel, aber meine bisherigen Programm haben durch ihre GUI nicht mal ansatzweise an den 3 MB gekratzt.
Auf dem auszuführende Host-System mit weniger als 1 GB RAM ist meist nurnoch Platz in der Auslagerungsdatei. Auch die isolierte GUI kann sich auf jenen Systemen nicht aufbauen.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

jsp

BeitragSa, Jun 09, 2012 11:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie Midimaster schon sagt, schwer vorstellbar das es am GUI liegt.
Sollte es aber tatsächlich so sein nachdem nur das GUI allein im Speicher ist, kannst du versuchen nur die Teile zu erzeugen die du gerade brauchst und andere Teile mit Freegadget freigeben.
Ich würde aber vorher mal die Hintergründe weglassen, da gibt es ein Limit von 32MB (IIRC), denke aber nicht das du da so Riesendinger reinsetzt, oder? 500x350 Pixel ist doch nichts...
Das Symptom passt irgendwie schon, dass nicht genug GUI Speicher dafür zur Verfügung steht. Tritt es zufällig erst nach mehrmaligen Aufrufen auf und wird dann immer schlimmer? Schon mal direkt nach einem Reboot probiert?
Logic Gui Professional a Gui Designer for MaxGui

Der Eisvogel

BeitragSa, Jun 09, 2012 12:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brauch eigentlich immer alles, da jederzeit vom Nutzer darauf zugegriffen werden kann, und das erstellen zu lange dauert. Das hatte ich schonmal testweise probiert, aber die Nutzererfahrung hat darunter gelieden. Außerdem ist der gesamte Programmcode nicht darauf ausgelegt.
Direkt nach dem Reboot klappt es, da genug physikalischer Speicher zur Verfügung steht. Das Problem tritt nur auf, wenn kein physikalischer Speicher mehr zur Verfügung steht, sondern nur noch virtueller Speicher auf des Festplatte. Das hätte ich eventuell gleich im ersten Post erwähnen sollen.

Das Problem tritt direkt nach dem Start auf, alles was ich zusehen bekomme ist ein leeres Fenster. Das ist schlimm genug, schlimmer kann es nicht mehr werden denke ich.

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Midimaster

BeitragSo, Jun 10, 2012 9:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde als nächstes den Code der isolierten GUI hier reinstellen. Ebenso würde ich mal versuchen die Hintergründe testhalber nicht mitzuladen und beobachten, was passiert.

An einer nicht existierenden MANIFEST kann sowas nicht liegen, oder?

Passen denn die Größen der Hintergrundbilder pixelgenau auf die jeweiligen Gadgets?
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe

Der Eisvogel

BeitragSo, Jun 10, 2012 11:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Manifest wird automatisch eingebunden, auch wenn man sie weg lässt tritt das Problem auf.
Die Hintergründe passen nicht genau drauf, sonder sind kleiner und werde teilweise gekachelt, oder mittig angezeigt. Aber auch ohne diese tritt das Problem auf.

Den Code einzustellen ist etwas tricky. Er erstreckt sich über mehr als 30 Dateien, die mittels Include eingebunden werden. Jede Datei verwaltet einen bestimmten Bereich der GUI in einem Type ausgelagert. Ich glaube kaum, dass da jemand durch blicken würde.

Ich probiere mal eine kleinere GUI mit übersichtlichem Code auf einem solchen Computer auszuführen um zu gucken ob das Problem dann auch auftritt, da ich tatsächlich vermute, dass es nur mit dem virtuellen Speicherzusammenhängt.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.
 

PhillipK

BeitragSo, Jun 10, 2012 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde mal versuchen, einen kleinen testcode zu schreiben.

Dieser soll tun:
über forschleifen ähnlich viele elemente generieren, wie in deinem jetzigen programm vorhanden sind.
Ziel ist es, möglichst viele elemente einzubinden und vllt einen kleinen Typegesteuerten code, der bei Panelaktivierung inhalte ein / ausblendet.

Sollte das immernoch zu problemen führen, geht es wohl nicht anders, als elemente wiederzuverwerten.

Vielleicht solltest du auch nicht grade FreeGadget nutzen, sondern lieber das Objekt direkt verändern (parent ändern, größen, texte, childs) - so sparst du dir das neuerzeugen (gott weiß, was intern passiert Very Happy) und nutzt sie einfach neu.
Aber natürlich: Erst im testcode!

(heißt, für jedes SOLL objekt einen typeeintrag oder ähnliches anlegen, jedes ungenutzte objekt in eine liste legen - mit HideGadget() versteht sich - und jedesmal wenn etwas neues "angezeigt" werden soll, ein passendes element aus der liste raussuchen und wiederverwerten.)

Aber ich wünsche dir glück, das jemand eine bessere idee hat. Meine würde, bei +30 dateien, sicher über eine woche arbeit bedeuten - ohne die garantie, das es klappt Sad

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group