006
20.12.2007, 18:22 Uhr
ao
(Operator)
|
Zitat von DeltaLogic: |
wir verwenden halt viele Benutzerobjekte, Felder usw.
|
... und das dürfte der Knackpunkt sein. Diese ganzen Controls und User-Controls holen sich den Speicher, den sie brauchen, um sich selbst zu malen, und wenn das Fenster, auf dem sie liegen, minimiert wird, geben sie den Speicher wieder frei. Da kann man mal staunen, wieviel Resourcen nur für die Darstellung verbraucht werden.
Eine kleine Checkbox braucht nicht viel Speicher, aber größere Dokumenten-Ansichten, wenn ihr die habt, schon eher.
Wenn ihr Speicher sparen müsst, dann steigt doch mal tiefer in die Windows-Grafik ein und findet heraus, was man mit einem Control tun muss, damit es seinen Speicher freigibt. Ich bin da auch nicht so tief drin, aber vielleicht reicht es, das "Visible"-Property auf false zu stellen. Oder Hide() oder Show(false)) aufzurufen, das bewirkt dasselbe.
Rechnet aber damit, dass solche Aktionen euer Programm stark ausbremsen. Es rödelt dann halt wie wild im Speicher herum, wenn es die Ansicht umbaut. Ist halt so wie immer - wer am Speicher sparen will, zahlt mit Performance.
Bei einer Desktop-Anwendung würde ich klar sagen, das lohnt sich nicht, man kann besser einen Riegel RAM dazustecken, das ist billiger als lange am Programm rumoptimieren. Bei einer Terminal-Anwendung ist das ne spannende Frage, denn wenn man sowieso jedes Pixel übers Netz schicken muss, kann man vielleicht auch neu malen.
Vielleicht läufts drauf hinaus, dass eure Anwendung zwei Betriebsmodi bekommt: Einen Local-Modus, in dem alle Controls auch dann "visible" bleiben, wenn sie im Hintergrund stehen, und einen Terminal-Modus, in dem nur das "visible" ist, was vorn steht. |